Home Technical Talk

Eyeballing PBR textures?

polycounter lvl 10
Offline / Send Message
Joltya polycounter lvl 10
SO I've modeled and textured a couple of things using a Marmoset 2.0, and I was able to get my assets looking pretty okay. Although I'm not too skilled in texturing, I was pretty confident that I was doing things alright, until I heard that PBR requires precise values for each material. I tried to texture something in Marmoset using this chart to get my base materials, and it ended up looking kind of off to me. When I fiddled around with it myself, however, I was able to get it to look better. I feel very weird about this, and I'm not sure if this is a correct way to do things. If anyone who knows more about texturing/PBR theory could provide some insight, I'd greatly appreciate it!

Replies

  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
  • SuperFranky
    Options
    Offline / Send Message
    SuperFranky polycounter lvl 10
    It's art, not rocket math, eyeballing is perfectly ok if it looks good in the end :)
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    There's definitely a lot of room to play with those values. Albedo has a lot of wiggle room, depending on the surface you are copying, but it's also relative. If you are using lower or higher values for most of your materials' Albedo, you might be cornering yourself for when you need to make something with an extra bright or extra dark albedo.

    Roughness/gloss should have a lot of variation, it helps things look clean or dirty, or add variation between materials that are similar. Reflectivity shouldn't be played around with as much, things are normally metal or non metal, and blurring those lines can get weird.

    And Also this depends on if you are making one asset, an entire game, or one level. If it's for one asset, just do whatever looks best. If you are working on a game, you have to remember that there's tons of different lighting variations, and you should look at your asset in those situations before really pushing values much beyond realistic vales. If it's just for one level, then it's less for an issue.
  • Der Hollander
    Options
    Offline / Send Message
    ZacD's post is right on the money. From what I've gathered on what little I've done in PBR, there's a ton of variables to consider that basically throws the "precise values" argument out the window. "Metalness" renderers, for instance, don't use Specular maps, and instead do baloney math by adding a constant multiplier to the albedo because that's how light works.

    Researching, finding, snagging or whatever you do to get those "PBR calibrated" values is important to give yourself a jumping off point. Take the values you've found or made, and do quick test renders in your engine. Spoilers, they'll probably look wrong right out the gate unless you're really familiar with your engine's lighting models. Play around with it, but be sure to keep your swatches, or hex values or whatever your base is so you can always go back if you find you've made a hot mess of things.

    Your Roughness map will probably be where you spend the lion's share of your texturing time, as that's where all the neat little details that really sell models happens, and it's also the map you can play around with the most.
  • AdvisableRobin
    Options
    Offline / Send Message
    AdvisableRobin polycounter lvl 10
    Some pictures would be cool, it might be a case of needing color correction or tone mapping.

    Disclaimer, to the following statement. Being physically accurate and looking good aren't the same thing. Maintaining plausible values is more for the technical reason of looking consistent in different lighting environments without having to tweak materials.

    That being said, even if you are trying to maintain plausible values, the charts are only there as a jumping off point. They're just there to give you an idea of what value range you should shoot for when working with certain real world materials. Ultimately charts are only there to act as guidelines to keep you within the realm of the observed plausible materials.

    3lN3P3S.png
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    Albedo... you can pretty much make that whatever you want.

    blue plastic, black plastic, white plastic... they're all brighter or darker, or more saturated colour values. what's important to understand though, is that the reflectivity of all three of them is the same. they're all the same material, they all reflect the same amount of light.

    this is why the metalness workflow is so popular (memory conservation aside). because almost all non metals have the same, or within such a small range of the same reflective value that just giving them all the same value makes no difference.

    so my advice would be: use measured values (where possible) for reflectance, or 0.04 (linear) when no measured value is available. pour as much detail as you can into the roughness/gloss map, this is what is going to define your material more than anything else. and use whatever you want for your albedo.
  • Joltya
    Options
    Offline / Send Message
    Joltya polycounter lvl 10
    Yah I guess that makes a lot of sense. I think I was just trying to be perfectionist. And I'm sorry I don't have pictures; I didn't save any of renders when I was using the chart values.
  • EarthQuake
    Options
    Offline / Send Message
    Yeah its important to note that the values in the chart are for very specific examples, and that they are just that, example materials, not strict rules that tell you every plastic material needs to have the blue albedo or anything like that.
  • beefaroni
    Options
    Offline / Send Message
    beefaroni sublime tool
    Yep I'll agree with everyone here. I usually try to pull base values from DDO but use them as a guide rather than a hard rule.
  • Dave Jr
    Options
    Offline / Send Message
    Dave Jr polycounter lvl 9
    Not to hijack this thread, as I'm still learning but how do I exactly make a reflectance map that's "linear".

    If I can go into photoshop and make a roughness and albedo whatever I want aslong as I use SRGB and follow the rule of no AO or Highlights...

    I would of thought reflection could be a single value; i.e. just a flat grey and keep adjusting until I feel the visual is "correct" but how is this linear? and what makes it 0.04?

    I understand Fresnel is a 0-1 ratio; and I know how it works in real life;

    I think my struggle really is; what is "linear" and how is it achieved.
  • BigSwopa
    Options
    Offline / Send Message
    Dave Jr wrote: »
    Not to hijack this thread, as I'm still learning but how do I exactly make a reflectance map that's "linear".

    If I can go into photoshop and make a roughness and albedo whatever I want aslong as I use SRGB and follow the rule of no AO or Highlights...

    I would of thought reflection could be a single value; i.e. just a flat grey and keep adjusting until I feel the visual is "correct" but how is this linear? and what makes it 0.04?

    I understand Fresnel is a 0-1 ratio; and I know how it works in real life;

    I think my struggle really is; what is "linear" and how is it achieved.



    There are basically two ways to create maps like glossiness and specular maps etc.

    Option 1) You type in the values numerical in Photoshop and then paint with that value. Most often this will be the case for parametric and percentage values which require a monochrome map.
    Say for instance you want to numerically create a texture that makes a material reflect 50% light. You would simply flood your texture canvas with RGB 128 128 128. Save and import it into your 3D app. This type of texture SHOULD NOT be linearized upon import, because you didn't rely on your nonlinear vision when creating it. The resulting map is already LINEAR, because RGB 128 128 128 maps precisely to the float value 0,5 (50%) of your reflectivity channel.

    Option 2) You create the aforementioned reflectivity map perceptually, i.e. you flood the Photoshop canvas with a random graytone and then tweak that gray (not numerically!) with Curves, Brightness, Levels etc. until TO YOUR EYES the canvas look like 50% (or whatever percentage) of the monitor's maximum luminosity.
    Due to the monitor's 2.2 gamma curve (which darkens the midtones), the perceptually created gray won't likely be RGB 128 128 128 as before, but most likely much closer to the RGB value 187 187 187, (the value which will make your monitor emit 50% of its maximum luminosity). This image is thus roughly in the nonlinear sRGB space and therefore NOT LINEAR.
    When you save it in Photoshop, assign it the sRGB color profile and upon import linearize it in your 3D app. You can now use it for physically correct rendering.


    This is how I always decide whether to linearize an image or not (irrespective of the map type). On some days I would simply desaturate an albedo or diffuse map and edit it perceptually with color correction tool until my eyes like the distribution of the gray tones, but without ever checking pixel values. Result: sRGB file --> has to be linearized since I'm relying on my vision.

    On other days I prefer to create textures wit precise numerical values for better control. In this way I would, for example, paint an areas of a texture with e.g. RGB 77 77 77 (~ float 0.3) in order to modulate one part of a surface with a glossiness of 0.3 (30%).
    Another part of the texture might receive RGB 192 192 192 to yield a 0.75 (75%) reflective surface. Result: Linear bitmap --> no linearisation required!

    I hope that somehow answered your question. Maybe I misunderstood you though.

    Cheers!
  • BigSwopa
    Options
    Offline / Send Message
    Dave Jr wrote: »
    Not to hijack this thread, as I'm still learning but how do I exactly make a reflectance map that's "linear".

    If I can go into photoshop and make a roughness and albedo whatever I want aslong as I use SRGB and follow the rule of no AO or Highlights...

    I would of thought reflection could be a single value; i.e. just a flat grey and keep adjusting until I feel the visual is "correct" but how is this linear? and what makes it 0.04?

    I understand Fresnel is a 0-1 ratio; and I know how it works in real life;

    I think my struggle really is; what is "linear" and how is it achieved.

    There are basically two ways to create maps like glossiness and specular maps etc.

    Option 1) You type in the values numerical in Photoshop and then paint with these values. Most often this will be the case for parametric and percentage values which require a monochrome map.
    Say for instance you want to numerically create a texture that makes a material reflect 50% light. You would simply flood your texture canvas with RGB 128 128 128. Save and import it into your 3D app. This type of texture SHOULD NOT be linearized upon import, because you didn't rely on your nonlinear vision when creating it. The resulting map is already LINEAR, because RGB 128 128 128 maps precisely to the float value 0,5 (50%) of your reflectivity channel.

    Option 2) You create the aforementioned reflectivity map perceptually, i.e. you flood the Photoshop canvas with a random graytone and then tweak that gray (not numerically!) with Curves, Brightness, Levels etc. until TO YOUR EYES the canvas look like 50% (or whatever percentage) of the monitor's maximum luminosity.
    Due to the monitor's 2.2 gamma curve (which darkens the midtones), the perceptually created gray won't likely be RGB 128 128 128 as before, but most likely much closer to the RGB value 187 187 187, (the value which will make your monitor emit 50% of its maximum luminosity). This image is thus roughly in the nonlinear sRGB space and therefore NOT LINEAR.
    When you save it in Photoshop, assign it the sRGB color profile and upon import linearize it in your 3D app. You can now use it for physically correct rendering.


    This is how I always decide whether to linearize an image or not (irrespective of the map type). On some days I would simply desaturate an albedo or diffuse map and edit it perceptually with color correction tool until my eyes like the distribution of the gray tones, but without ever checking pixel values. Result: sRGB file --> has to be linearized since I'm relying on my vision.

    On other days I prefer to create textures wit precise numerical values for better control. In this way I would, for example, paint an areas of a texture with e.g. RGB 77 77 77 (~ float 0.3) in order to modulate one part of a surface with a reflectivity of 0.3 (30%).
    Another part of the texture might receive RGB 192 192 192 to yield a 0.75 (75%) reflective surface. Result: Linear bitmap --> no linearisation required!


    Concerning your other question: 0.04 refers to the Fresnel reflectivity at facing angles (also refered to as F0, since the angle between your eye vector and the surface normal is 0°). The F0 reflectivity of dielectric materials approximately ranges only between 2 and 8% (i.e. 0.02 - 0.08). As this is a very small range when compared to metals, game engines using the metalness workflow usually omit the Specular map (F0) and simply hardcode it to 4% (0.04).

    I hope that somehow answered your question. Maybe I misunderstood you though.

    Cheers!
  • EarthQuake
    Options
    Offline / Send Message
    Dave Jr wrote: »
    Not to hijack this thread, as I'm still learning but how do I exactly make a reflectance map that's "linear".

    If I can go into photoshop and make a roughness and albedo whatever I want aslong as I use SRGB and follow the rule of no AO or Highlights...

    I would of thought reflection could be a single value; i.e. just a flat grey and keep adjusting until I feel the visual is "correct" but how is this linear? and what makes it 0.04?

    I understand Fresnel is a 0-1 ratio; and I know how it works in real life;

    I think my struggle really is; what is "linear" and how is it achieved.

    Linear simply refers to linear color space, as apposed to sRGB or gamma corrected color space. When your texture is gamma corrected, more values are used to represent the darker ranges to give them more precision. This means that with sRGB textures, mid-gray isn't 127.

    Linear space on the other hand maps the color values in a linear fashion, so 127 is actually mid-gray.

    You don't generally need to author your reflectivity maps in linear space, most engines will have an option to use sRGB or linear. The only map that REALLY needs to be linear space is a normal map, as normal maps represent very specific math. Gloss/roughness maps generally make sense in linear space as well, but again sRGB is perfectly fine here as they generally is not a "correct" roughness value, it depends on your gloss/roughness curve, the wear level of your material, etc.
  • Dave Jr
    Options
    Offline / Send Message
    Dave Jr polycounter lvl 9
    Wow thanks for the response guys,

    I have a question I've been mulling over since playing around with some tillable textures and such using PBR...

    How much control do we actually have over the Albedo; I know its recommended to use a similar median luminance value to that of the Quixel scans but obviously all wood isn't the same; how much range is available? Do I even have to refer to this or am I being OTT?

    Also, in regard to using photosource textures like brickwork; what about crevices inbetween each brick; I know to remove lighting data, but if I removed the info splitting the bricks it would just look like 1 big rock...

    cheers!!
Sign In or Register to comment.