missing Physically based workflow for material creation.

missing Physically based workflow for material creation.

rikkarlo
Enthusiast Enthusiast
1,502 Views
21 Replies
Message 1 of 22

missing Physically based workflow for material creation.

rikkarlo
Enthusiast
Enthusiast

Hello,

is there a physically-based shader in Vred that can be used to create any material (woods, metals, glass, rubber...)?
I didn't find any, we can use phong but it does not have metalness, IOR, transmission and it does not entangle the reflectivity and roughness channels, usually reflectivity is inversely proportional to roughness so I find odd that in a software realistic-oriented like vred there is no shader that has this behavior...


Also in the phong material, I don't understand what "diffuse backscattering" does, it says that "0 means smooth (lambertian) and 1 means very rough, but in reality by moving that slider nothing happens. Furthermore, based on my knowledge, Lambertian does not mean "smooth" means that the surface is ideal and reflects the entire incident light uniformly in all directions.

0 Likes
1,503 Views
21 Replies
Replies (21)
Message 2 of 22

Christian_Garimberti
Advisor
Advisor

Hi, for material like Metals, Glass and other specific materials you can choose the specific materials (metal, glass...) while creating a new one.

For other i always use plastic, isn't it enough for you?

 

best

Chris

Christian Garimberti
Technical Manager and Visualization Enthusiast
Qs Informatica S.r.l. | Qs Infor S.r.l. | My Website
Facebook | Instagram | Youtube | LinkedIn

EESignature

0 Likes
Message 3 of 22

sinje_thiedemann
Autodesk
Autodesk

Hi,

yes, there is currently no "multi-purpose" material in VRED that could represent both glass or wood.

 

The closest thing to that is probably the Substance material for which you can control metalness, roughness and other parameters with textures. (https://forums.autodesk.com/t5/vred-forum/what-s-new-vred-2019-3-design-amp-professional/m-p/8537234) But we currently don't support IOR / glass refractions for it.

 

Other than that you need to use specific material types, as Christian said (e.g. for metals: "Brushed Metal" or "Chrome").

 

Since VRED 2022, the BRDF model used for glossy reflections is GGX ( https://forums.autodesk.com/t5/vred-forum/what-s-new-vred-2022-design-amp-professional/td-p/10238701 ) in almost all material types.

 

One exception is Phong which uses the Phong BRDF and should not be used for physically plausible results.

Please use Plastic instead.

 

 

0 Likes
Message 4 of 22

rikkarlo
Enthusiast
Enthusiast

Thanks for both replays, both are useful indeed.
About the plastic material, it's fine for most uses but for example, most textures repositories do not provide glossy texture but only the roughness texture, however, if you input the roughness in the roughness channel it does not behave properly because the amount of reflected light is not automatically set according to the roughness level. I found a workaround by inputting the inverse of the roughness map in the glossy channel but I always need to open the picture in a third party software to invert the channel, and it does not always return a correct result right off the bat, sometimes I need to change the brightness of the glossy map. It's a weird workflow but at least work-ish. Maybe it's me missing something in Vred but just for comparison's sake in all other software if I use the roughness map it regulates the level of glossy automatically.

0 Likes
Message 5 of 22

rikkarlo
Enthusiast
Enthusiast

Another situation where the materials that Vred makes available are not sufficient is for example when I need to have a rough plastic that has mirror reflections of other geometries, the mirror reflections of other geometries is only available on chrome materials (with precomputed + reflections) if I'm not wrong and only when roughness is not used, a lot of times it's usefull to have accurate mirror reflections also for plastics or other materials even with rough materials.

0 Likes
Message 6 of 22

richardlevene
Collaborator
Collaborator

I am not entirely sure what you mean by rough plastic that has mirror reflections of other geometries. If it is rough, why would the reflection be a mirror like reflection? Can you share an example of a material like such? Or you just mean having reflections of other objects? Not necessarily perfect chrome mirror reflections? Just object to object reflections?

 

With the plastic material if you want to see reflections of other objects you will have to set Illumination Mode to Full GI mode or set an override specifically on that plastic material under the raytracing tab Illumination Mode to set it to full gi. This is because the plastic material has a built in "optimization" as typically a plastic is rough reflection and you don't really notice other object reflections.

 

There is a specific Reflective Plastic material that has a clear coat reflection for those sorts of plastics.

 

Also i assume you are using raytracing?

 

Best,

 

Richard

 

0 Likes
Message 7 of 22

rikkarlo
Enthusiast
Enthusiast

You are right I explained it badly, I meant just rough reflection of other geometries, if the roughness is not too high you actually notice them sometimes. 

Yes I'm using raytracing without antialias  with "precomputed + reflections". 

I didn't knoy you could force it by object! Thanks for the tip!

0 Likes
Message 8 of 22

michael_nikelsky
Autodesk
Autodesk

Just a couple of things:

 

First of all: All the precomputed modes are approximations, they are not able to fully support the full brdf model. You need to use Full Global Illumination for a realistic material behavior.


The backscattering option in the phong material refers to an oren-nayar shading. The smoothness does not refer to the microscopic level the lambert shading describes but to a macroscopic level. A good example is always the moon seen from the earth which you can´t properly describe with a lambert.

 

Regarding the roughness: It is correct that the roughness texture does not affect how much light is reflected, it only controls the microscopic roughness of the surface. If the roughness changes the amount of light a pixel reflects in another application then this application is doing it wrong (or to be fair, in many cases the other applications to take care of the energy conservation so the light is just lost. This was the same in VRED before we moved to GGX). The glossy texture on the other hand just scales down the glossy part of the light that is reflected and lets it get absorbed.

However, roughness textures are always tricky because they have to fit the BRDF. Sadly there are two different GGX variants out there, one using a quadratic roughness and one using a linear roughness. We are currently using the second option which might cause mismatches with how some other implementations handle the roughness.

 

Kind regards

Michael



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 9 of 22

rikkarlo
Enthusiast
Enthusiast

Thanks for the fast and clear answer, I'm still not entirely sure if I understood properly the backscattering of diffuse, can you provide an image or a paper for a more in-depth explanation?

About the roughness behavior
"... in many cases the other applications take care of the energy conservation so the light is just lost"
that's exactly what I was referring to, usually, other applications (for example, blender, 3Dmax...) has an approach that they call Physically-based on some specific shaders (not all of them), where increasing the roughness results in the reduction of the reflected light amount (which in case of Vred I guess it's called glossy am I right?), this should be more physically plausible rather than assigning the same amount of reflected light everywhere no matter what's inside the roughness map,
because rougher surfaces absorb light faster than glossy surfaces, because of that most of the textures repositories available online provide just the roughness texture because that's sufficient to control the amount of reflected light in most 3D graphic applications. If you think that a shader similar to the principled shader of Blender would not be suitable in Vred then it would be nice to at least have an "invert" button in the glossy texture slot so that we can use the roughness map and just invert the colors, this solution most of the times gives results very similar to what other pbr workflows give.

0 Likes
Message 10 of 22

michael_nikelsky
Autodesk
Autodesk

As for the Oren-Nayar, the wiki page has a basic explaination: https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model

 

But as Sinje already said: Please don´t use the Phong Material, it is deprecated and it is not physically plausible. The only reason it is still there is for legacy purposes. Use Plastic oder any of the other materials depending on what you want to render (I am a bit fuzzy on the Velvet though, not entirely sure if that is always physically plausible, I would need to check that).

 

As for the roughness: No it is not physically correct for the shader to loose light when the roughness increases, quite the opposite actually. The assumption for all the brdf models is that light is hitting a microfacet of the surface and is reflected. This can result in a reflected direction that goes into the surface. The old shaders just ignore this, return black and the light is lost. However in reality this light hits another microfacet and bounces of again until it eventually leaves the surfaces. This multiscattering is causing the preservance of energy. A full simulation of this is too complex though, that´s why there are other ways to simulate the results of this effect, which is what we are doing in VRED in our GGX model. Blender actually can do this as well if you use the multiscattering GGX model and not the normal GGX model. No idea what 3DS Max material does, if it is the old one I am pretty sure it doesn´t do it correctly but I never used Max, so I can´t really tell.

In any case: I highly doubt any renderer actually changes the glossy color or anything when applying a roughness texture. The mostlikely cause of the difference are the missing multiscattering simulation in some other renderers/materials or the differences in how the roughness values are actually interpreted.



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 11 of 22

rikkarlo
Enthusiast
Enthusiast

Maybe you misunderstood what I meant, with "reflection level", I meant the amount of reflected light, not the number of bounces of each light ray. Sometimes other renderers call it "specularity" "reflectivity" "reflection level" "reflection amount" Vred calls it "glossy" (which to me is very odd wording because the "glossiness" historically is simply an alternative (inverted) of the roughness map.


Based on my understanding of the direction that renderers took in the last few years I think that the roughness/reflectivity connection with an inversely proportional law is pretty shared.

For example: Corona, luxcore , cycles, eevee, art have the following behavior: rougher materials return less light to the eye of the observer, this behavior actually makes a lot of sense to me because with rougher materials you have a spreader light ray which results in more bounces of light at microfacets-level and thus a higher amount of absorbed light and thus only a smaller amount of light reach the eye of the observer. That's why all these render engines connect the "reflectivity amount" (which Vred calls glossy) and the "roughness" of the material with an inversely proportional law. 

The following two picture should clarify what I mean: 

Vred (left) = roughness + inverse of roughness map in glossy channel
Blender (right) = only roughness map
This is almost identical between blender and Vred

glossy rough invert.jpg

 

Vred (left) = only roughness map
Blender (right)= only roughness map

In this case the Vred version is very odd

w.jpg

  


As you can see if I only use the roughness map in vred the amount of reflected light on the rougher parts of the texture is too much and it's unnatural, because of that the rougher parts are barely visible.
On Blender, I only input the roughness map and it automatically lowers the "specularity" level (what Vred calls glossy) according to the amount of roughness even if the specular is set to 1.

I hope my explanation is clearer now. 

TlDr: I'd like to have a button to invert the glossy map, or maybe a button that activate this "inversely proportional law between roughness and glossy amount" and maybe it could be nice to call it specular and not glossy, the "glossy" word is very confusing for whoever comes from any other renderer.

0 Likes
Message 12 of 22

michael_nikelsky
Autodesk
Autodesk

I am not talking about bounces between different objects, I am talking about the bounces within the microscopic surface.

However, the issue I see in you images are the roughness range you have set. We have a roughness range from 0 to 40 (yes, I know that is a strange range, I would love to change that but not everybody shares my opinion on that). 

So instead of setting the min-max roughness range to 0.1 to 1.0, like you have in your VRED material, you need to set it to something more like 0.0001 to 40.0. But as I said earlier, we use a linear mapping of the roughness values, not a quadratic mapping, so the results might still be different. But it has nothing to do with the glossy colors (the term comes from a DGS Material model,  DGS meaning Diffuse-Glossy-Specular, so nothing weird about that naming at all. To be honest, I find it more weird that many application call the glossy reflection term specular, because unless you use a roughness of 0 the reflections are not specular at all).

 



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 13 of 22

rikkarlo
Enthusiast
Enthusiast

Ok I see it now, the roughness amount needs to be set manually to values that are out of the slider range, that probably fixes most of my problems I didn't know the slider could go out-of-range, I see it now, the linear mapping is the issue that probably  makes it looking different compared to what I see on other apps.

About the DGS terminology, from my understanding the D is the diffuse property of the material namely the base colour, the S is the specularity which is the reflection amount, higher specular would mean less visible diffuse colour and more visible reflections (it has nothing to do with the roughness of the reflections it is only describing how much reflection there is). The G is the glossy which describes how spread the specular reflection are, namely how rough the surface is so basically the glossy is the inverse of the roughness, as I'm trying to tell you.

About the etymology, glossy in English means smooth, polished, that's why most of the time in computer graphics it's used as the inverse of roughness (which means rough, matte), and if you use this terminology glossy to indicate the colour of reflections and how much reflected light your object is returning to the observer's eyes you are using it wrong in my opinion, check this
adadad.jpg
reference: http://laurelyn.folio.free.fr/Pixi/Documents%20Reference/DGS_Treddi/Lo%20shader%20DGS%20di%20Mental%...

as you can see even mental ray that is a 20 years old renderer uses the DGS terminology in the way I'm trying to explain to you, and all the other renderers I already quoted in the previous message are using it in this way too. On the contrary in Vred if you input a black map in the glossy channel (which basically means 0% glossy) you end up having no reflections at all, and if you input a white map you increase the reflection amount, so basically you are using the name "glossy" to describe what is historically called "specular amount" or "reflection amount" or "reflectivity". Just call it reflection colour if you don't like to use the "specular" word, but I suggest you to avoid using glossy it's very confusing to whoever comes from other rendering engines.

0 Likes
Message 14 of 22

michael_nikelsky
Autodesk
Autodesk

I think we have to agree to disagree on the DGS naming, especially since the paper you linked explains it exactly how we use it (and here is another web page for the english speaking people: https://3dtotal.com/tutorials/t/photon-illumination-dgs-materials-in-mental-ray-for-maya-philippe-le...).


Diffuse refers to what is applied to diffuse reflections, so light scattered in all directions of the hemisphere.

Glossy refers to what is applied to glossy part of the reflections, so light scattered around the specular reflection direction but not perfectly. These reflections are what happens when the surface is not perfectly smooth and the smoothness of the surface is controlled by the roughness term.

Specular refers to perfectly specular reflections so light reflected of a perfectly smooth surface.

 

Glossy reflections are a commonly used term in literature and describe it excatly how we use it. We just use a consequent naming of our color attribute, so in VRED the diffuse color is the weight of the diffuse term of the brdf, the glossy color is the weight of the glossy term of the brdf and the specular color is the weight of the specular term of the brdf (except when we call it clearcoat color in some cases).

 

The naming in other application just is confusing if you really start to think about it because they use the diffuse color to weight the diffuse term, the specular color to weight the glossy term and the reflection color to weight the specular term although all of the three are reflections, so it should at least be called specular reflection color.

 

Anyways, we won´t change our naming since it would only confuse people not used to the pretty weird naming used on many other applications.

 



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 15 of 22

rikkarlo
Enthusiast
Enthusiast

The definition of glossy that you linked is what I was trying to say from the beginning...
"Glossy: The glossy attribute controls the light that is reflected in one direction, but slightly scattered. It is used to produce blurry reflections off surfaces that have a slight roughness."
but it's not how glossy works in Vred, at least from my experience, and even if it is how it should work in vred then why do you also have roughness? They are basically the same thing... how do they overlap? and why this approach that uses both roughness and glossiness is better than an approach with only one of them?
Maybe it's me missing something, can you post an example where you show how glossy in Vred is affecting the blurriness of the reflections as in the example image posted in my previous post?


By the way, I just want to clarify that I really appreciate the time that you are putting into discussing with me, I'm not insisting because I want to be annoying, I hope I'm not pushing the discussion too much, I'm keeping asking for more info because I just started teaching Vred at University and I'd like to understand every little aspect of this software especially the ones that differentiate it from competitors.

0 Likes
Message 16 of 22

michael_nikelsky
Autodesk
Autodesk

VRED does not have a "glossy" attribute! It has a "glossy color" and a "glossy texture". As I have written they are a weight for the whole glossy brdf term, which needs more than one attribute to control, namely the roughness  which defines the variation in normal directions of the surface, and the reflectivity, which controls the fresnel term used in the glossy brdf and also in the diffuse brdf since we are not using a standard lambert term for diffuse but a so called coupled brdf which combines diffuse and glossy in a physical plausible way.
"Glossy Color" and "Glossy Texture" do not affect the roughness of the surface at all.

Simplified think of it like this:
"Glossy Color" multiplies "Glossy Texture" multiplies "Glossy BRDF".

 

For the terminology see https://www.pbr-book.org/3ed-2018/Reflection_Models

 

 



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 17 of 22

rikkarlo
Enthusiast
Enthusiast

I know there is no "glossy attribute" but you can weigh the glossy term with color and if you use black and white you can weigh it between 0 and 100, which is like having the attribute really... 

And btw with this sentence you just confirmed my assertion: 
"As I have written they are a weight for the whole glossy brdf term, which needs more than one attribute to control, namely the roughness which defines the variation in normal directions of the surface, and the reflectivity, which controls the fresnel term used in the glossy brdf. "Glossy Color" and "Glossy Texture" do not affect the roughness of the surface at all."

That's confirm what I was saying, but maybe we miss something in the arguments of each other... you are keeping repeating what I'm asserting but you are using the same concept to prove the opposite...

I try to explain it again with other words:
-literally, all the other rendering applications on the market that uses the "glossy/glossiness" term, they use it as an attribute to change the roughness of the surface (100% glossy= polished; 0% glossy = rough) and it's the opposite of the roughness attribute, if they have glossy they don't have roughness and vice versa.
-you confirmed that Vred is not using it in this way, that's the reason why I'm trying to assert that glossy term is confusing
-you said that the "glossy brdf term" has two components: the roughness and the reflectivity which is correct, and maybe that is the reason why other applications don't use the term glossiness anymore to describe the roughness term (and they swhiched to "roughness" word instead)
-from my understanding of your explanation in Vred you are using the glossy term (texture colour whatever) to describe the reflectivity of the "brdf glossy term"

So I repeat my previous question, if this last point is true why not just calling what you call "glossy colour" "reflectivity colour" instead? this would solve the ambiguities with other apps and also it would be more coherent with the "reflectivity" attribute you have in the reflective plastic shader which also weights the reflections amount.


0 Likes
Message 18 of 22

michael_nikelsky
Autodesk
Autodesk

I don´t find the term glossy color confusing at all, it is a direct connection to the glossy brdf term and therefore easy to understand. Or is it confusing for you to call the glossy brdf glossy? In my opinion you are mixing up "glossiness" and  "glossy". "Glossiness" can be  used to describe the roughness of a surface (well, in fact it is describing the effect, not the surface property, which is why no one uses it anymore). "Glossy" on the other hand is the generalized class of these surface reflections. 

You have matte surfaces which have a diffuse reflection. And you have glossy surfaces with a varying degree of glossiness resulting in glossy reflections. And as a special case of glossy surfaces you have perfectly smooth surfaces which result in specular reflections.

So "glossy" does not refer to a specific level of "glossiness" and therefore it is correct the way we use it and how it is used in literature.

 

Reflectivity color wouldn´t be correct either because it doesn´t multiply with the reflectivity. The reflectivity is one way to define the index of refraction for which is used in a fresnel calculation. The fresnel term is part of the brdf calculation, so it depends on the angle of incoming and outgoing rays. The glossy color does not, it weights the whole brdf term and does not depend on any angles.

 

 



Michael Nikelsky
Sr. Principal Engineer
0 Likes
Message 19 of 22

rikkarlo
Enthusiast
Enthusiast

Ah! I see now where the misunderstanding was! Until now I thought the  "glossy" term, in general, was synonymous with "glossiness" because sometimes they abbreviate the "glossiness map" to "gloss/glossy map", also a lot of literature is using it in the same way I was using it (one example is the one I linked above). That's why I thought it was used incorrectly in Vred. But based on what you are saying these terms are different things in some others literature contexts, I see.
However even if some schools of thinking uses it in the way you use it, I still think it's confusing in this context because Vred is literally the only application I know that uses it in that way and at the same time it's very similar to "glossiness" which we agreed is basically the inverse of roughness which is a completely different thing, I'm sure I'm not the only one that accidentally mixed them up.

refl.jpg
I  gathered for you only a few shaders from some apps I've used in the past 10 years and as you can see they all call what you call "glossy" in mainly two ways: "reflectivity/refleciton level/amount" or "specular level/amount".

And most of them have a separate IOR value to control the fresnel amount (what you call "reflectivity level")




0 Likes
Message 20 of 22

rikkarlo
Enthusiast
Enthusiast

About the roughness problem we discussed at the beginning, I thought I could solve most of the problems by pushing the roughness slider limits and typing the text manually in the "max roughness" slot as you suggested, but it's not enough to make the changes I want.
I did some tries and I wasn't able to make it work in the way I'd like. See the picture below

test 2.jpg

Most of the time in Vred the differences within the greys in the rough map are so subtle that are barely visible, the differences are only visible between pure black and pure white pixels in the roughness map
Is this problem maybe due to the "linear/exponential" color space that you mentioned?
could you maybe just put an optional value that we can activate to force exponential in some cases instead?

0 Likes