Dielectric BRDFs

Practical and theoretical implementation discussion.
Post Reply
Geometrian
Posts: 29
Joined: Sun Jul 28, 2013 6:53 pm
Contact:

Dielectric BRDFs

Post by Geometrian » Thu Aug 22, 2013 7:52 pm

Hi,

I'm trying to get a general BRDF for dielectrics. As I see it, there are three major ways light scatters: diffuse reflection, specular reflection, and transmission (the first two modeled with Phong). What I'm having trouble figuring out is how to weight the probability of each. I can create a BRDF that is purely specular, purely diffuse or purely transmissive, all conserving energy. The problem is trying to combine them in a reasonable way.

I tried a few things, but nothing really seemed to be realistic. The Fresnel equations describe how much energy is reflected versus transmitted, but what about, for example, opaque plastic? I tried, for example, using Fresnel reflectance to weight the specular and Fresnel transmittance to weight the diffuse, but this doesn't seem to really work for reasonable refractive indices.

Thanks,
-G

andersll
Posts: 22
Joined: Thu Mar 21, 2013 4:34 pm

Re: Dielectric BRDFs

Post by andersll » Thu Aug 22, 2013 9:16 pm

How exactly is it "not working"? The method you describe is what's usually done. How have you implemented it exactly?

dr_eck
Posts: 46
Joined: Mon Dec 05, 2011 7:35 pm

Re: Dielectric BRDFs

Post by dr_eck » Thu Aug 22, 2013 9:41 pm

First of all, are you using the common form of the Fresnel equations that assumes lossless media, or are you using complex numbers for refractive index? If you are only using real numbers, then you cannot model anything that absorbs light, such as opaque plastic.

Second, the appropriate way to combine transmission, reflection and scattering is to first calculate the reflected, transmitted and absorbed components based on the complex Fresnel equations and then use your scattering function to send each ray in the appropriate direction. As long as R + T + A = 1, you will conserve energy. (R, T and A are the fractions of the incident light that are reflected, transmitted and absorbed, respectively.)

Geometrian
Posts: 29
Joined: Sun Jul 28, 2013 6:53 pm
Contact:

Re: Dielectric BRDFs

Post by Geometrian » Thu Aug 22, 2013 10:55 pm

How exactly is it "not working"?
It just doesn't look right. The specular coefficient is very small for almost everything except glancing angles. To be fair, I haven't tried rendering real scenes with it--just the BRDF's specular looks too small.
First of all, are you using the common form of the Fresnel equations that assumes lossless media, or are you using complex numbers for refractive index? If you are only using real numbers, then you cannot model anything that absorbs light, such as opaque plastic.
I'm using the common form for now. Let's assume the plastic reflects all light that falls on it though.
Second, the appropriate way to combine transmission, reflection and scattering is to first calculate the reflected, transmitted and absorbed components based on the complex Fresnel equations and then use your scattering function to send each ray in the appropriate direction. As long as R + T + A = 1, you will conserve energy. (R, T and A are the fractions of the incident light that are reflected, transmitted and absorbed, respectively.)
The method you describe is what's usually done. How have you implemented it exactly?
I should clarify; the problem isn't energy conservation. It's finding a balance between specular and diffuse reflection. I realize that the Phong model isn't exactly physically based, but what's a good balance between them? Isn't it angle-dependent? Also, I'm trying to premultiply any Fresnel coefficients into the scattering function.

graphicsMan
Posts: 167
Joined: Mon Nov 28, 2011 7:28 pm

Re: Dielectric BRDFs

Post by graphicsMan » Fri Aug 23, 2013 3:22 am

Look into the Ashikhmin-Shirley model, the Ward model, or the Cook-Torrence model.

necro
Posts: 6
Joined: Thu Dec 22, 2011 9:44 am

Re: Dielectric BRDFs

Post by necro » Fri Aug 23, 2013 5:05 pm

I should clarify; the problem isn't energy conservation. It's finding a balance between specular and diffuse reflection. I realize that the Phong model isn't exactly physically based, but what's a good balance between them? Isn't it angle-dependent? Also, I'm trying to premultiply any Fresnel coefficients into the scattering function.
The particular problem of (Schlick-)Fresnel-layering a specular on top of diffuse BRDF is nicely executed in Shirley et al "A Practicioner's Assessment...": http://www.cs.utah.edu/~hhh/papers/pg97.pdf. See "a coupled model". In fact it's the only reference that I am aware of that treats the problem nicely, Ashikhmin-Shirley uses something similar (but more energy losing and with no derivation whatsoever), and many others just do plainly wrong 1 - Fresnel(half). Of course, once your Fresnel term gets more complicated or the specular BRDF gets glossy you need to use something more conservative and accept some amount of energy loss.

andersll
Posts: 22
Joined: Thu Mar 21, 2013 4:34 pm

Re: Dielectric BRDFs

Post by andersll » Fri Aug 23, 2013 6:22 pm

Geometrian wrote:
How exactly is it "not working"?
It just doesn't look right. The specular coefficient is very small for almost everything except glancing angles. To be fair, I haven't tried rendering real scenes with it--just the BRDF's specular looks too small.
Ahhh I see. Just use a microfacet BRDF like Walter:
http://www.graphics.cornell.edu/~bjw/microfacetbsdf.pdf
https://github.com/imageworks/OpenShadi ... ofacet.cpp

Then use the angle between the half-vector and the incident light direction to calculate fresnel instead of the angle between the surface normal and the view direction.

Post Reply