remove ^M chars, disable shading language extensions
[mesa.git] / src / mesa / main / light.c
index 4febf6faaa56ba4d3b30b1bf50e8c6d54a17cb89..98934f3982085741d8bde01108a660d316150d5e 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.3
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -114,7 +114,7 @@ _mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params )
    case GL_SPOT_DIRECTION: {
       GLfloat tmp[4];
       /* transform direction by inverse modelview */
-      if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
+      if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top)) {
         _math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
       }
       TRANSFORM_NORMAL( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
@@ -409,14 +409,6 @@ _mesa_LightModelfv( GLenum pname, const GLfloat *params )
            return;
         FLUSH_VERTICES(ctx, _NEW_LIGHT);
         ctx->Light.Model.ColorControl = newenum;
-
-        if ((ctx->Light.Enabled &&
-             ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
-            || ctx->Fog.ColorSumEnabled)
-           ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR;
-        else
-           ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR;
-
          break;
       default:
          _mesa_error( ctx, GL_INVALID_ENUM, "glLightModel(pname=0x%x)", pname );
@@ -695,6 +687,8 @@ _mesa_GetMaterialfv( GLenum face, GLenum pname, GLfloat *params )
    GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); /* update materials */
 
+   FLUSH_CURRENT(ctx, 0); /* update ctx->Light.Material from vertex buffer */
+
    if (face==GL_FRONT) {
       f = 0;
    }
@@ -741,6 +735,8 @@ _mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params )
    GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); /* update materials */
 
+   FLUSH_CURRENT(ctx, 0); /* update ctx->Light.Material from vertex buffer */
+
    if (face==GL_FRONT) {
       f = 0;
    }
@@ -880,7 +876,7 @@ _mesa_invalidate_shine_table( GLcontext *ctx, GLuint side )
    ASSERT(side < 2);
    if (ctx->_ShineTable[side])
       ctx->_ShineTable[side]->refcount--;
-   ctx->_ShineTable[side] = 0;
+   ctx->_ShineTable[side] = NULL;
 }
 
 
@@ -1111,10 +1107,7 @@ static void
 update_modelview_scale( GLcontext *ctx )
 {
    ctx->_ModelViewInvScale = 1.0F;
-   if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_UNIFORM_SCALE |
-                              MAT_FLAG_GENERAL_SCALE |
-                              MAT_FLAG_GENERAL_3D |
-                              MAT_FLAG_GENERAL) ) {
+   if (!_math_matrix_is_length_preserving(ctx->ModelviewMatrixStack.Top)) {
       const GLfloat *m = ctx->ModelviewMatrixStack.Top->inv;
       GLfloat f = m[2] * m[2] + m[6] * m[6] + m[10] * m[10];
       if (f < 1e-12) f = 1.0;
@@ -1133,6 +1126,7 @@ _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )
 {
    const GLuint oldneedeyecoords = ctx->_NeedEyeCoords;
 
+   (void) new_state;
    ctx->_NeedEyeCoords = 0;
 
    if (ctx->_ForceEyeCoords ||
@@ -1142,8 +1136,7 @@ _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )
       ctx->_NeedEyeCoords = 1;
 
    if (ctx->Light.Enabled &&
-       !TEST_MAT_FLAGS( ctx->ModelviewMatrixStack.Top, 
-                       MAT_FLAGS_LENGTH_PRESERVING))
+       !_math_matrix_is_length_preserving(ctx->ModelviewMatrixStack.Top))
       ctx->_NeedEyeCoords = 1;
 
 
@@ -1180,7 +1173,7 @@ _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )
 void
 _mesa_allow_light_in_model( GLcontext *ctx, GLboolean flag )
 {
-   ctx->_ForceEyeCoords = flag;
+   ctx->_ForceEyeCoords = !flag;
    ctx->NewState |= _NEW_POINT;        /* one of the bits from
                                 * _MESA_NEW_NEED_EYE_COORDS.
                                 */
@@ -1284,7 +1277,8 @@ _mesa_init_lighting( GLcontext *ctx )
    ctx->Light.ColorMaterialMode = GL_AMBIENT_AND_DIFFUSE;
    ctx->Light.ColorMaterialBitmask = _mesa_material_bitmask( ctx,
                                                GL_FRONT_AND_BACK,
-                                               GL_AMBIENT_AND_DIFFUSE, ~0, 0 );
+                                               GL_AMBIENT_AND_DIFFUSE, ~0,
+                                               NULL );
 
    ctx->Light.ColorMaterialEnabled = GL_FALSE;