PostShadow.vert 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. uniform mat4 m_LightViewProjectionMatrix0;
  2. uniform mat4 m_LightViewProjectionMatrix1;
  3. uniform mat4 m_LightViewProjectionMatrix2;
  4. uniform mat4 m_LightViewProjectionMatrix3;
  5. uniform mat4 g_WorldViewProjectionMatrix;
  6. uniform mat4 g_WorldMatrix;
  7. uniform mat4 g_ViewMatrix;
  8. uniform vec3 m_LightPos;
  9. varying vec4 projCoord0;
  10. varying vec4 projCoord1;
  11. varying vec4 projCoord2;
  12. varying vec4 projCoord3;
  13. #ifdef POINTLIGHT
  14. uniform mat4 m_LightViewProjectionMatrix4;
  15. uniform mat4 m_LightViewProjectionMatrix5;
  16. varying vec4 projCoord4;
  17. varying vec4 projCoord5;
  18. varying vec4 worldPos;
  19. #endif
  20. #ifdef PSSM
  21. varying float shadowPosition;
  22. #endif
  23. varying vec3 lightVec;
  24. varying vec2 texCoord;
  25. attribute vec3 inPosition;
  26. #ifdef DISCARD_ALPHA
  27. attribute vec2 inTexCoord;
  28. #endif
  29. const mat4 biasMat = mat4(0.5, 0.0, 0.0, 0.0,
  30. 0.0, 0.5, 0.0, 0.0,
  31. 0.0, 0.0, 0.5, 0.0,
  32. 0.5, 0.5, 0.5, 1.0);
  33. void main(){
  34. gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition, 1.0);
  35. #ifndef POINTLIGHT
  36. #ifdef PSSM
  37. shadowPosition = gl_Position.z;
  38. #endif
  39. vec4 worldPos=vec4(0.0);
  40. #endif
  41. // get the vertex in world space
  42. worldPos = g_WorldMatrix * vec4(inPosition, 1.0);
  43. #ifdef DISCARD_ALPHA
  44. texCoord = inTexCoord;
  45. #endif
  46. // populate the light view matrices array and convert vertex to light viewProj space
  47. projCoord0 = biasMat * m_LightViewProjectionMatrix0 * worldPos;
  48. projCoord1 = biasMat * m_LightViewProjectionMatrix1 * worldPos;
  49. projCoord2 = biasMat * m_LightViewProjectionMatrix2 * worldPos;
  50. projCoord3 = biasMat * m_LightViewProjectionMatrix3 * worldPos;
  51. #ifdef POINTLIGHT
  52. projCoord4 = biasMat * m_LightViewProjectionMatrix4 * worldPos;
  53. projCoord5 = biasMat * m_LightViewProjectionMatrix5 * worldPos;
  54. #else
  55. vec4 vLightPos = g_ViewMatrix * vec4(m_LightPos,1.0);
  56. vec4 vPos = g_ViewMatrix * worldPos;
  57. lightVec = vLightPos.xyz - vPos.xyz;
  58. #endif
  59. }