Playing with BRDF

Theory is one thing but there is nothing like practice and execution. It was time for me to spend sometime experimenting with more physically based BRDF models to get a better feel of  how they work. Just for fun I started with Cook-Torrance using the Beckmann distribution, but like everybody I ended up using the GGX distribution for the microfacet slope distribution (D).

Some takeaway from this experiment:

  • The application of the Fresnel term and the proper energy conservation really have an impressive visual impact.
  • Even if the instruction count is higher then the good old Blinn-Phong the performance hit is not that high on modern GPU.
  • Authoring and calibrating textures is hard, I ended up using DDO to have a good reference.
  • You really need some environment reflection (which I don’t have for now) for the metals to look good since they don’t have a diffuse component.
  • Not really specific to the BRDF model but the high constrast specular highlights don’t come out to good on the Rift DK1, revealing even more the pixel grid. Cannot wait to see how it will perform with the DK2.
  • Goodbye Blinn-Phong.

GGX-plastic

The next step will be to add some IBL to handle indirect lighting and radiance properly. Those more realistic materials mixed with the lack of irradiance really give the impression that we are on the moon.

References:

D3DBook:(Lighting) Cook-Torrance

Cook-Torrance BRDF (lecture on youtube)

Optimizing GGX Shaders with dot(L,H)

Game environments – Part A: renderingRemember Me

Everything is Shiny