home *** CD-ROM | disk | FTP | other *** search
/ NVIDIA Tech Demo: DAWN / NVIDIA_demo.iso / Dawn.exe / Disk1 / data1.cab / Program_Executable_Files / shaders / finalTeeth.fp30 < prev    next >
Encoding:
Text File  |  2003-02-11  |  1.4 KB  |  41 lines

  1.  
  2. // wpos, a texture coordinate, and tangent space light vectors
  3. struct v2fConnector : vertex2fragment  {
  4.   float4 diffCol          :TEX0;
  5.   float3 worldEyeDir      :TEX1;
  6.   float3 worldTanMatrixX  :TEX5;
  7.   float3 worldTanMatrixY  :TEX6;
  8.   float3 worldTanMatrixZ  :TEX7;
  9. };
  10.  
  11. // output a color
  12. struct f2fConnector : fragment2framebuffer  {
  13.   float3 COL;
  14. };
  15.  
  16. f2fConnector main(v2fConnector v2f,
  17.                   uniform texobj2D   diffCol,
  18.                   uniform texobj2D   normalMap,
  19.                   uniform texobj2D   translucenceMap,
  20.                   uniform texobjCUBE g_diffuse_Cube,
  21.                   uniform texobjCUBE g_specular_Cube,
  22.                   uniform texobjCUBE g_nrmalize_Cube,
  23.                   uniform texobjCUBE g_hilight_Cube)
  24. {   f2fConnector f2f;
  25.  
  26.     float3 norm = f3tex2D(normalMap, v2f.diffCol);
  27.     //norm = 2.0 * norm - 1.0; // do this until we use hi/low
  28.  
  29.     float3 n = float3(dot(v2f.worldTanMatrixX.xyz, norm),
  30.               dot(v2f.worldTanMatrixY.xyz, norm),
  31.               dot(v2f.worldTanMatrixZ.xyz, norm));
  32.     float3 r = reflect(v2f.worldEyeDir, n.xyz);
  33.  
  34.     float3 cube_diffuse = f3texCUBE(g_diffuse_Cube, n); // Diffuse
  35.     float3 cube_specular = f3texCUBE(g_hilight_Cube, r); // Diffuse
  36.  
  37.     float4 diff_color = f4tex2D(diffCol, v2f.diffCol);
  38.  
  39.     f2f.COL = 0.8*diff_color.xyz*cube_diffuse + 0.05*cube_specular*diff_color.w;
  40.     return f2f;
  41. }