Question about implemention of BRDF_Specular_GGX

The implemention of BRDF specular in threejs is different from the cook-torrence BRDF specluar model. The threejs’s implemention lacks a normalization factor. Can anyone tell me why? Thanks!

cook-torrence:

threejs:

Depending on how the D, F and G functions are implemented, you don’t see the explicit divide through the normalization factor in code.

The following paper is a good resource for PBR implementations and also refrences in the three.js shader code. The code of the specular microfacet model (page 12) is similar to what you see in three.js.

1 Like