I am currently working with Earl Hammon Jr's Presentation PBR Diffuse Lighting for GGX+Smith Microsurfaces (now mentioned as [PBR, p.XYZ] and have read through (among others) Brent Burley's Physically-Based Shading at Disney (now mentioned as [DIS, p. XYZ] to get a good diffuse BRDF component. I am stuck at combining the two with the Fresnel Term.
Short introduction for vectors and angles as I use them:
- $\omega_i$ is the light vector
- $\omega_o$ is the view vector
$\omega_n$ is the macro geometry normal
$\theta_i$ is the angle between $\omega_i$ and $\omega_n$
- $\theta_o$ is the angle between $\omega_o$ and $\omega_n$
- $\theta_h$ is the angle between $\omega_n$ and $\omega_h$
- $\alpha_{hi}$ is the angle between $\omega_i$ and $\omega_h$
- $\alpha_{ho}$ is the angle between $\omega_o$ and $\omega_h$ (this distinction is for clarification)
- $\alpha_h$ is any of the angles $\alpha_{hi}$, $\alpha_{ho}$, since they are equal
now given that $r_s$ is the BRDF term of the specular component without the fresnel factor and $r_d$ accordingly the term of the diffuse component without the fresnel stuff, the fresnel factor is written as $F(angle)$. [PBR, p.105] mentions that the diffuse light is transmitted two times, once in and once out. Thus, the Fresnel component has to be multiplied two times. [PBR, p. 106] goes on to say Fresnel's laws are symmetrix, meaning entering and leaving is direction independent (i.e. it does not matter that once we go into the material from air and once we leave into air). Now I would assume (for $F_1$ is Fresnel for entering and $F_2$ is for Fresnel leaving the material) to use
$(1-F_1(\alpha_{hi}))*(1-F_2(\alpha_{ho}))$
$F_1$ and $F_2$ are the same function, and $\alpha_{hi}$ and $\alpha_{ho}$ are the same angle, therefore
$(1-F(\alpha_h))^2$
This would lead to a brdf $f$:
$f = F(\alpha_h) * r_s + (1-F(\alpha_h))^2 * r_d$
But both [PBR, p.113] and [DIS, p.14] use
$f = F(\alpha_h) * r_s + (1-F(\theta_i))*(1-F(\theta_o)) * r_d$
as does the original paper to use this kind of calculation by Shirely et al. 1997. I just don't get this, why do they change from the microfacet angles to the macro angles? The microfacet angles lead to energy conversation
$F \in [0, 1]$ $\Rightarrow(1-F) \in [0, 1] $ $\Rightarrow(1-F)^2 \in [0, 1]$ and $(1-F(\alpha_h)) >= (1-F(\alpha_h))^2)$
it should be reciprocal
$f(\theta_i, \theta_o) = F(\alpha_{hi}) * r_s + (1-F(\alpha_{hi}))*(1-F(\alpha_{ho}) * r_d = F(\alpha_h) * r_s + (1-F(\alpha_h))^2 * r_d = F(\alpha_{ho}) * r_s + (1-F(\alpha_{ho}))*(1-F(\alpha_{hi})) * r_d = f(\theta_o, \theta_i)$
and thus fulfill BRDF requirements. The microfacet angle is used for the specular term, therefore it is the more sensible thing to interpolate between specular and diffuse component (ignoring the fact of two transmissions for this argument). Instead, [PBR, p.113] and [DIS, p. 14] put the $\theta_h$ into a roughness calculation and leave that rather unexplained.
Additionally to my confusion about this, in the explanation slides [PBR, p.187] uses the dot product $\omega_h * \omega_o$ (and therefore the $\alpha_{ho}$ angle) and later on [PBR, p. 191] also the dot product $\omega_h * \omega_i$ ($\Rightarrow\alpha_{hi}$).