fixed a number of multi-texture line bugs
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 21 May 2001 18:13:43 +0000 (18:13 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 21 May 2001 18:13:43 +0000 (18:13 +0000)
src/mesa/swrast/s_aaline.c
src/mesa/swrast/s_aalinetemp.h
src/mesa/swrast/s_lines.c

index 34a026e1e7b3ecb30a160204b2f518b2df16175b..395ad3f9414050de84b17eae2bf3d1293603e844 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aaline.c,v 1.10 2001/05/17 09:32:17 keithw Exp $ */
+/* $Id: s_aaline.c,v 1.11 2001/05/21 18:13:43 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -488,6 +488,13 @@ segment(GLcontext *ctx,
 #define DO_Z
 #define DO_RGBA
 #define DO_MULTITEX
+#include "s_aalinetemp.h"
+
+
+#define NAME(x)  aa_multitex_spec_##x
+#define DO_Z
+#define DO_RGBA
+#define DO_MULTITEX
 #define DO_SPEC
 #include "s_aalinetemp.h"
 
@@ -503,13 +510,17 @@ _swrast_choose_aa_line_function(GLcontext *ctx)
    if (ctx->Visual.rgbMode) {
       /* RGBA */
       if (ctx->Texture._ReallyEnabled) {
-         if (ctx->Texture._ReallyEnabled > TEXTURE0_ANY || 
-            ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR || 
-            ctx->Fog.ColorSumEnabled)
+         if (ctx->Texture._ReallyEnabled > TEXTURE0_ANY) {
             /* Multitextured! */
-            swrast->Line = aa_multitex_rgba_line;
-         else
+            if (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR || 
+                ctx->Fog.ColorSumEnabled)
+               swrast->Line = aa_multitex_spec_line;
+            else
+               swrast->Line = aa_multitex_rgba_line;
+         }
+         else {
             swrast->Line = aa_tex_rgba_line;
+         }
       }
       else {
          swrast->Line = aa_rgba_line;
index 02ad04d0cf232cd6ea46a322e40d062daa1e5d73..bcfd22f019f28fd8650e66bfe417f4e99fdf4016 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aalinetemp.h,v 1.11 2001/05/17 14:49:38 brianp Exp $ */
+/* $Id: s_aalinetemp.h,v 1.12 2001/05/21 18:13:43 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -122,7 +122,7 @@ NAME(plot)(GLcontext *ctx, const struct LineInfo *line,
    PB_WRITE_MULTITEX_SPEC_PIXEL(pb, ix, iy, z, fog, red, green, blue, alpha,
                                 specRed, specGreen, specBlue, tex);
 #else
-   PB_WRITE_MULTITEX_PIXEL(pb, ix, iy, z, fog, red, green, blue, alpha, texcoords);
+   PB_WRITE_MULTITEX_PIXEL(pb, ix, iy, z, fog, red, green, blue, alpha, tex);
 #endif
 #elif defined(DO_TEX)
    PB_WRITE_TEX_PIXEL(pb, ix, iy, z, fog, red, green, blue, alpha,
@@ -239,16 +239,15 @@ NAME(line)(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1)
       line.texWidth[0] = (GLfloat) texImage->Width;
       line.texHeight[0] = (GLfloat) texImage->Height;
    }
-#elif defined(DO_MULITEX)
+#elif defined(DO_MULTITEX)
    {
       GLuint u;
       for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
-         if (ctx->Texture.Unit[u].ReallyEnabled) {
-            const struct gl_texture_object *obj = ctx->Texture.Unit[u].Current;
+         if (ctx->Texture.Unit[u]._ReallyEnabled) {
+            const struct gl_texture_object *obj = ctx->Texture.Unit[u]._Current;
             const struct gl_texture_image *texImage = obj->Image[obj->BaseLevel];
             const GLfloat invW0 = v0->win[3];
             const GLfloat invW1 = v1->win[3];
-            GLfloat (*texCoord)[4] = VB->TexCoordPtr[u]->data;
             const GLfloat s0 = v0->texcoord[u][0] * invW0;
             const GLfloat s1 = v1->texcoord[u][0] * invW1;
             const GLfloat t0 = v0->texcoord[u][1] * invW0;
@@ -259,8 +258,8 @@ NAME(line)(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1)
             const GLfloat q1 = v1->texcoord[u][3] * invW0;
             compute_plane(line.x0, line.y0, line.x1, line.y1, s0, s1, line.sPlane[u]);
             compute_plane(line.x0, line.y0, line.x1, line.y1, t0, t1, line.tPlane[u]);
-            compute_plane(line.x0, line.y0, line.x1, line.y1, u0, u1, line.uPlane[u]);
-            compute_plane(line.x0, line.y0, line.x1, line.y1, v0, v1, line.vPlane[u]);
+            compute_plane(line.x0, line.y0, line.x1, line.y1, r0, r1, line.uPlane[u]);
+            compute_plane(line.x0, line.y0, line.x1, line.y1, q0, q1, line.vPlane[u]);
             line.texWidth[u]  = (GLfloat) texImage->Width;
             line.texHeight[u] = (GLfloat) texImage->Height;
          }
index 19b0d9a1a4d3c52a280309bf28d7fa63ac6c794e..c5523a432cc2193d42d7903f0d475e094907d02c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_lines.c,v 1.17 2001/05/17 09:32:17 keithw Exp $ */
+/* $Id: s_lines.c,v 1.18 2001/05/21 18:13:43 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -780,10 +780,9 @@ static void smooth_multitextured_line( GLcontext *ctx,
           pbspec[count][BCOMP] = FixedToInt(sb0);              \
           for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {   \
              if (ctx->Texture.Unit[u]._ReallyEnabled) {        \
-                PB->s[u][0] = fragTexcoord[u][0];              \
-                PB->s[u][1] = fragTexcoord[u][1];              \
-                PB->s[u][2] = fragTexcoord[u][2];              \
-                PB->s[u][3] = fragTexcoord[u][3];              \
+                PB->s[u][count] = fragTexcoord[u][0];          \
+                PB->t[u][count] = fragTexcoord[u][1];          \
+                PB->u[u][count] = fragTexcoord[u][2];          \
              }                                                 \
           }                                                    \
           count++;                                             \
@@ -817,10 +816,9 @@ static void smooth_multitextured_line( GLcontext *ctx,
           pbspec[count][BCOMP] = FixedToInt(sb0);              \
           for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {   \
              if (ctx->Texture.Unit[u]._ReallyEnabled) {        \
-                PB->s[u][0] = fragTexcoord[u][0];              \
-                PB->s[u][1] = fragTexcoord[u][1];              \
-                PB->s[u][2] = fragTexcoord[u][2];              \
-                PB->s[u][3] = fragTexcoord[u][3];              \
+                PB->s[u][count] = fragTexcoord[u][0];          \
+                PB->t[u][count] = fragTexcoord[u][1];          \
+                PB->u[u][count] = fragTexcoord[u][2];          \
              }                                                 \
           }                                                    \
           count++;                                             \
@@ -881,10 +879,9 @@ static void flat_multitextured_line( GLcontext *ctx,
           pbspec[count][BCOMP] = sBlue;                        \
           for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {   \
              if (ctx->Texture.Unit[u]._ReallyEnabled) {        \
-                PB->s[u][0] = fragTexcoord[u][0];              \
-                PB->s[u][1] = fragTexcoord[u][1];              \
-                PB->s[u][2] = fragTexcoord[u][2];              \
-                PB->s[u][3] = fragTexcoord[u][3];              \
+                PB->s[u][count] = fragTexcoord[u][0];          \
+                PB->t[u][count] = fragTexcoord[u][1];          \
+                PB->u[u][count] = fragTexcoord[u][2];          \
              }                                                 \
           }                                                    \
           count++;                                             \
@@ -916,10 +913,9 @@ static void flat_multitextured_line( GLcontext *ctx,
           pbspec[count][BCOMP] = sBlue;                        \
           for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {   \
              if (ctx->Texture.Unit[u]._ReallyEnabled) {        \
-                PB->s[u][0] = fragTexcoord[u][0];              \
-                PB->s[u][1] = fragTexcoord[u][1];              \
-                PB->s[u][2] = fragTexcoord[u][2];              \
-                PB->s[u][3] = fragTexcoord[u][3];              \
+                PB->s[u][count] = fragTexcoord[u][0];          \
+                PB->t[u][count] = fragTexcoord[u][1];          \
+                PB->u[u][count] = fragTexcoord[u][2];          \
              }                                                 \
           }                                                    \
           count++;                                             \