Fresnel equations describe the amount of light reflected by a planar surface and are basic components of microfacet models that drive physically based shading today. However, real-time constraints prevent us from using the accurate form of Fresnel equations in game engines and force us to use Schlick’s approximation. In this work, we provide a framework to build accurate Fresnel models that are compatible with real-time constraints. We show that our method permits to use parameterizations for Fresnel that are traditionally restricted to offline rendering engines in real-time game engines (such as Ole Gulbrandsen’s parameterization). We further show that our framework can be used to rectify non-linearities in such parameterizations to produce better artist friendly Fresnel models.
Here is a comparison of how close we can get to Fresnel equations with our decomposition compared to Schlick's approximation:
Our solution is quite easy to integrate in a modern game engine since it only requires to change the split-sum LUT (RG texture) that is tailored to Schlick Fresnel with a new RGBA LUT. Here are the different color channels of this LUT:
We tested the integration of this new Fresnel model in Unity HDRP with minimal changes to the Lit shader.
Thanks to: Thomas Deliot for the Unity prototype. Eric Heitz, Jonathan Dupuy, and Kenneth Vanhoey for feedbacks. Naty Hoffman, Stephen Hill, Emmanuel Turquin, and Sebastien Lagarde for discussions on Fresnel. Studio and shader ball assets available at blendswap.