Home Technical Talk

Choosing material type for fresnel PBR purposes

polycounter lvl 14
Offline / Send Message
Axcel polycounter lvl 14
For me and those who are familiar with a PBR conception following features are obvious:
-energy-conservation is controlled by engine and artist can't disturb it
-roughness and specular value is defined by artist in a texture or in engine's material editor
roughness now has influence on specular, depending are controlled by engine and how shader is written, so artist have nothing to say

But that's not all from I know. Different materials have different refelctivity spread from a center to an edge. Can I call it Fresnel curve? Do you know what I mean?

http://i.imgur.com/du8VAoF.jpg

So shouldn't we have also option for defining material type as defining only roughness and specular isn't enough?

Replies

  • Joost
    Offline / Send Message
    Joost polycount sponsor
    Marmoset has an Index of refraction option. ue4 also seems to have a way to do it but they don't recommend using it in most cases. https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/index.html

    I'm guessing game engines don't have it because it's quite a minimal difference?
  • Axcel
    Offline / Send Message
    Axcel polycounter lvl 14
    I assume it is a minimal difference. :)

    I have a also question regarding metallic map. This map should be black or white as in real life exists only metals and non-metals. But what about situation when I have painted metal by soooo thin layer of paint that I can see paint and metal as well?

    Answering tomyself and still looking for at least confirmation or second point of view.

    "In theory having a mid-way value in the Metal map will give you something in between the two extremes - e.g. fading the albedo to black, and the specular from black to the albedo colour as you become more "metal". However, as mentioned above this creates physically invalid materials and can cause issues like haloing"
  • Der Hollander
    I'm not a fan of the statement of "There's only metals and non-metals", as I find it to be very misleading for translating actual physical materials into a limited real-time shader. While it's technically true, it doesn't take into account things like coatings, oxidation, glass, iridescence, or using the "Metalness" map to create certain fabrics like velvet or fine silk, both of which are non-metals.

    While "it's more physically accurate" and "that's how the shader was designed", it still really comes down to your artistic judgment. Don't forget to take field trips if you can to actually hold a material you're trying to recreate and see how light actually behaves on it.
    And always ask yourself, "Does this look good? Does the material feel right for what I'm trying to achieve, or is there something off about it?"
  • EarthQuake
    Oxidation is a chemical process where metal ceases to be metal, so yeah, oxidized metal is no longer metal. Complex surfaces like iridescene materials, or certain fabrics can't be really represented with a standard material anyway, no matter how you fudge your metalness map, so you should use a specialized shader there. What gives velvet it's look has more to do with diffusion/sub surface scattering of fibers and anisotropy rather than specular intensity or color.

    Certain oxidizing processes like bluing (what is done to firearms to help prevent rust) essentially convert the outer layer of metal to magnetite, which, as far as I am aware, is not a metal. Anyone have a reflectivity value for magnetite?

    Coatings, it really depends on what sort of coating we're talking about. Metal coated with any non-metalic surface would no longer reflect light in a metallic fashion. Powder coating typically uses plastic/polymer.

    Semi-transparent films and such, thats one example where you may want to use mid range metalness values, though generally films simply cut down on the reflections of certain wave lengths to give colored effects, without having a big impact on the diffusion or reflectivity, in which case you can simply tint the albedo and continue to use a metalness value of 1.

    To the OP, you don't need to worry about Fresnel curves for different material types. The differences are typically extremely minor. In a modern PBR shader, Fresnel can generally be set to 1 for all materials (everything has Fresnel!), many shaders (such as UE4's) do not expose the Fresnel parameter as it's not something that really varies from one surface type to another.
  • Axcel
    Offline / Send Message
    Axcel polycounter lvl 14
    You're totally in it EarthQuake, I can tell. Thank everyone for an answer. :)
Sign In or Register to comment.