home *** CD-ROM | disk | FTP | other *** search
-
- // wpos, a texture coordinate, and tangent space light vectors
- struct v2fConnector : vertex2fragment {
- float4 diffCol :TEX0;
- float3 worldEyeDir :TEX1;
- float3 worldTanMatrixX :TEX5;
- float3 worldTanMatrixY :TEX6;
- float3 worldTanMatrixZ :TEX7;
- };
-
- // output a color
- struct f2fConnector : fragment2framebuffer {
- float3 COL;
- };
-
- f2fConnector main(v2fConnector v2f,
- uniform texobj2D diffCol,
- uniform texobj2D normalMap,
- uniform texobj2D translucenceMap,
- uniform texobjCUBE g_diffuse_Cube,
- uniform texobjCUBE g_specular_Cube,
- uniform texobjCUBE g_nrmalize_Cube,
- uniform texobjCUBE g_hilight_Cube)
- { f2fConnector f2f;
-
- float3 norm = f3tex2D(normalMap, v2f.diffCol);
- //norm = 2.0 * norm - 1.0; // do this until we use hi/low
-
- float3 n = float3(dot(v2f.worldTanMatrixX.xyz, norm),
- dot(v2f.worldTanMatrixY.xyz, norm),
- dot(v2f.worldTanMatrixZ.xyz, norm));
- float3 r = reflect(v2f.worldEyeDir, n.xyz);
-
- float3 cube_diffuse = f3texCUBE(g_diffuse_Cube, n); // Diffuse
- float3 cube_specular = f3texCUBE(g_hilight_Cube, r); // Diffuse
-
- float4 diff_color = f4tex2D(diffCol, v2f.diffCol);
-
- f2f.COL = diff_color.xyz*cube_diffuse + 0.3*cube_specular*diff_color.w;
- return f2f;
- }