Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- #ifdef NUM_LIGHTS
- uniform vec4 m_LightPosition0;
- uniform vec4 m_LightPosition1;
- uniform vec4 m_LightPosition2;
- uniform vec4 m_LightPosition3;
- uniform vec4 m_LightPosition4;
- uniform vec4 m_LightPosition5;
- varying float shadsub0;
- varying float shadsub1;
- varying float shadsub2;
- varying float shadsub3;
- varying float shadsub4;
- varying float shadsub5;
- varying float initMaxss;
- uniform vec3 m_LightPos;
- uniform float m_LightRadius;
- #endif
- out vec4 projCoord0;
- out vec4 projCoord1;
- out vec4 projCoord2;
- out vec4 projCoord3;
- #ifdef POINTLIGHT
- uniform mat4 m_LightViewProjectionMatrix4;
- uniform mat4 m_LightViewProjectionMatrix5;
- out vec4 projCoord4;
- out vec4 projCoord5;
- out vec4 worldPos;
- #else
- #ifndef PSSM
- uniform vec3 m_LightPos;
- uniform vec3 m_LightDir;
- out float lightDot;
- #endif
- #endif
- #ifdef PSSM
- out float shadowPosition;
- #endif
- out vec3 lightVec;
- out vec2 texCoord;
- in vec3 inPosition;
- #ifdef DISCARD_ALPHA
- in 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);
- //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 NUM_LIGHTS
- vec3 lightVector = m_LightPos - worldPos.xyz; //vLightPos.xyz - worldPos.xyz;
- float dist = length(lightVector);
- float lrh = m_LightRadius / 2;
- initMaxss = 0.0;
- if (dist > lrh && lrh > 0)
- {
- dist -= lrh;
- initMaxss = (dist / lrh);
- }
- shadsub0 = -0.55 * length(m_LightPosition0.xyz - worldPos.xyz) * (m_LightPosition0.w / 0.25) + 1.40;
- shadsub1 = -0.55 * length(m_LightPosition1.xyz - worldPos.xyz) * (m_LightPosition1.w / 0.25) + 1.40;
- shadsub2 = -0.55 * length(m_LightPosition2.xyz - worldPos.xyz) * (m_LightPosition2.w / 0.25) + 1.40;
- shadsub3 = -0.55 * length(m_LightPosition3.xyz - worldPos.xyz) * (m_LightPosition3.w / 0.25) + 1.40;
- shadsub4 = -0.55 * length(m_LightPosition4.xyz - worldPos.xyz) * (m_LightPosition4.w / 0.25) + 1.40;
- shadsub5 = -0.55 * length(m_LightPosition5.xyz - worldPos.xyz) * (m_LightPosition5.w / 0.25) + 1.40;
- #endif
- #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
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement