I am working on a graphics engine, and our 3D artist is asking for support for different lighting models (I believe they're called that?) like Blinn, Phong, Blinn-Phong, some kind of anistropic light model and Lambert. From what I can tell, these are just different ways of calculating calculating specular lighting, except for Lambert which is just diffuse lighting. However, I can't find any information about the actual shader math needed to calculate them. The shader code for specular lighting that I can find in shader examples doesn't specify what model they use. Having done some 3D modelling myself, I know what he's talking about, but I can't find anything on how to actually implement them.
Note that I'm using deferred shading, but I have a G-buffer value over for storing some kind of shading mode selecting variable. If needed I think I can get my hands on one more variable in the G-buffer. The G-buffer currently stores diffuse color, normal and specular intensity + exponent (glossiness).
And one more question: What exactly is "specular fresnel"?
Here's my current shader code for calculating specular intensity:
vec3 viewDirection = normalize(-eyeSpace.xyz); vec3 reflectionVector = normalize(2.0 * diffuse * normal - lightDirection); float specular = specularIntensity * pow(max(0.0, dot(viewDirection, reflectionVector)), glossiness);