BRDF Parameters

Hi there,

After browsing the shaders provided in the source, I cam across the BRDF functions provided. I have been doing some global illumination work for my honours, and thought I’d take the chance to try them out with my ray tracer.

However in the BRDF shader the functions take a variety of parameters (NoV, NoL, NoH, VoH). Thus far, I have been working under the assumption that NoV is dot(normal, viewDir), NoL is dot(normal, lightDir), NoH is dot(normal, halfAngleDir), VoH is dot(viewDir, halfAngleDir).

Using these as values have provided odd results, and therefore I thought it would be a good idea to check and see exactly what these parameters are supposed to be.

Any help on this matter would be appreciated!

I think those parameters are exactly what you think they are.
Not so long ago I was playing with porting Unreal’s PBL into Unity engine, and results were quite OK. You may want to make sure that your dot products are actually wrapped with max(0, value). Also try to keep your specular parameter bigger than 0.1 and smaller than 0.9. In my case I had very weird results when specular was 0.

Also check out this blog post, if you haven’t already:


Yeah. I was struggling to think of something else they could be. I’ll double check my values, and check out that blog post. Thanks!