// Composite the cosines together.
// Input map is cosine(pix) for each of
// the 4 waves.
//
// The constants are set up so:
//      Nx = -freq * amp * dirX * cos(pix);
//      Ny = -freq * amp * dirY * cos(pix);
//  So c[i].x = -freq[i] * amp[i] * dirX[i]
//  etc.
// All textures are:
//      (r,g,b,a) = (cos(), cos(), 1, 1)
//
// Here all c[i].z = 0, because we're accumulating ontop
// of layers that have been primed with z = 1.
// Note also the c4 used for biasing back at the end.

ps.1.1

tex     t0;
tex     t1;
tex     t2;
tex     t3;

mul     r0, t0_bx2, c0;
mad     r0, t1_bx2, c1, r0;
mad     r0, t2_bx2, c2, r0;
mad     r0, t3_bx2, c3, r0;

// Now bias it back into range [0..1] for output.
mul     r0.rgb, r0, c4;
+mov    r0.a, c4;
add     r0.rgb, r0, c5;
//mov       r0, c4;