I implemented the Lafortune shader in WebGL, and my biggest concern is about this formula:
Kd/Ks is the material diffuse/specular color, ρd/ρs is the light diffuse/specular component, m is the number of lobes (in my shader I always use a single lobe), 𝜔o is the viewer direction (from the surface point), 𝜔i is the light direction, Oj is the lobe and ej is the shininess factor.
Full reference is here: A survey of shading models for real-time rendering, at page 28.
The problem comes with the Oj lobe. I realized that as I change the value of Oj, the light gets displaced from it's original position, for example that's what I get with Oj= (-1,-1,1):
And that's what I get with Oj=(0,0,1):
Is that behavior normal? Should the light get displaced according to the value of Oj?