Blender Git Commit Log
Git Commits -> Revision 8cb741a
Revision 8cb741a by Lukas Stockner (master) June 21, 2017, 22:09 (GMT) |
Fix T51836: Cycles: Fix incorrect PDF approximations of the MultiGGX closures The PDF of the MultiGGX sampling is approximated by the singlescattering GGX term as well as a scaled diffuse term that makes up for the energy in the multiscattering component that's missed by GGX. However, there were two problems with the glossy terms: The diffuse term missed a normalization factor, and the singlescattering term was not properly scaled down based on the albedo estimate. The glass term was completely wrong and has been rewritten. It uses the fresnel factor to weight reflection vs. refraction and uses the glossy MultiGGX model for reflection. For refraction, the correct singlescattering term is now used, and a new albedo approximation is used that was derived by evaluating GGX albedo for roughnesses from 0 to 1 and IORs from 1 to 3 and fitting numerical approximations to it. The resulting model has a mean relative error of 9e-5, but could probably be simplified without losing noticable accuracy in the final render. The improved PDFs help with glossy highlights (due to better light sampling vs. closure sampling MIS) and fix the situation described in T51836 where mixing MultiGGX with other closures (as it happens in e.g. the Principled BSDF) causes incorrect darkening. |
Commit Details:
Full Hash: 8cb741a598d6898328e0666c2cafddaaf9d830fd
Parent Commit: 968093e
Lines Changed: +47, -13
1 Modified Path:
/intern/cycles/kernel/closure/bsdf_microfacet_multi.h (+47, -13) (Diff)