Add fog to Single-Pass lighting.
This commit is contained in:
parent
4f47e5602b
commit
1116df31c9
@ -167,6 +167,12 @@ MaterialDef Phong Lighting {
|
|||||||
INSTANCING : UseInstancing
|
INSTANCING : UseInstancing
|
||||||
NUM_MORPH_TARGETS: NumberOfMorphTargets
|
NUM_MORPH_TARGETS: NumberOfMorphTargets
|
||||||
NUM_TARGETS_BUFFERS: NumberOfTargetsBuffers
|
NUM_TARGETS_BUFFERS: NumberOfTargetsBuffers
|
||||||
|
|
||||||
|
// fog - jayfella
|
||||||
|
USE_FOG : UseFog
|
||||||
|
FOG_LINEAR : LinearFog
|
||||||
|
FOG_EXP : ExpFog
|
||||||
|
FOG_EXPSQ : ExpSqFog
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,26 @@
|
|||||||
#import "Common/ShaderLib/Lighting.glsllib"
|
#import "Common/ShaderLib/Lighting.glsllib"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// fog - jayfella
|
||||||
|
#ifdef USE_FOG
|
||||||
|
#import "Common/ShaderLib/MaterialFog.glsllib"
|
||||||
|
varying float fog_distance;
|
||||||
|
uniform vec4 m_FogColor;
|
||||||
|
|
||||||
|
#ifdef FOG_LINEAR
|
||||||
|
uniform vec2 m_LinearFog;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FOG_EXP
|
||||||
|
uniform float m_ExpFog;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FOG_EXPSQ
|
||||||
|
uniform float m_ExpSqFog;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // end fog
|
||||||
|
|
||||||
varying vec2 texCoord;
|
varying vec2 texCoord;
|
||||||
#ifdef SEPARATE_TEXCOORD
|
#ifdef SEPARATE_TEXCOORD
|
||||||
varying vec2 texCoord2;
|
varying vec2 texCoord2;
|
||||||
@ -226,5 +246,20 @@ void main(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// add fog after the lighting because shadows will cause the fog to darken
|
||||||
|
// which just results in the geometry looking like it's changed color
|
||||||
|
#ifdef USE_FOG
|
||||||
|
#ifdef FOG_LINEAR
|
||||||
|
gl_FragColor = getFogLinear(gl_FragColor, m_FogColor, m_LinearFog.x, m_LinearFog.y, fog_distance);
|
||||||
|
#endif
|
||||||
|
#ifdef FOG_EXP
|
||||||
|
gl_FragColor = getFogExp(gl_FragColor, m_FogColor, m_ExpFog, fog_distance);
|
||||||
|
#endif
|
||||||
|
#ifdef FOG_EXPSQ
|
||||||
|
gl_FragColor = getFogExpSquare(gl_FragColor, m_FogColor, m_ExpSqFog, fog_distance);
|
||||||
|
#endif
|
||||||
|
#endif // end fog
|
||||||
|
|
||||||
gl_FragColor.a = alpha;
|
gl_FragColor.a = alpha;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,11 @@
|
|||||||
#import "Common/ShaderLib/BlinnPhongLighting.glsllib"
|
#import "Common/ShaderLib/BlinnPhongLighting.glsllib"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// fog - jayfella
|
||||||
|
#ifdef USE_FOG
|
||||||
|
varying float fog_distance;
|
||||||
|
uniform vec3 g_CameraPosition;
|
||||||
|
#endif
|
||||||
|
|
||||||
uniform vec4 m_Ambient;
|
uniform vec4 m_Ambient;
|
||||||
uniform vec4 m_Diffuse;
|
uniform vec4 m_Diffuse;
|
||||||
@ -188,4 +193,8 @@ void main(){
|
|||||||
#ifdef USE_REFLECTION
|
#ifdef USE_REFLECTION
|
||||||
computeRef(modelSpacePos);
|
computeRef(modelSpacePos);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_FOG
|
||||||
|
fog_distance = distance(g_CameraPosition, (g_WorldMatrix * modelSpacePos).xyz);
|
||||||
|
#endif
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user