From: Brian Paul Date: Fri, 3 Apr 2009 15:55:10 +0000 (-0600) Subject: mesa: don't normalize spot light direction until validation time X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=650d147289014e8a98f65fbbcd1855b2a4f19d2f;p=mesa.git 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. --- diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c index a15c1f0be05..f72841b8ccb 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); }