From 76dfbe848f7bd50c51c214e18635fdf7c35e2d89 Mon Sep 17 00:00:00 2001 From: codeanticode Date: Fri, 10 Feb 2012 23:22:21 +0000 Subject: [PATCH] Another missing normalization --- android/core/src/processing/core/FillShaderVertLit.glsl | 6 ++++-- android/core/src/processing/core/PGraphicsAndroid3D.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/android/core/src/processing/core/FillShaderVertLit.glsl b/android/core/src/processing/core/FillShaderVertLit.glsl index c27c96d34..c2dc07dba 100644 --- a/android/core/src/processing/core/FillShaderVertLit.glsl +++ b/android/core/src/processing/core/FillShaderVertLit.glsl @@ -98,7 +98,7 @@ void main() { lightDir = -lightNormal[i]; } else { falloff = falloffFactor(lightPos, ecVertex, lightFalloffCoefficients[i]); - lightDir = lightPos - ecVertex; + lightDir = normalize(lightPos - ecVertex); } spotf = spotExp > zero_float ? spotFactor(lightPos, ecVertex, lightNormal[i], @@ -108,14 +108,16 @@ void main() { if (any(greaterThan(lightAmbient[i], zero_vec3))) { totalAmbient += lightAmbient[i] * falloff; } + if (any(greaterThan(lightDiffuse[i], zero_vec3))) { totalDiffuse += lightDiffuse[i] * falloff * spotf * lambertFactor(-lightDir, ecNormal); } + if (any(greaterThan(lightSpecular[i], zero_vec3))) { totalSpecular += lightSpecular[i] * falloff * spotf * blinnPhongFactor(-lightDir, lightPos, ecNormal, inShine); - } + } } vertColor = vec4(totalAmbient, 1) * inAmbient + diff --git a/android/core/src/processing/core/PGraphicsAndroid3D.java b/android/core/src/processing/core/PGraphicsAndroid3D.java index 43ad7f91b..19b60f780 100644 --- a/android/core/src/processing/core/PGraphicsAndroid3D.java +++ b/android/core/src/processing/core/PGraphicsAndroid3D.java @@ -4189,7 +4189,7 @@ public class PGraphicsAndroid3D extends PGraphics { float nx = dx * modelviewInv.m00 + dy * modelviewInv.m10 + dz * modelviewInv.m20; float ny = dx * modelviewInv.m01 + dy * modelviewInv.m11 + dz * modelviewInv.m21; float nz = dx * modelviewInv.m02 + dy * modelviewInv.m12 + dz * modelviewInv.m22; - + float invn = 1.0f / PApplet.dist(0, 0, 0, nx, ny, nz); lightNormal[3 * num + 0] = invn * nx; lightNormal[3 * num + 1] = invn * ny;