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