Fixed off-by-one error in compute_shine_table(). Minor code clean-up
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 18 Jul 2000 16:55:56 +0000 (16:55 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 18 Jul 2000 16:55:56 +0000 (16:55 +0000)
src/mesa/main/light.c

index 6f2eb16fd25c74a6ab3198b06f919394e2e245c7..eb5c83135e3f1ca71ea9faeaef8c610490b564b5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: light.c,v 1.15 2000/06/29 04:56:30 brianp Exp $ */
+/* $Id: light.c,v 1.16 2000/07/18 16:55:56 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -1119,26 +1119,27 @@ _mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params )
  * Whenever the spotlight exponent for a light changes we must call
  * this function to recompute the exponent lookup table.
  */
-void gl_compute_spot_exp_table( struct gl_light *l )
+void
+gl_compute_spot_exp_table( struct gl_light *l )
 {
-   int i;
-   double exponent = l->SpotExponent;
-   double tmp = 0;
-   int clamp = 0;
+   GLint i;
+   GLdouble exponent = l->SpotExponent;
+   GLdouble tmp = 0;
+   GLint clamp = 0;
 
    l->SpotExpTable[0][0] = 0.0;
 
-   for (i=EXP_TABLE_SIZE-1;i>0;i--) {
+   for (i = EXP_TABLE_SIZE - 1; i > 0 ;i--) {
       if (clamp == 0) {
-         tmp = pow(i/(double)(EXP_TABLE_SIZE-1), exponent);
-         if (tmp < FLT_MIN*100.0) {
+         tmp = pow(i / (GLdouble) (EXP_TABLE_SIZE - 1), exponent);
+         if (tmp < FLT_MIN * 100.0) {
             tmp = 0.0;
             clamp = 1;
          }
       }
       l->SpotExpTable[i][0] = tmp;
    }
-   for (i=0;i<EXP_TABLE_SIZE-1;i++) {
+   for (i = 0; i < EXP_TABLE_SIZE - 1; i++) {
       l->SpotExpTable[i][1] = l->SpotExpTable[i+1][0] - l->SpotExpTable[i][0];
    }
    l->SpotExpTable[EXP_TABLE_SIZE-1][1] = 0.0;
@@ -1151,30 +1152,36 @@ void gl_compute_spot_exp_table( struct gl_light *l )
  * lighting, and the cost of doing it early may be partially offset
  * by keeping a MRU cache of shine tables for various shine values.
  */
-static void compute_shine_table( struct gl_shine_tab *tab, GLfloat shininess )
+static void
+compute_shine_table( struct gl_shine_tab *tab, GLfloat shininess )
 {
-   int i;
+   GLint i;
    GLfloat *m = tab->tab;
 
-   m[0] = 0;
-   if (shininess == 0) {
+   m[0] = 0.0;
+   if (shininess == 0.0) {
       for (i = 1 ; i <= SHINE_TABLE_SIZE ; i++)
-        m[i] = 1;
-   } else {
-      for (i = 1 ; i <= SHINE_TABLE_SIZE ; i++) {
-        double t = pow( i/(GLfloat)SHINE_TABLE_SIZE, shininess );
-        m[i] = 0;
-        if (t > 1e-20) m[i] = t;
+        m[i] = 1.0;
+   }
+   else {
+      for (i = 1 ; i < SHINE_TABLE_SIZE ; i++) {
+        GLdouble t = pow(i / (GLfloat) (SHINE_TABLE_SIZE - 1), shininess);
+        if (t > 1e-20)
+            m[i] = t;
+         else
+            m[i] = 0.0;
       }      
+      m[SHINE_TABLE_SIZE] = 1.0;
    }
 
    tab->shininess = shininess;
 }
 
-#define DISTSQR(a,b) ((a-b)*(a-b))
 
-void gl_compute_shine_table( GLcontext *ctx, GLuint i, GLfloat shininess )
+void
+gl_compute_shine_table( GLcontext *ctx, GLuint i, GLfloat shininess )
 {
+#define DISTSQR(a,b) ((a-b)*(a-b))
    struct gl_shine_tab *list = ctx->ShineTabList;
    struct gl_shine_tab *s;
 
@@ -1182,10 +1189,10 @@ void gl_compute_shine_table( GLcontext *ctx, GLuint i, GLfloat shininess )
       if ( DISTSQR(s->shininess, shininess) < 1e-4 ) 
         break;
 
-   if (s == list) 
-   {
+   if (s == list) {
       foreach(s, list) 
-        if (s->refcount == 0) break;
+        if (s->refcount == 0)
+            break;
 
       compute_shine_table( s, shininess );
    }
@@ -1194,12 +1201,14 @@ void gl_compute_shine_table( GLcontext *ctx, GLuint i, GLfloat shininess )
    ctx->ShineTable[i] = s;
    move_to_tail( list, s );
    s->refcount++;
+#undef DISTSQR
 }
 
 
 
 #if 0
-static void gl_reinit_light_attrib( GLcontext *ctx, struct gl_light_attrib *l )
+static void
+gl_reinit_light_attrib( GLcontext *ctx, struct gl_light_attrib *l )
 {
    GLuint i;
 
@@ -1228,7 +1237,8 @@ static void gl_reinit_light_attrib( GLcontext *ctx, struct gl_light_attrib *l )
  * Also, precompute some lighting values such as the products of light
  * source and material ambient, diffuse and specular coefficients.
  */
-void gl_update_lighting( GLcontext *ctx )
+void
+gl_update_lighting( GLcontext *ctx )
 {
    struct gl_light *light;
 
@@ -1303,7 +1313,8 @@ void gl_update_lighting( GLcontext *ctx )
 /* Need to seriously restrict the circumstances under which these
  * calc's are performed.
  */
-void gl_compute_light_positions( GLcontext *ctx )
+void
+gl_compute_light_positions( GLcontext *ctx )
 {
    struct gl_light *light;
    
@@ -1375,10 +1386,8 @@ void gl_compute_light_positions( GLcontext *ctx )
 }
 
 
-
-
-
-void gl_update_normal_transform( GLcontext *ctx )
+void
+gl_update_normal_transform( GLcontext *ctx )
 {
    GLuint new_flag = 0;
    normal_func *last = ctx->NormalTransform;
@@ -1399,20 +1408,18 @@ void gl_update_normal_transform( GLcontext *ctx )
         new_flag = ctx->NewState & NEW_MODELVIEW;
         ctx->vb_rescale_factor = ctx->rescale_factor;
               
-        if (ctx->Transform.Normalize) 
-        {
+        if (ctx->Transform.Normalize) {
            ctx->NormalTransform = gl_normal_tab[transform | NORM_NORMALIZE];
         } 
         else if (ctx->Transform.RescaleNormals &&
-                 ctx->rescale_factor != 1.0)
-        {
+                 ctx->rescale_factor != 1.0) {
            ctx->NormalTransform = gl_normal_tab[transform | NORM_RESCALE];
         }
-        else 
-        {
+        else {
            ctx->NormalTransform = gl_normal_tab[transform];
         }
-      } else {
+      }
+      else {
         ctx->NormalTransform = 0;
       }
    }
@@ -1420,20 +1427,18 @@ void gl_update_normal_transform( GLcontext *ctx )
       if (ctx->NeedNormals) {
         ctx->vb_rescale_factor = 1.0/ctx->rescale_factor;
 
-        if (ctx->Transform.Normalize) 
-        {
+        if (ctx->Transform.Normalize) {
            ctx->NormalTransform = gl_normal_tab[NORM_NORMALIZE];
         }
         else if (!ctx->Transform.RescaleNormals &&
-                 ctx->rescale_factor != 1.0)
-        {
+                 ctx->rescale_factor != 1.0) {
            ctx->NormalTransform = gl_normal_tab[NORM_RESCALE];
         }
-        else
-        {
+        else {
            ctx->NormalTransform = 0;
         }
-      } else {
+      }
+      else {
         ctx->NormalTransform = 0;
       }
    }
@@ -1441,4 +1446,3 @@ void gl_update_normal_transform( GLcontext *ctx )
    if (last != ctx->NormalTransform || new_flag)
       ctx->NewState |= NEW_NORMAL_TRANSFORM;
 }
-