home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 February / Gamestar_70_2005-02_dvd.iso / DVDStar / Editace / ogierinstall_103.exe / XRShader_Proj_SpecNormal.fp < prev    next >
Text File  |  2004-12-21  |  2KB  |  74 lines

  1. sbzfp.1.4;
  2.  
  3. /*»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»*\
  4.     File:            Program for CXR_Shader::RenderShading_FP14
  5.  
  6.     Author:            Magnus H÷gdahl
  7.  
  8.     Copyright:        Starbreeze AB 2004
  9.  
  10.     Comments:
  11.  
  12.         tv0 = Mapping coordinates
  13.         tv1 = Tangent space light vector
  14.         tv2 = Projection map coordinates
  15.         tv3 = Half angle space row 0
  16.         tv4 = Half angle space row 1
  17.         tv5 = Half angle space row 2
  18.  
  19.         t0 = Normal
  20.         t1 = Diffuse
  21.         t2 = Cube normalize
  22.         t3 = Spec power
  23.         t4 = Projection
  24.  
  25. \*____________________________________________________________________________________________*/
  26.  
  27. // ----------------------------------
  28. // Phase 1
  29. passtc r1, t3, str;
  30. passtc r3, t4, str;
  31. passtc r5, t5, str;
  32. texld r0, t0, str;    // Load normal
  33. texld r2, t1, str;    // Load normalized light vector
  34. texld r4, t2, str;    // Load projection
  35.  
  36. dp3 r1.r, r0_bias_x2, r1;// Transform normal to half angle space for (N*H)^k look-up
  37. dp3 r1.g, r0_bias_x2, r3;
  38. dp3 r1.b, r0_bias_x2, r5;
  39. mov r3.rgb, r0_bias_x2;    // Texcoord for normal renormalization
  40. mov r4.rgb, r4.a;
  41. mov r4.b, r0.a;        // Store specular in projection map
  42. //mov r3.rgb, r0;    // Texcoord for normal renormalization
  43.  
  44. // ----------------------------------
  45. // Phase 2
  46.  
  47. texld r1, t0, str;        // Read diffuse
  48. texld r2, r3, str;    // Read normal
  49. //passtc r2, r3, str;
  50.  
  51. texld r3, r1, str;    // Read specular power
  52. passtc r0, r2, str;    // Normalized light vector
  53. passtc r5, t1, str;    // Light vector
  54. passtc r4, r4, str;    // Pass proj map
  55.  
  56. dp3 r5_sat.rgb, r5, r5;    // |LightVec|^2
  57.  
  58. dp3 r2_sat.rgb, r2_bias_x2, r0_bias_x2;// Normal * Lightvector
  59. mul r5.a, r5_comp.r, r5_comp.r;// Square
  60.  
  61. mul r2.rgb, r2, c0;    // Diff * DiffColor
  62. mul r5.a, r5.a, r4.r;    // Attn * Projmap
  63.  
  64. mul r2_x2.rgb, r2, r1;    // Diff * DiffTex
  65. mul r2.a, r3.r, r4.b;    // SpecPower * SpecTex
  66.  
  67. mad r0_x4.rgb, r2.a, c1, r2;// Result = Diff + Spec * SpecColor
  68.  
  69. mul r0.rgb, r0, r5.a;    // Result *= (Attn * ProjMap)
  70. mov r0.a, r1.a;
  71.  
  72.  
  73.  
  74.