Mesa (mesa_7_4_branch): mesa: don' t normalize spot light direction until validation time
Brian Paul
brianp at kemper.freedesktop.org
Fri Apr 3 16:16:45 UTC 2009
Module: Mesa
Branch: mesa_7_4_branch
Commit: 39345a492837d733f158ad594555858a7b40e902
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=39345a492837d733f158ad594555858a7b40e902
Author: Brian Paul <brianp at vmware.com>
Date: Fri Apr 3 10:16:31 2009 -0600
mesa: don't normalize spot light direction until validation time
In glLight() we're only supposed to transform the direction by the modelview
matrix, not normalized it too.
(cherry picked from commit 650d147289014e8a98f65fbbcd1855b2a4f19d2f)
---
src/mesa/main/light.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c
index ce50224..4372f7b 100644
--- a/src/mesa/main/light.c
+++ b/src/mesa/main/light.c
@@ -209,7 +209,6 @@ _mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params )
_math_matrix_analyse(ctx->ModelviewMatrixStack.Top);
}
TRANSFORM_DIRECTION(temp, params, ctx->ModelviewMatrixStack.Top->m);
- NORMALIZE_3FV(temp);
params = temp;
break;
case GL_SPOT_EXPONENT:
@@ -1137,12 +1136,18 @@ compute_light_positions( GLcontext *ctx )
}
if (light->_Flags & LIGHT_SPOT) {
+ /* Note: we normalize the spot direction now */
+
if (ctx->_NeedEyeCoords) {
COPY_3V( light->_NormDirection, light->EyeDirection );
+ NORMALIZE_3FV( light->_NormDirection );
}
else {
+ GLfloat spotDir[3];
+ COPY_3V(spotDir, light->EyeDirection);
+ NORMALIZE_3FV(spotDir);
TRANSFORM_NORMAL( light->_NormDirection,
- light->EyeDirection,
+ spotDir,
ctx->ModelviewMatrixStack.Top->m);
}
More information about the mesa-commit
mailing list