| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #import "Common/ShaderLib/Skinning.glsllib"
- uniform mat4 m_LightViewProjectionMatrix0;
- uniform mat4 m_LightViewProjectionMatrix1;
- uniform mat4 m_LightViewProjectionMatrix2;
- uniform mat4 m_LightViewProjectionMatrix3;
- uniform mat4 g_WorldViewProjectionMatrix;
- uniform mat4 g_WorldMatrix;
- uniform mat4 g_ViewMatrix;
- uniform vec3 m_LightPos;
- varying vec4 projCoord0;
- varying vec4 projCoord1;
- varying vec4 projCoord2;
- varying vec4 projCoord3;
- #ifdef POINTLIGHT
- uniform mat4 m_LightViewProjectionMatrix4;
- uniform mat4 m_LightViewProjectionMatrix5;
- varying vec4 projCoord4;
- varying vec4 projCoord5;
- varying vec4 worldPos;
- #else
- #ifndef PSSM
- uniform vec3 m_LightPos;
- uniform vec3 m_LightDir;
- varying float lightDot;
- #endif
- #endif
- #ifdef PSSM
- varying float shadowPosition;
- #endif
- varying vec3 lightVec;
- varying vec2 texCoord;
- attribute vec3 inPosition;
- #ifdef DISCARD_ALPHA
- attribute vec2 inTexCoord;
- #endif
- const mat4 biasMat = mat4(0.5, 0.0, 0.0, 0.0,
- 0.0, 0.5, 0.0, 0.0,
- 0.0, 0.0, 0.5, 0.0,
- 0.5, 0.5, 0.5, 1.0);
- void main(){
- vec4 modelSpacePos = vec4(inPosition, 1.0);
-
- #ifdef NUM_BONES
- Skinning_Compute(modelSpacePos);
- #endif
- gl_Position = g_WorldViewProjectionMatrix * modelSpacePos;
- #ifndef POINTLIGHT
- #ifdef PSSM
- shadowPosition = gl_Position.z;
- #endif
- vec4 worldPos=vec4(0.0);
- #endif
- // get the vertex in world space
- worldPos = g_WorldMatrix * modelSpacePos;
- #ifdef DISCARD_ALPHA
- texCoord = inTexCoord;
- #endif
- // populate the light view matrices array and convert vertex to light viewProj space
- projCoord0 = biasMat * m_LightViewProjectionMatrix0 * worldPos;
- projCoord1 = biasMat * m_LightViewProjectionMatrix1 * worldPos;
- projCoord2 = biasMat * m_LightViewProjectionMatrix2 * worldPos;
- projCoord3 = biasMat * m_LightViewProjectionMatrix3 * worldPos;
- #ifdef POINTLIGHT
- projCoord4 = biasMat * m_LightViewProjectionMatrix4 * worldPos;
- projCoord5 = biasMat * m_LightViewProjectionMatrix5 * worldPos;
- #else
- #ifndef PSSM
- vec3 lightDir = worldPos.xyz - m_LightPos;
- lightDot = dot(m_LightDir,lightDir);
- #endif
- #endif
- }
|