Sign in to follow this  

Reflections with Fresnel

Recommended Posts

Quat    568

My old material class used to have a "reflectWeight" to tweak how reflective an object is.  Now I am using the Shlick approximation for Fresnel to see how reflective an object is.  Also, all my materials can be reflective based on the materials "Fresnel 0" value.  The problem I am seeing is that for low reflective objects like a dull wood, at glancing angles (large angles between normal and reflection vector) the amount of reflection ramps up and makes even dull wood get reflective.  This does not seem right.  What's the right way to solve this? 

Share this post

Link to post
Share on other sites
Hodgman    51336
AFAIK You need to perform the fresnel calculations on the microfacet normals, not the macroscopic surface normal.
For rough surfaces, there's a lot of variation from the macro-normal, so it becomes impossible for the (integrated) fresnel function to reach 100%.

You can either try to pre-integrate that function and store it in a lookup table, or just use a cheap approximation such as:
[tt]hack = lerp(1,0.7,roughness)
F = F0 + pow(dot(H,V),5)*(1-F0)*hack[/tt]

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this