PBR tuning of the reflectivity ability

Hello, Ondra and Corona Renderer team!
Is it possible to make the tuning of the reflectivity ability with the reflect level but not with the reflect IOR - like it work in real world?
I mean that the level will rule the value of frontal reflection and then let the fresnel do his work.
And take off the IOR from the reflection settings
I resume: the refl.level - frontal reflection and the fresnel - watchs that with ~0 deg. would ~100% reflection

I’m not sure what you mean but you can turn off reflection IOR by setting it to 999. Or at least that’s what Keymaster wrote some time ago. :smiley:

When you are using some fresnel IOR value, then the “reflection level” parameters determines maximum allowed reflectivity.

No, you got it all completely wrong.

You shouldn’t change the maximum allowed reflectivity, it’s not correct. Nor you shouldn’t change the facing without changing the IOR.

Everything headoff wanted it the inverse of IOR.

Let me explain:

  1. Each IOR has it’s own starting facing reflectivity value.
  2. For example IOR 1.33 has 0.02 facing starting value, IOR 1.51 has 0.041, and IOR 4.44 starts with 0.4. And all they go to 1.0 on the grazing edge.

What headoff wants is an inverse control - so you can set up the IOR by turning the base facing reflectivity. So, say, if you set up 0.02 reflectivity = IOR sets as 1.33. and so on. And these should be LINKED. And the Reflection Level slider, which affects maximum grazing reflection should be removed.

That’s what shortly speaking headoff meant.

Very interesting discussion going on here. I would love to have more educated base in my material creation and less guesstimation. So, carry on, but without personal bashing, please.

Is there a formula to calculate that or is it just yours arbitrary numbers?

Vicnaum deserves a medal for clarifying stuff ! :- )

Yes, some PBR models (like the one in Unreal engine 4 derived from Disney’s paper) use inverted specular reflectivity values because they wanted UNIFIED model for specular reflectivity across both metals and not metals.

Why is this logical: (I am not advocating we need this actually at all, but just writting argument against “all the mainstream renderers do something, so it’s obviously right” fallacy type of argument above).

1)Metals don’t translate well using only the simplified fresnel formula (only n-number), so they end up looking “incorrect” (of course, depends to what point at which case), and to avoid using the complex model (n,K), which
for example Maxwell has, they ditched it altogether and just let you specify base reflectivity and metal-ness (0 or 1, whether the material is metal, or not metal). The rest is adjusted internally then.
This also lets you lineary scale the specular value from non-metal (which will be at 0.02-0.04) to something like 0.6 for chrome or 0.9 for aluminium. One value for all material types, instead of two values.

  1. If we discount refractiveindex.com , it’s easier to get measured values in inverted fashion. It’s still potato values, but easier to use, because again, we are only using ONE value (fresnel is computed internally aftewards).
    From 0.02-0.04 for non-metal likes plastics, paints,etc.. to 0.2-0.95 etc.. for metals. This is both easier to custom modelling the curve from ref index web, as well as inputting 2 values for full fresnel n/K (too scientific).

Both points above become strong positive when it comes to authoring textures. The whole workflow was intended so you can paint your textures more universally. You only paint single specular map which will only apply with metals,
and will contain both color and intensity (in the scale above,0.2+) but will be ignored for non-metals, which will return to default 0.04 (1.52 IOR as Vicnaum wrote). Both will keep 1.0 at grazing angle and their variance will be driven
by single another map, roughness. It’s very simple model actually. I suggest everyone to play with Unreal to get the feel of how it works. It’s not more abstract, it’s more user-friendly and logical.

It doesn’t make creating material “like hell”, nor does it look like anything Modo does. It’s the same stuff. It’s actually easier, and it prevents people from creating “incorrect” materials (metal with too high albedo because you use diffuse, but incorrectly low specularity because you used random IOR number like 8-12 instead of unique curve which varries a lot for metals, and can only be simulated by the respective curve, or full fresnel formula, n/K (like Maxwell).

All the other stuff applies same way, there is no “capping” of specular reflectivity, it always go to 100perc. but the curve can be so steep that coupled with rough surface, the material simply appear mat (and shader lambertian)

Last but not least to counter the “People have no-problem creating photo-realistic materials”:

Well, I would say they do.. 99perc. of people including me have that problem. But the problem is not so much that’s not possible now. It is just fine. But that it could be refined to allow “easier” creating of them, by a model that very much
navigates you to correct result and avoids the possibility of having physically incorrect materials.
Which the current model promotes, the fact the you can cap reflectivity for non-metals means that vast majority of people have materials that are less reflective then they should. Instead, they often compensate by too high diffuse values or generally upping exposure for whole image and then complain on forums of “flat, washed out” look.

Yep guys!
Vicnaum and Juraj_Talcik are right fully in that I want to say

Romullus, you can look here: Reflection Coefficient for Light

Formula in simple form is: R=(n1-n2)^2/(n1+n2)^2, R - reflectance, n1/n2 - IOR of the first and of the second medias. In our case n2 is the air with IOR ~1

So formula is: R=(n1-1)^2/(n1+1)^2

And in backward: n=(SQRT(R)+1)/(1-SQRT(R))

for n=1.33 - R=0.0201 ~2%
for n=1.51 - R=0.0413 ~4%
etc

But it work directly only for the non-diffuse surfaces. For other surfaces need to divide reflectance between the diffuse reflections and the direct reflections

I’m completely lost in this thread…could you guys post up some example photos or renders to help show what you’re talking about? Seems like a very interesting topic!

Hi.
Even if it´s not “user friendly”, you can go the opposite way. If you know R you can deduce a “fake” n that will give you the R you want and use it as the IOR. Should give you similar results. The idea of 2 linked values looks very good to me. I still prefer custom Fresnel curves for the moment.

This is how it realized in MentalRay
One mult. - the Reflectivity. Like in the real physic. No anything superfluous - only that what needed.
But here is one minus - there is not map for reflectivity ((

Reflectivity map in MR is driven by the “color” slot next to reflectivity…


Ok, guys, you are discussing important things here, but is there any universal solution? Different materials have different IOR/reflectivity “profiles” so this could be solved by presets but you would either need lots of them or be able to manually alter them to create new materials. Would it be best to have a switch to use or not use the “physically correct” method? Maybe a whole different material? (this surely wouldn’t be a Coronesque move)

Proper controls (like in Disney model) let you go outside boundaries always. But it’s the fact those controls are more logical with their linked nature by default and more sound terminology.
Of course, there is much more to it and on one end some people think it’s magical solution to something (it’s not, but this is very nature of holy grail searching mentality), but then again your stance is continually biased and you’re always quick to come to over-simplified opinion based on current preference.

But with that said I don’t know what the MentalRay comparison showed…there is nothing different there. These threads get confusing too fast.

I don’t get it. It doesn’t add any bit of funcionality nor eases workflow, just clutters CoronaMtl UI. I like very much Disney’s PBR model, that Juraj Talcik talking about, but your concept isn’t anything about it. Is it really needed?

Well, now we’re going somewhere, cheers :- ).

But I don’t find that solution to be most fortunate, I know this thread requested single value (just inverting control choice), but that was largely taken out of context and out of misunderstanding imho.
Mixing something like that, even in crude form shows something that is very confusing and not set right. It just swaps grazing angle for facing angle, which is small subset of the whole philosophy only and not even the main idea.
The crucial core is in metalness/roughness combination, something that can work even with IOR input, grazing reflectivity intact. The other things are just matter of preference/choice.

I would follow quite strictly the Disney model, because it’s laid out quite excellently and is very cohesive.

Hi.

But if you don´t fully change the material mode in order to be more like the alternative Juraj is talking about, i think adding extra parameters to the actual one can confuse some people.

Lets say you have a material using 1.5 IOR (0.04 - 4%refl) and you want 0.08 - 8%, you can use 1.79 IOR to get it. So actually you can easily control reflectivity this way. Now you can control max refl using the level mult and map and minimum using IOR or custom curve.

I reproduce this experiment in 3DStudio MAX: http://therenderblog.com/custom-fresnel-curves-in-maya/ Not the part of copy the curve, because i just use the refractiveindex.info data as a reference or starting point.

IOR 1.5

IOR 1.79

I don´t if this is what you mean or i´m missing something.


Of course we can and we do it so now! But why will not to do it more correctly? People look for IOR of reflection in web and they cannot find - because it is not anywhere and never been. But there is very much information about reflectivity of materials

The Disney model of BRDF is very interesting. I not read yet in details about it.
Here is the explaining with the samples: http://www.disneyanimation.com/technology/brdf.html

Yeah, one can uses curves, although it does sort of make sense only to do so if you want very precise metals that exhibit curve that differ strongly from one you can get with simple IOR.
Some have retro-grazing reflections,etc.. but, in everyday job, does not make big difference.

The issue with this is that it’s overall measured reflectivity for given material, but it should be affected by ‘roughness’ in slightly different way than glossiness does, it should both spread but also loose its influence on the surface, moving towards lambertian shader on fully rough end of spectrum (100perc. rough= 0. glossy)
I am not actually sure what really happens in that relationship or how to describe it. It just behaves better, more natural.

In roughness model, you have reflectivity always, for every material in scene and in correct amount, simply by eye-balling its rough/glossy properties, something very easy for every artist to do. That’s the key point I think, at least from my limited understanding.
I think my stance is often misrepresented here is pursue of utmost photorealness or arbitrary physical corectness for sake of it (and some really go after that). Not really, it’s not what I strife for. I just wish to achieve photorealistic results in easiest, and most artist-friendly manner possible. I don’t like the “just eye-ball everything in uncontrolled environment”.

Nice!!. Can´t wait for it :open_mouth:

I finally agree with everything you said ;- ) All points.

Probably no issue for anyone. But lot to look for !

Would love to see this too actually. Unreal engine 4 has a simplified version of it regarding attributes (but quite complex regarding input, 1/2/3/4 vectors in every parameter which is..interesting)

If it’s actuall plan for Corona’s future developement and not just a dream of just another user, then i couldn’t be hapier with it.

Even if it will happen not too soon in any case I’m happy we all have understood one another

I will be waiting for the best PBR Corons Renderer with eagerly (;
I will try too to find screenshot of how Disney material UI looks like if it was posted in web

here is something interesting: Physically Based Shading, Metallic and Specular workflows | Alexandre Pestana
and continue in: Implementation of the Disney principled BRDF | Alexandre Pestana