PreShadow & PostShadow Support for PBRLighting.j3md (#1265)
* Update PBRLighting.j3md * Create PreShadowPBR.frag * Create PostShadowPBR.fragfix-openal-soft-deadlink
parent
ffd9cfcf25
commit
233bc6f0da
@ -0,0 +1,89 @@ |
|||||||
|
|
||||||
|
#import "Common/ShaderLib/GLSLCompat.glsllib" |
||||||
|
#import "Common/ShaderLib/Shadows.glsllib" |
||||||
|
#if defined(PSSM) || defined(FADE) |
||||||
|
varying float shadowPosition; |
||||||
|
#endif |
||||||
|
|
||||||
|
varying vec4 projCoord0; |
||||||
|
varying vec4 projCoord1; |
||||||
|
varying vec4 projCoord2; |
||||||
|
varying vec4 projCoord3; |
||||||
|
#ifndef BACKFACE_SHADOWS |
||||||
|
varying float nDotL; |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef POINTLIGHT |
||||||
|
varying vec4 projCoord4; |
||||||
|
varying vec4 projCoord5; |
||||||
|
uniform vec3 m_LightPos; |
||||||
|
varying vec4 worldPos; |
||||||
|
#else |
||||||
|
#ifndef PSSM |
||||||
|
varying float lightDot; |
||||||
|
#endif |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef DISCARD_ALPHA |
||||||
|
#ifdef COLOR_MAP |
||||||
|
uniform sampler2D m_ColorMap; |
||||||
|
#else |
||||||
|
uniform sampler2D m_BaseColorMap; |
||||||
|
#endif |
||||||
|
uniform float m_AlphaDiscardThreshold; |
||||||
|
varying vec2 texCoord; |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef FADE |
||||||
|
uniform vec2 m_FadeInfo; |
||||||
|
#endif |
||||||
|
|
||||||
|
void main(){ |
||||||
|
|
||||||
|
#ifdef DISCARD_ALPHA |
||||||
|
#ifdef COLOR_MAP |
||||||
|
float alpha = texture2D(m_ColorMap,texCoord).a; |
||||||
|
#else |
||||||
|
float alpha = texture2D(m_BaseColorMap,texCoord).a; |
||||||
|
#endif |
||||||
|
if(alpha<=m_AlphaDiscardThreshold){ |
||||||
|
discard; |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifndef BACKFACE_SHADOWS |
||||||
|
if(nDotL > 0.0){ |
||||||
|
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 |
||||||
|
if(lightDot < 0.0){ |
||||||
|
gl_FragColor = vec4(1.0); |
||||||
|
return; |
||||||
|
} |
||||||
|
shadow = getSpotLightShadows(m_ShadowMap0,projCoord0); |
||||||
|
#endif |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef FADE |
||||||
|
shadow = max(0.0, mix(shadow, 1.0, max(0.0, (shadowPosition - m_FadeInfo.x) * m_FadeInfo.y))); |
||||||
|
#endif |
||||||
|
|
||||||
|
shadow = shadow * m_ShadowIntensity + (1.0 - m_ShadowIntensity); |
||||||
|
gl_FragColor = vec4(shadow, shadow, shadow, 1.0); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
#import "Common/ShaderLib/GLSLCompat.glsllib" |
||||||
|
varying vec2 texCoord; |
||||||
|
|
||||||
|
#ifdef DISCARD_ALPHA |
||||||
|
#ifdef COLOR_MAP |
||||||
|
uniform sampler2D m_ColorMap; |
||||||
|
#else |
||||||
|
uniform sampler2D m_BaseColorMap; |
||||||
|
#endif |
||||||
|
uniform float m_AlphaDiscardThreshold; |
||||||
|
#endif |
||||||
|
|
||||||
|
|
||||||
|
void main(){ |
||||||
|
#ifdef DISCARD_ALPHA |
||||||
|
#ifdef COLOR_MAP |
||||||
|
if (texture2D(m_ColorMap, texCoord).a <= m_AlphaDiscardThreshold){ |
||||||
|
discard; |
||||||
|
} |
||||||
|
#else |
||||||
|
if (texture2D(m_BaseColorMap, texCoord).a <= m_AlphaDiscardThreshold){ |
||||||
|
discard; |
||||||
|
} |
||||||
|
#endif |
||||||
|
#endif |
||||||
|
|
||||||
|
gl_FragColor = vec4(1.0); |
||||||
|
} |
Loading…
Reference in new issue