PostShadowPSSM.vert 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. varying vec4 projCoord0;
  8. varying vec4 projCoord1;
  9. varying vec4 projCoord2;
  10. varying vec4 projCoord3;
  11. #ifdef POINTLIGHT
  12. uniform mat4 m_LightViewProjectionMatrix4;
  13. uniform mat4 m_LightViewProjectionMatrix5;
  14. varying vec4 projCoord4;
  15. varying vec4 projCoord5;
  16. varying vec4 worldPos;
  17. #endif
  18. #ifdef PSSM
  19. varying float shadowPosition;
  20. #endif
  21. varying vec2 texCoord;
  22. attribute vec3 inPosition;
  23. #ifdef DISCARD_ALPHA
  24. attribute vec2 inTexCoord;
  25. #endif
  26. const mat4 biasMat = mat4(0.5, 0.0, 0.0, 0.0,
  27. 0.0, 0.5, 0.0, 0.0,
  28. 0.0, 0.0, 0.5, 0.0,
  29. 0.5, 0.5, 0.5, 1.0);
  30. void main(){
  31. gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition, 1.0);
  32. #ifdef PSSM
  33. shadowPosition = gl_Position.z;
  34. vec4 worldPos=vec4(0.0);
  35. #endif
  36. // get the vertex in world space
  37. worldPos = g_WorldMatrix * vec4(inPosition, 1.0);
  38. #ifdef DISCARD_ALPHA
  39. texCoord = inTexCoord;
  40. #endif
  41. // populate the light view matrices array and convert vertex to light viewProj space
  42. projCoord0 = biasMat * m_LightViewProjectionMatrix0 * worldPos;
  43. projCoord1 = biasMat * m_LightViewProjectionMatrix1 * worldPos;
  44. projCoord2 = biasMat * m_LightViewProjectionMatrix2 * worldPos;
  45. projCoord3 = biasMat * m_LightViewProjectionMatrix3 * worldPos;
  46. #ifdef POINTLIGHT
  47. projCoord4 = biasMat * m_LightViewProjectionMatrix4 * worldPos;
  48. projCoord5 = biasMat * m_LightViewProjectionMatrix5 * worldPos;
  49. #endif
  50. }