//ps.1.1

// def c0, 1.0, 0.0, 0.0, 1.0

// mov r0, c0

// Short pixel shader. Use the texm3x3vspec to do a per-pixel
// reflected lookup into our environment map.
// Input:
//    t0    - Normal map in tangent space. Apply _bx2 modifier to shift
//             [0..255] -> [-1..1]
//    t1    - UVW = tangent + eye2pos.x, map ignored.
//    t2    - UVW = binormal + eye2pos.y, map ignored
//    t3    - UVW = normal + eye2pos.z, map = environment cube map
//    v0    - attenuating color/alpha.
//    See docs on texm3x3vspec for explanation of the eye2pos wackiness.
// Output:
//    r0 = reflected lookup from environment map X input v0.
//    Since environment map has alpha = 255, the output of this
//    shader can be used for either alpha or additive blending,
//    as long as v0 is fed in appropriately.

ps.1.1

def c0, 1.0, 0.0, 0.0, 1.0       // Temp Hack
/*
def c1, 0.0, 1.0, 0.0, 1.0
def c2, 0.0, 0.0, 1.0, 1.0
*/


tex t0                  // Bind texture in stage 0 to register t0.
texm3x3pad   t1,  t0_bx2   // First row of matrix multiply.
texm3x3pad   t2,  t0_bx2   // Second row of matrix multiply.
texm3x3vspec t3,  t0_bx2   // Third row of matrix multiply to get a 3-vector.
                      // Reflect 3-vector by the eye-ray vector.
                      // Use reflected vector to do a texture lookup
                      // at stage 3.

// t3 now has our reflected environment map value
// We've (presumably) attenuated the effect on a vertex basis
// and have our color w/ attenuated alpha in v0. So all we need
// is to multiply t3 by v0 into r0, add our base color from v1 and we're done.
mad         r0.rgb, t3, v0, v1;
/* HACKAGE
//+mul          r0.a, v1, v0;
HACKAGE */
mov r0.a, v0; //HACKAGE
/*
mov r0.rgb, v0;
mov r0.a, v0;
*/

/*
tex t0;
texcoord t1;
texcoord t2;
texcoord t3;

mov r0.rgb, t3;

+mov    r0.a, c0;
*/





/*
tex t0;
texcoord t1;
texcoord t2;
texcoord t3;

mul r0.rgb, t0_bx2, c1;
+mov r0.a, c2;
*/