I think it’s time to redo my vray material guide with updated techniques and software.
The old one is still valid and a good reference for ‘how’ the vray shaders work, but there are a few changes in my approach and understanding of the shading process.
I’ll break this guide up into multiple posts so it’s not a huge essay that takes hours to read.
Let’s start with the basics.
PBR or physically based rendering
PBR is currently a hot topic, everyone from Disney to game engines are using it. So what exactly is PBR?
Until recently, the dominant approach in CG was using any means necessary to get the final render. If it looks good, it’s good. So there’s a lot of guesswork for the settings and a lot of artistic decisions that make the final image. This method still works, but overall the industry is slowly shifting towards a different approach – PBR
For PBR the main idea is that you should use realistic data from real world to make your 3d scenes. This means realistic light intensities and realistic diffuse/specular/etc settings for your shaders.
The main advantage, I think, is that it’s harder to make your images look ‘fake’ or ‘CG’. The strict rules imposed by PBR make sure that the renderer is at least working with a realistic inputs and thus is much more likely to create a realistic output. I’m not saying the images will look better (there’s plenty of shitty real photos), but they will look more realistic.
If your goal is to make ‘realistic’ renderings, this is absolutely the way to go. If your values are set right, you can spend more time working on the design, composition, lighting and postwork – things that actually matter.
So let’s get started on the actual practical information:
Diffuse color is the light that is reflected from an object in random directions. Some lightwaves are absorbed and some are reflected, if different wavelengths are absorbed by different amounts, the result is a colored.
Measured data from real world suggests that almost all surfaces reflect 3~90% of the light as Diffuse color.
The main exceptions are metals, which do not scatter the light but instead bounce it right back from the surface. Their Diffuse should be set to pure black. At least for pure, clean, non-oxidized metals…
Once we convert this to RGB range it’s something like [8;8;8] for blackest coal and [230;230;230] for the whitest snow. Most surfaces fall somewhere in between. Even things like paper sheet or white paint are only something like ~70% [179;179;179] and 85% reflective [204;204;204] definitely no higher than that.
If you are using Textures instead of color values, it’s a good idea to make sure that your image falls within this range, but there’s a catch… Gamma
Photo sourced textures come with a burned in srgb gamma correction of 2.2. This means that to get the image to look the same in 3ds max, it must be loaded with the gamma setting of 2.2
The side effect of this is that the values you use in photoshop do not match with the linear values that vray outputs. If your texture is medium gray in photoshop, the actual amount of reflected diffuse light is going to be only 22% instead of 50%.
When we convert the diffuse color range to sRGB, we get values of 50~243
The formula used: sRGB=(linearpercent/100)^(1/2.2)*255.
As an example, to get 4% reflectance from an srgb texture we can use this calculation. (4/100)^(1/2.2)*255=59
You don’t actually have to do the math every time, scroll down for a chart that allows you to easily convert between the two.
All these numbers seem complicated, but the things that you should take away from this are:
- Diffuse is darker than we think it is most of the time.
- The blacks are not as black as we think.
- Make sure that gamma correction doesn’t fu*k up your values
To get a rough idea on where different material diffuse brightness falls in linear and srgb color space – just use this handy little graph I made (click to enlarge)
Simply pick the color in photoshop and see the value in either of the gradients. This is not something that you have to use as a law, but just to give you a basic approximation. Nobody is going to get upset if your sand is 47% bright instead of 45%.
So how do we actually get the texture to fall within the range we need in Photoshop?
You need to use either Levels or Curves. Here’s quick guide:
Open up your texture and decide the range where it’s values should fit in.
For example – here’s a dirty concrete texture that should be about 75% reflective or [190;190;190] in srgb space.
Open it up in photoshop and press Ctrl+L for levels tool.
1. Make sure the black and white points are adjusted to just touch the histogram on left and right and adjust the output values.
2. Since the main color of clean concrete should be about 190, move the whites down to 195 (some dirt streaks seem brighter than actual concrete). Now move the blacks up to about 65, since the dirt and grime is probably about as dark as dark soil, not darker.
That’s it – the image should now be a realistic, usable Diffuse map. The difference is not very strong in this case, but it’s noticeable. Overall texture is a bit darker, whereas before it was too bright.
If you are used to work with full 0~255 range of color in your scenes, the resulting renders might seem flat or low contrast.
While this might be the initial impression, working in a linear space gets you more than enough color range to bring in some contrast in post.
So don’t be afraid of flat images coming out of your renderer, it’s nothing that some simple postwork can’t make as crisp and contrasty as any other workflow.
Here’s a simple example with coal-black material looking quite light in the render but rich and dark after adjusting the curves.
So that’s it for the Part 1 – Diffuse
Stay tuned for the next part where I’ll cover Reflection settings!