Fix broken fog.
authorBrian <brian.paul@tungstengraphics.com>
Wed, 16 Jan 2008 23:31:37 +0000 (16:31 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Wed, 16 Jan 2008 23:31:37 +0000 (16:31 -0700)
Note that fogcoord and front-facing attribs are in the same register, in the
X and Y channels, respectively.

src/mesa/pipe/softpipe/sp_prim_setup.c

index 722cadc..7847027 100644 (file)
@@ -554,12 +554,6 @@ static void setup_tri_coefficients( struct setup_stage *setup )
           */
          setup_fragcoord_coeff(setup);
       }
-      else if (fs->input_semantic_name[fragSlot] == TGSI_SEMANTIC_FOG) {
-         /* FOG.y = front/back facing  XXX fix this */
-         setup->coef[fragSlot].a0[1] = 1 - setup->quad.facing;
-         setup->coef[fragSlot].dadx[1] = 0.0;
-         setup->coef[fragSlot].dady[1] = 0.0;
-      }
       else {
 #endif
          uint j;
@@ -578,8 +572,18 @@ static void setup_tri_coefficients( struct setup_stage *setup )
             break;
          default:
             /* invalid interp mode */
-            assert(0);
+            /* assert(0); re-enable this and run demos/fogcoord.c ... */
+            ;
+         }
+
+         if (fs->input_semantic_name[fragSlot] == TGSI_SEMANTIC_FOG) {
+            /* FOG.y = front/back facing  XXX fix this */
+            setup->coef[fragSlot].a0[1] = 1 - setup->quad.facing;
+            setup->coef[fragSlot].dadx[1] = 0.0;
+            setup->coef[fragSlot].dady[1] = 0.0;
          }
+
+
 #if USE_INPUT_MAP
       }
 #endif