Module: Mesa
Branch: gallium-mesa-7.4
Commit: 39345a492837d733f158ad594555858a7b40e902
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=39345a492837d733f158ad594555858a7b40e902

Author: Brian Paul <bri...@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);
         }
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to