home *** CD-ROM | disk | FTP | other *** search
- //-----------------------------------------------------------------------------------
- // Pixel shader para las superficies oceßnicas
- //-----------------------------------------------------------------------------------
- // Constantes:
- // c0: Color del agua cercana
- // (*) CP_OCEAN_COLOR_LIGHT 0
- // c1: Color del agua profunda
- // (*) CP_OCEAN_COLOR_DARK 1
- //-----------------------------------------------------------------------------------
-
- ps.1.1
-
- tex t0 // obtiene la normal de la textura de bump maping
- texm3x3pad t1, t0 // transforma normal.x a mundo
- texm3x3pad t2, t0 // transforma normal.y a mundo
- texm3x3vspec t3, t0 // transforma normal.z a mundo, calcula la reflexi≤n y busca el valor en T3 (env.map)
-
- //-----------------------------------------------------------
- // Aplica el factor de margen dinßmico al environment maping
- //-----------------------------------------------------------
- mul_x4 r0, t3, v1.a
- mad r0, t3, v0.a, r0
-
- //------------------------------------------------------------------
- // Interpola el color del oceano entre el agua profunda y el color
- // suave del agua cercana a partir del color del difiso
- // r1 = c0(light) + v0(difuso)*( c1(dark) - c0(light) )
- //------------------------------------------------------------------
- lrp r1, v0, c1, c0
-
- //---------------------------------------------------------------
- // Combina el color del oceano con el del env.map
- // r0 = r0(env.map con dyn.range) + r1(color agua interpolada)
- //---------------------------------------------------------------
- add r0, r0, r1
-