Corrected calculation of Blinn-Phong factor used in specular lights.

This commit is contained in:
codeanticode
2012-04-21 21:33:33 +00:00
parent 7083509f98
commit 4c9bd15076
2 changed files with 10 additions and 9 deletions
@@ -68,8 +68,9 @@ float lambertFactor(vec3 lightDir, vec3 vecNormal) {
return max(zero_float, dot(lightDir, vecNormal));
}
float blinnPhongFactor(vec3 lightDir, vec3 lightPos, vec3 vecNormal, float shine) {
vec3 ldp = normalize(lightDir - lightPos);
float blinnPhongFactor(vec3 lightDir, vec3 vertPos, vec3 vecNormal, float shine) {
vec3 np = normalize(vertPos);
vec3 ldp = normalize(lightDir - np);
return pow(max(zero_float, dot(ldp, vecNormal)), shine);
}
@@ -126,8 +127,8 @@ void main() {
if (any(greaterThan(lightSpecular[i], zero_vec3))) {
totalSpecular += lightSpecular[i] * falloff * spotf *
blinnPhongFactor(lightDir, lightPos, ecNormal, inShine);
}
blinnPhongFactor(lightDir, ecVertex, ecNormal, inShine);
}
}
// Calculating final color as result of all lights (plus emissive term).
@@ -65,8 +65,9 @@ float lambertFactor(vec3 lightDir, vec3 vecNormal) {
return max(zero_float, dot(lightDir, vecNormal));
}
float blinnPhongFactor(vec3 lightDir, vec3 lightPos, vec3 vecNormal, float shine) {
vec3 ldp = normalize(lightDir - lightPos);
float blinnPhongFactor(vec3 lightDir, vec3 vertPos, vec3 vecNormal, float shine) {
vec3 np = normalize(vertPos);
vec3 ldp = normalize(lightDir - np);
return pow(max(zero_float, dot(ldp, vecNormal)), shine);
}
@@ -123,9 +124,8 @@ void main() {
if (any(greaterThan(lightSpecular[i], zero_vec3))) {
totalSpecular += lightSpecular[i] * falloff * spotf *
blinnPhongFactor(lightDir, lightPos, ecNormal, inShine);
}
blinnPhongFactor(lightDir, ecVertex, ecNormal, inShine);
}
}
// Calculating final color as result of all lights (plus emissive term).