PreShadow & PostShadow Support for PBRLighting.j3md (#1265)
* Update PBRLighting.j3md * Create PreShadowPBR.frag * Create PostShadowPBR.frag
This commit is contained in:
parent
55a36abe9d
commit
753c3cc173
@ -168,7 +168,7 @@ MaterialDef PBR Lighting {
|
|||||||
Technique PreShadow {
|
Technique PreShadow {
|
||||||
|
|
||||||
VertexShader GLSL300 GLSL100 GLSL150 : Common/MatDefs/Shadow/PreShadow.vert
|
VertexShader GLSL300 GLSL100 GLSL150 : Common/MatDefs/Shadow/PreShadow.vert
|
||||||
FragmentShader GLSL300 GLSL100 GLSL150 : Common/MatDefs/Shadow/PreShadow.frag
|
FragmentShader GLSL300 GLSL100 GLSL150 : Common/MatDefs/Shadow/PreShadowPBR.frag
|
||||||
|
|
||||||
WorldParameters {
|
WorldParameters {
|
||||||
WorldViewProjectionMatrix
|
WorldViewProjectionMatrix
|
||||||
@ -198,7 +198,7 @@ MaterialDef PBR Lighting {
|
|||||||
|
|
||||||
Technique PostShadow{
|
Technique PostShadow{
|
||||||
VertexShader GLSL310 GLSL300 GLSL150: Common/MatDefs/Shadow/PostShadow.vert
|
VertexShader GLSL310 GLSL300 GLSL150: Common/MatDefs/Shadow/PostShadow.vert
|
||||||
FragmentShader GLSL310 GLSL300 GLSL150: Common/MatDefs/Shadow/PostShadow.frag
|
FragmentShader GLSL310 GLSL300 GLSL150: Common/MatDefs/Shadow/PostShadowPBR.frag
|
||||||
|
|
||||||
WorldParameters {
|
WorldParameters {
|
||||||
WorldViewProjectionMatrix
|
WorldViewProjectionMatrix
|
||||||
@ -233,7 +233,7 @@ MaterialDef PBR Lighting {
|
|||||||
|
|
||||||
Technique PostShadow{
|
Technique PostShadow{
|
||||||
VertexShader GLSL100: Common/MatDefs/Shadow/PostShadow.vert
|
VertexShader GLSL100: Common/MatDefs/Shadow/PostShadow.vert
|
||||||
FragmentShader GLSL100: Common/MatDefs/Shadow/PostShadow.frag
|
FragmentShader GLSL100: Common/MatDefs/Shadow/PostShadowPBR.frag
|
||||||
|
|
||||||
WorldParameters {
|
WorldParameters {
|
||||||
WorldViewProjectionMatrix
|
WorldViewProjectionMatrix
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user