Hello!
I have recently read an amazing PBR guide, available at the Substance Academy. However, I got a couple of questions, and I was hoping that someone here could answer them.
Link to the PBR Guide:
https://www.allegorithmic.com/pbr-guide1) If I got things right, I did understand that no dark values for the albedo/diffuse maps should go below the 30 - 50 sRGB color range. And that no bright values for dielectric materials should go above 240 sRGB . However, how exactly do I set this up in Substance Painter? Because when I open up the base color window and pick a color, all the color values (both RGB and HSV) are shown in a 0.0 - 1.0 range. So, how can I "convert" those "0.0 - 1.0" values to "0 - 255"?
2) Moreover, when the document states that, regarding dielectric materials, no values should go above 240 sRGB in the base color map, does it mean that none of the color channels (R, G or
should exceed 240? Or is there any kind of "overall" sRGB that I am missing?
3) And for the sake of curiosity only: is it safe to infer that the roughness map in the Metal/Roughness workflow is an inverted version of the glossiness map in the Specular/Glossiness workflow, and vice versa?
I posted these questions on the Allegorithmic forum, but it's been 6 days and I got no answer so far.
By the way, I have already tried their PBR Validate filter, which works great for pointing out issues with color values, but yet, this doesn't show me their values in sRGB.
Replies
1/255 * <whatever number you have>
the cutoffs they list are per channel - not an average. so no individual channel should exceed 140 or drop below 35 (or whatever)
and yes - you should be able to invert roughness to get glossiness - it's a linear image so there won't be any wacky behaviour
I tried the formula you provided to see what I would get for a 30 sRGB value, and the result was approximately 0.117.
However, as you can see below, the color I get is some kind of middle-tone grey. And given that 30 sRGB is the lowest value I should have in my base color, I was expecting something much darker than this.
What you have there is a value of rgb(96,96,96) which is what you get if you apply a correction curve of pow(x,1/2.2) to a value of rgb(30,30,30)
That suggests they're gamma correcting the input, which in turn suggests they're expecting input in linear values - This is widely accepted as a shit idea for colour textures.
Assuming that's the case you need to enter a value equal to pow(0.117,2.2) which is 0.007843 or (2,2,2) in order to get the value you're expecting to come out.
The caveat here is that since I haven't looked at the shader code in painter 2018 it's anyone's guess what they're doing with the numbers once you've fed them in. Applying the linear conversion to your input value could be the wrong thing to do
This is a good description of how all this stuff works - it's all useless unless you know what space the initial value is supposed to be in of course..
https://www.cambridgeincolour.com/tutorials/gamma-correction.htm
But yes, you were right, and that worked just fine! In case someone else needs it, I made a conversion chart for some sRGB key values:
sRGB --- Substance Painter input
I also tried using these values along with the PBR Validate filter, and all the values seemed to be right. However, according to this filter, I could still push the maximum albedo color value a little further. So, instead of 0.875 (240 sRGB) I could input a value of 0.930. And I could also lower the minimum albedo reflectance value for metals a little: instead of 0.464 (180 sRGB), I could go as low as 0.420. Then, I don't know whether or not the values I found are 100% correct, or if there is something odd with the PBR Validate filter. But anyway, all the values were green/yellowish-green in the filter.
By the way, you may note that I've found a different value for 30 sRGB, but it was probably because I entered the whole value (0.1176470588235294), instead of 0.117.
I really appreciate your help. Thank you!