Microfacet models suffer from a significant limitation: they are not energy preserving, resulting in an unexpected darkening of rough specular surfaces. Energy compensation methods face this limitation by adding to the BSDF a secondary component accounting for multiple scattering contributions. While these methods are fast, robust and can be added to a renderer with relatively minor modifications, they involve the computation of the directional albedo. This quantity is expressed as an integral that does not have a closed-form solution, but it needs to be precomputed and stored in tables. These look-up tables are notoriously cumbersome to use, in particular on GPUs. This work obviates the need of look-up tables by fitting an analytic approximation of the directional albedo, which is a more practical solution. We enforce energy preservation by rescaling the specular albedo, thus maintaining the same lobe shape. We propose a 2D rational polynomial of degree three to fit conductors and a 3D rational polynomial of degree three to fit dielectrics and materials composed of a specular layer on top of a diffuse one, such as plastics. As an alternative, multi-layer perceptrons can be used, ensuring a more accurate approximation for dielectrics at the expense of a larger number of parameters to store. We validated our results via the furnace test, highlighting that materials rendered using our analytic approximations almost exactly match the behavior of the ones rendered with the use of look-up tables, resulting in an energy-preserving model even at maximum roughness. The software we use to fit coefficients is open-source and can be used to fit other BSDF models as well.
Read full abstract