home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2002 April / GSSH42002.iso / EDITOREN / DS / gmax / gmaxinst_1-1.exe / gmaxsetup11.cab / cubemap.njv < prev    next >
Text File  |  2002-02-13  |  2KB  |  78 lines

  1. ; Generates texture coordinates based
  2. ; on the input normal.  The texture coordinates
  3. ; represent a ray from the eye reflected from the object, 
  4. ; based on the normal.  
  5. ; This is an implementation of D3D's CAMERASPACEREFLECTIONVECTOR
  6.  
  7. ; Shader version
  8. vs.1.0
  9.  
  10. ;#include "reflect.h"
  11.  
  12. ;#define CV_ZERO 0
  13. ;#define CV_ONE 1
  14.  
  15. ;#define CV_WORLDVIEWPROJ_0 2
  16. ;#define CV_WORLDVIEWPROJ_1 3
  17. ;#define CV_WORLDVIEWPROJ_2 4
  18. ;#define CV_WORLDVIEWPROJ_3 5
  19.  
  20. ;#define CV_WORLDVIEWIT_0 6
  21. ;#define CV_WORLDVIEWIT_1 7
  22. ;#define CV_WORLDVIEWIT_2 8
  23.  
  24. ;#define CV_VECA 10
  25. ;#define CV_VECD 11
  26. ;#define CV_VECSIN 12
  27. ;#define CV_VECCOS 13
  28.  
  29. ;#define CV_HALF 14
  30. ;#define CV_LIGHT1_DIRECTION 15
  31.  
  32. ;#define CV_WORLDVIEW_0 16
  33. ;#define CV_WORLDVIEW_1 17
  34. ;#define CV_WORLDVIEW_2 18
  35. ;#define CV_WORLDVIEW_3 19
  36.  
  37. ;;;
  38.  
  39. ;#define R_EYE_VERTEX r8
  40. ;#define R_EYE_NORMAL r9
  41. ;#define R_EYE_VECTOR r3
  42. ;#define R_DOT2 r4
  43.  
  44. ; Transform position
  45. dp4 oPos.x, v0, c2
  46. dp4 oPos.y, v0, c3
  47. dp4 oPos.z, v0, c4
  48. dp4 oPos.w, v0, c5
  49.  
  50. dp4 r8.x, v0, c16
  51. dp4 r8.y, v0, c17
  52. dp4 r8.z, v0, c18
  53. dp4 r8.w, v0, c19
  54.  
  55. ; Create r3, the normalized vector from the eye to the vertex
  56. dp3 r3.w, r8, r8
  57. rsq r3.w, r3.w        
  58. mul r3, r8, r3.w
  59.  
  60. ; Transform normal to eye-space
  61. ; We use the inverse transpose of the worldview
  62. ; matrix to do this
  63. dp3 r9.x, v1, c6
  64. dp3 r9.y, v1, c7
  65. dp3 r9.z, v1, c8
  66.  
  67. ; Need to re-normalize normal
  68. dp3 r9.w, r9, r9
  69. rsq r9.w, r9.w
  70. mul r9, r9, r9.w
  71.  
  72. ; Calculate E - 2*(E dot N)*N
  73. dp3 r4, r3, r9
  74. add r4, r4, r4
  75. mul r9, r9, r4
  76. add oT0, r3, -r9
  77. mov oT0.w, c1.x
  78.