gradient.vertex.fx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. precision highp float;
  2. // Gradient variables
  3. varying vec2 vUV;
  4. // Attributes
  5. attribute vec3 position;
  6. #ifdef NORMAL
  7. attribute vec3 normal;
  8. #endif
  9. #ifdef UV1
  10. attribute vec2 uv;
  11. #endif
  12. #ifdef UV2
  13. attribute vec2 uv2;
  14. #endif
  15. #ifdef VERTEXCOLOR
  16. attribute vec4 color;
  17. #endif
  18. #ifdef BONES
  19. attribute vec4 matricesIndices;
  20. attribute vec4 matricesWeights;
  21. #endif
  22. // Uniforms
  23. #ifdef INSTANCES
  24. attribute vec4 world0;
  25. attribute vec4 world1;
  26. attribute vec4 world2;
  27. attribute vec4 world3;
  28. #else
  29. uniform mat4 world;
  30. #endif
  31. uniform mat4 view;
  32. uniform mat4 viewProjection;
  33. #ifdef DIFFUSE
  34. varying vec2 vDiffuseUV;
  35. uniform mat4 diffuseMatrix;
  36. uniform vec2 vDiffuseInfos;
  37. #endif
  38. #ifdef BONES
  39. uniform mat4 mBones[BonesPerMesh];
  40. #endif
  41. #ifdef POINTSIZE
  42. uniform float pointSize;
  43. #endif
  44. // Output
  45. varying vec3 vPositionW;
  46. #ifdef NORMAL
  47. varying vec3 vNormalW;
  48. #endif
  49. #ifdef VERTEXCOLOR
  50. varying vec4 vColor;
  51. #endif
  52. #ifdef CLIPPLANE
  53. uniform vec4 vClipPlane;
  54. varying float fClipDistance;
  55. #endif
  56. #ifdef FOG
  57. varying float fFogDistance;
  58. #endif
  59. #ifdef SHADOWS
  60. #if defined(SPOTLIGHT0) || defined(DIRLIGHT0)
  61. uniform mat4 lightMatrix0;
  62. varying vec4 vPositionFromLight0;
  63. #endif
  64. #if defined(SPOTLIGHT1) || defined(DIRLIGHT1)
  65. uniform mat4 lightMatrix1;
  66. varying vec4 vPositionFromLight1;
  67. #endif
  68. #if defined(SPOTLIGHT2) || defined(DIRLIGHT2)
  69. uniform mat4 lightMatrix2;
  70. varying vec4 vPositionFromLight2;
  71. #endif
  72. #if defined(SPOTLIGHT3) || defined(DIRLIGHT3)
  73. uniform mat4 lightMatrix3;
  74. varying vec4 vPositionFromLight3;
  75. #endif
  76. #endif
  77. void main(void) {
  78. mat4 finalWorld;
  79. #ifdef INSTANCES
  80. finalWorld = mat4(world0, world1, world2, world3);
  81. #else
  82. finalWorld = world;
  83. #endif
  84. #ifdef BONES
  85. mat4 m0 = mBones[int(matricesIndices.x)] * matricesWeights.x;
  86. mat4 m1 = mBones[int(matricesIndices.y)] * matricesWeights.y;
  87. mat4 m2 = mBones[int(matricesIndices.z)] * matricesWeights.z;
  88. #ifdef BONES4
  89. mat4 m3 = mBones[int(matricesIndices.w)] * matricesWeights.w;
  90. finalWorld = finalWorld * (m0 + m1 + m2 + m3);
  91. #else
  92. finalWorld = finalWorld * (m0 + m1 + m2);
  93. #endif
  94. #endif
  95. gl_Position = viewProjection * finalWorld * vec4(position, 1.0);
  96. vec4 worldPos = finalWorld * vec4(position, 1.0);
  97. vPositionW = vec3(worldPos);
  98. #ifdef NORMAL
  99. vNormalW = normalize(vec3(finalWorld * vec4(normal, 0.0)));
  100. #endif
  101. // Texture coordinates
  102. #ifndef UV1
  103. vec2 uv = vec2(0., 0.);
  104. #else
  105. vUV = uv;
  106. #endif
  107. #ifndef UV2
  108. vec2 uv2 = vec2(0., 0.);
  109. #endif
  110. #ifdef DIFFUSE
  111. if (vDiffuseInfos.x == 0.)
  112. {
  113. vDiffuseUV = vec2(diffuseMatrix * vec4(uv, 1.0, 0.0));
  114. }
  115. else
  116. {
  117. vDiffuseUV = vec2(diffuseMatrix * vec4(uv2, 1.0, 0.0));
  118. }
  119. #endif
  120. // Clip plane
  121. #ifdef CLIPPLANE
  122. fClipDistance = dot(worldPos, vClipPlane);
  123. #endif
  124. // Fog
  125. #ifdef FOG
  126. fFogDistance = (view * worldPos).z;
  127. #endif
  128. // Shadows
  129. #ifdef SHADOWS
  130. #if defined(SPOTLIGHT0) || defined(DIRLIGHT0)
  131. vPositionFromLight0 = lightMatrix0 * worldPos;
  132. #endif
  133. #if defined(SPOTLIGHT1) || defined(DIRLIGHT1)
  134. vPositionFromLight1 = lightMatrix1 * worldPos;
  135. #endif
  136. #if defined(SPOTLIGHT2) || defined(DIRLIGHT2)
  137. vPositionFromLight2 = lightMatrix2 * worldPos;
  138. #endif
  139. #if defined(SPOTLIGHT3) || defined(DIRLIGHT3)
  140. vPositionFromLight3 = lightMatrix3 * worldPos;
  141. #endif
  142. #endif
  143. // Vertex color
  144. #ifdef VERTEXCOLOR
  145. vColor = color;
  146. #endif
  147. // Point size
  148. #ifdef POINTSIZE
  149. gl_PointSize = pointSize;
  150. #endif
  151. }