home *** CD-ROM | disk | FTP | other *** search
/ NVIDIA Tech Demo: DAWN / NVIDIA_demo.iso / Dawn.exe / Disk1 / data1.cab / Program_Executable_Files / shaders / finalLeavesTransp.fp30 < prev    next >
Encoding:
Text File  |  2003-02-11  |  1.6 KB  |  46 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.   float4 SkinSilouetteVec :TEX2;
  10. };
  11.  
  12. // output a color
  13. struct f2fConnector : fragment2framebuffer  {
  14.   float4 COL;
  15. };
  16.  
  17. f2fConnector main(v2fConnector v2f,
  18.                   uniform texobj2D   diffCol,
  19.                   uniform texobj2D   normalMap,
  20.                   uniform texobj2D   translucenceMap,
  21.                   uniform texobj2D   g_dappleProjection,
  22.                   uniform texobjCUBE g_diffuse_Cube,
  23.                   uniform texobjCUBE g_specular_Cube,
  24.                   uniform texobjCUBE g_nrmalize_Cube,
  25.                   uniform texobjCUBE g_hilight_Cube)
  26. {   f2fConnector f2f;
  27.  
  28.     float3 norm = f3tex2D(normalMap, v2f.diffCol);
  29.     //norm = 2.0 * norm - 1.0; // do this until we use hi/low
  30.  
  31.     float3 n = float3(dot(v2f.worldTanMatrixX.xyz, norm),
  32.               dot(v2f.worldTanMatrixY.xyz, norm),
  33.               dot(v2f.worldTanMatrixZ.xyz, norm));
  34.     float3 r = reflect(v2f.worldEyeDir, n.xyz);
  35.  
  36.     float3 cube_diffuse = f3texCUBE(g_diffuse_Cube, n); // Diffuse
  37.     float3 cube_specular = f3texCUBE(g_specular_Cube, r); // Diffuse
  38.  
  39.     float3 hilight = f3texCUBE(g_hilight_Cube, v2f.worldEyeDir); // Diffuse
  40.  
  41.     float4 diff_color = f4tex2D(diffCol, v2f.diffCol);
  42.  
  43.     f2f.COL.xyz = diff_color.xyz*(cube_diffuse + 0.3*hilight) + 0.1*cube_specular*diff_color.w;
  44.     f2f.COL.w = 1;
  45.     return f2f;
  46. }