home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 February / Gamestar_70_2005-02_dvd.iso / DVDStar / Editace / ogierinstall_103.exe / XRShader_SpecNormal.fp < prev   
Text File  |  2004-12-21  |  2KB  |  71 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.  
  35. dp3 r1.r, r0_bias_x2, r1;// Transform normal to half angle space for (N*H)^k look-up
  36. dp3 r1.g, r0_bias_x2, r3;
  37. dp3 r1.b, r0_bias_x2, r5;
  38. mov r3.rgb, r0_bias_x2;    // Texcoord for normal renormalization
  39. mov r4.b, r0.a;        // Store specular for next phase
  40. //mov r3.rgb, r0;    // Texcoord for normal renormalization
  41.  
  42. // ----------------------------------
  43. // Phase 2
  44.  
  45. texld r1, t0, str;        // Read diffuse
  46. texld r2, r3, str;    // Read normal
  47. //passtc r2, r3, str;
  48.  
  49. texld r3, r1, str;    // Read specular power
  50. passtc r0, r2, str;    // Normalized light vector
  51. passtc r5, t1, str;    // Light vector
  52. passtc r4, r4, str;    // Pass proj map
  53.  
  54. dp3 r5_sat.rgb, r5, r5;    // |LightVec|^2
  55.  
  56. dp3 r2_sat.rgb, r2_bias_x2, r0_bias_x2;// Normal * Lightvector
  57. mul r5.a, r5_comp.r, r5_comp.r;// Square
  58.  
  59. mul r2.rgb, r2, c0;    // Diff * DiffColor
  60.  
  61. mul r2_x2.rgb, r2, r1;    // Diff * DiffTex
  62. mul r2.a, r3.r, r4.b;    // SpecPower * SpecTex
  63.  
  64. mad r0_x4.rgb, r2.a, c1, r2;// Result = Diff + Spec * SpecColor
  65.  
  66. mul r0.rgb, r0, r5.a;    // Result *= (Attn * ProjMap)
  67. mov r0.a, r1.a;
  68.  
  69.  
  70.  
  71.