TerrainMorph.vsh
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:3k
源码类别:

其他游戏

开发平台:

Visual C++

  1. ;------------------------------------------------------------------------------
  2. ;
  3. ; Vertex Shader file
  4. ; This Shader does the patches' geo-morphing
  5. ;------------------------------------------------------------------------------
  6. ;
  7. ; Constants specified by the app
  8. ;
  9. ;    c0      = (factorSelf, 0.0f, 0.5f, 1.0f)
  10. ;    c2      = (factorLeft, factorLeft2, factorRight, factorRight2),
  11. ;    c3      = (factorBottom, factorBottom2, factorTop, factorTop2)
  12. ;
  13. ;    c4-c7   = WorldViewProjection Matrix
  14. ;    c8-c11  = Pass 0 Texture Matrix
  15. ;
  16. ;
  17. ; Vertex components (as specified in the vertex DECLARATION)
  18. ;
  19. ;    v0      = (posX, posZ, texX, texY)
  20. ;    v1      = (posY, yMoveSelf, 0.0, 1.0)
  21. ;    v2      = (yMoveLeft, yMoveLeft2, yMoveRight, yMoveRight2)
  22. ;    v3      = (yMoveBottom, yMoveBottom2, yMoveTop, yMoveTop2)
  23. ;
  24. ;
  25. ;------------------------------------------------------------------------------
  26. ; We use Vertex Shader 1.1
  27. ;
  28. vs.1.1
  29. dcl_position0 v0
  30. dcl_texcoord0 v1
  31. dcl_texcoord1 v2
  32. dcl_texcoord2 v3
  33. ;------------------------------------------------------------------------------
  34. ; Vertex transformation
  35. ;------------------------------------------------------------------------------
  36. mov r0, v0.xzyy                    ; build the base vertex
  37. mov r0.w, c0.w                     ; set w-component to 1.0
  38. ;mov r0.y, v1.x                    ; alternativly: simply use the lowres vertex
  39. dp4 r1.x, v2, c2                   ; calc yMoveLeft*factorLeft + yMoveLeft2*factorLeft2 + yMoveRight*factorRight + yMoveRight2*factorRight2
  40. dp4 r1.y, v3, c3                   ; calc yMoveBottom*factorBottom + yMoveBottom2*factorBottom2 + yMoveTop*factorTop + yMoveTop2*factorTop2
  41. mad r0.y, v1.y, c0.x, v1.x         ; add factorSelf*yMoveSelf
  42. add r0.y, r0.y, r1.x               ; add left & right factors
  43. add r0.y, r0.y, r1.y               ; add bottom & top factors
  44. ;m4x4 oPos, r0, c4                  ; matrix transformation
  45. m4x4 r3, r0, c4                  ; matrix transformation
  46. mov oPos, r3
  47. ;------------------------------------------------------------------------------
  48. ; Texture coordinates
  49. ;------------------------------------------------------------------------------
  50. ; Calculate tex coords for pass 0
  51. ; (use texture matrix)
  52. mov r4.xy, v0.zw
  53. mov r4.zw, c0.xw
  54. dp4 oT0.x,  r4, c8
  55. dp4 oT0.y,  r4, c9
  56. ;dp4 oT0.x,  v0.z, c8
  57. ;dp4 oT0.y,  v0.w, c9
  58. ; Create tex coords for pass 1
  59. ; (simple copy)
  60. mov oT1.xy, v0.zw
  61. ;------------------------------------------------------------------------------
  62. ; Fog calculation
  63. ;------------------------------------------------------------------------------
  64. ;mov oFog.x, r3.z
  65. ;mov oFog.x, c0.w