Download

Proper Way of Integrating Fresnel

I have become quite used to CRYENGINE, and it shaders, while very limited, are high quality and intuitive. I understand that in Unreal I have the power to do much more, but I am having trouble figuring out how to combine things to achieve the quality of CRYENGINE’s shaders, and remain within the physically correct bounds of PBR.

Firstly, what is the proper and physically correct way of combining fresnel into a material? Currently, I am adding fresnel to the base color texture and using it to lower the roughness (to increase the reflection). I question whether this is correct because the fresnel looks a bit odd at times.

Any insight is appreciated, thank you.

As far as reflections go, by default all of the reflections are screen space reflections which have a natural fresnel effect because it only reflects things that are visible in the rendered image, so if there’s something behind the camera then that won’t show up in those reflections–that creates a similar effect to fresnel where you don’t get much reflection on surfaces facing towards the camera. To get full reflections you need to setup reflection probes in your map. Perhaps the screen space reflections are what’s making the fresnel seem off in your materials.

Thanks for the reply. So, if I understand correctly, using the fresnel node is actually not necessary? Is it safe to say that, for basic PBR compliant materials, all you need is to supply a base color, roughness map, normal map, and whether it is metal or not?

Also, since my test map is just a gray sphere, instead of reflection probes I have an ambient cubemap applied via post processing. Would it be better to ditch the ambient cubemap and build a simple hallway so probes can have something to reflect?

Thanks again.

Yup, as you say, Base Colour, Roughness, Normal and the Metallic will get you PBR. And a reflection probe goes a long way to making it look right especially the more metallic you get :slight_smile:

You don’t really need to unless you need to have control over the reflections more, like if you are using a cubemap reflection and want to have fresnel reflections with it.

Thanks for the replies. It makes much more sense now–I also found this in a blog post by Epic:

Just here to confirm - the default lighting model has built-in Fresnel, in fact you can’t turn it off =) The angle-dependence of Screen space reflections is something else - that’s just a limitation of the technique.

If you want to see where this is done locate brdf.usf and have a look at where PHYSICAL_SPEC_F is used.