Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "MatDefs/Shadow/ShadowsMS15.glsllib"
- out vec4 outFragColor;
- #ifdef PSSM
- in float shadowPosition;
- #endif
- in vec4 projCoord0;
- in vec4 projCoord1;
- in vec4 projCoord2;
- in vec4 projCoord3;
- #ifdef POINTLIGHT
- in vec4 projCoord4;
- in vec4 projCoord5;
- in vec4 worldPos;
- uniform vec3 m_LightPos;
- uniform float m_LightRadius;
- #endif
- #ifdef DISCARD_ALPHA
- #ifdef COLOR_MAP
- uniform sampler2D m_ColorMap;
- #else
- uniform sampler2D m_DiffuseMap;
- #endif
- uniform float m_AlphaDiscardThreshold;
- varying vec2 texCoord;
- #endif
- #ifdef FADE
- uniform vec2 m_FadeInfo;
- #endif
- #ifdef NUM_LIGHTS
- varying float shadsub0;
- varying float shadsub1;
- varying float shadsub2;
- varying float shadsub3;
- varying float shadsub4;
- varying float shadsub5;
- varying float initMaxss;
- #endif
- void main(){
- #ifdef DISCARD_ALPHA
- #ifdef COLOR_MAP
- float alpha = texture2D(m_ColorMap,texCoord).a;
- #else
- float alpha = texture2D(m_DiffuseMap,texCoord).a;
- #endif
- if(alpha < m_AlphaDiscardThreshold){
- discard;
- }
- #endif
- float shadow = 1.0;
- #ifdef POINTLIGHT
- shadow = getPointLightShadows(worldPos, m_LightPos,
- m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,m_ShadowMap4,m_ShadowMap5,
- projCoord0, projCoord1, projCoord2, projCoord3, projCoord4, projCoord5);
- #else
- #ifdef PSSM
- shadow = getDirectionalLightShadows(m_Splits, shadowPosition,
- m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,
- projCoord0, projCoord1, projCoord2, projCoord3);
- #else
- //spotlight
- shadow = getSpotLightShadows(m_ShadowMap0,projCoord0);
- #endif
- #endif
- #ifdef FADE
- shadow = max(0.0,mix(shadow,1.0,(shadowPosition - m_FadeInfo.x) * m_FadeInfo.y));
- #endif
- #ifdef NUM_LIGHTS
- if (shadow < 1.0)
- {
- vec3 lightVector;
- vec4 lightVectorw;
- vec4 lightPosition;
- float dist;
- //float attenuation;
- float shadsub = 0.0;
- float maxss = initMaxss;
- for (int i = 0; i < NUM_LIGHTS; i++)
- {
- if (maxss >= 1.0) break; // Dont need more loops.
- if (i == 0) { shadsub = shadsub0; }
- else if (i == 1) { shadsub = shadsub1; }
- else if (i == 2) { shadsub = shadsub2; }
- else if (i == 3) { shadsub = shadsub3; }
- else if (i == 4) { shadsub = shadsub4; }
- else if (i == 5) { shadsub = shadsub5; }
- maxss = max(maxss, shadsub);
- }
- maxss = clamp(maxss, 0.0, 1.0);
- shadow += maxss;
- }
- #endif
- shadow = shadow * m_ShadowIntensity + (1.0 - m_ShadowIntensity);
- outFragColor = vec4(shadow, shadow, shadow, 1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement