123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #version 100
- precision mediump float;
- /* Uniforms */
- uniform int uTextureUsage0;
- uniform sampler2D uTextureUnit0;
- uniform int uBlendType;
- uniform int uFogEnable;
- uniform int uFogType;
- uniform vec4 uFogColor;
- uniform float uFogStart;
- uniform float uFogEnd;
- uniform float uFogDensity;
- /* Varyings */
- varying vec2 vTextureCoord0;
- varying vec4 vVertexColor;
- varying float vFogCoord;
- float computeFog()
- {
- const float LOG2 = 1.442695;
- float FogFactor = 0.0;
- if (uFogType == 0) // Exp
- {
- FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);
- }
- else if (uFogType == 1) // Linear
- {
- float Scale = 1.0 / (uFogEnd - uFogStart);
- FogFactor = (uFogEnd - vFogCoord) * Scale;
- }
- else if (uFogType == 2) // Exp2
- {
- FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);
- }
- FogFactor = clamp(FogFactor, 0.0, 1.0);
- return FogFactor;
- }
- void main()
- {
- vec4 Color0 = vVertexColor;
- vec4 Color1 = vec4(1.0, 1.0, 1.0, 1.0);
- if (bool(uTextureUsage0))
- Color1 = texture2D(uTextureUnit0, vTextureCoord0);
- vec4 FinalColor = Color0 * Color1;
- if (uBlendType == 1)
- {
- FinalColor.w = Color0.w;
- }
- else if (uBlendType == 2)
- {
- FinalColor.w = Color1.w;
- }
- if (bool(uFogEnable))
- {
- float FogFactor = computeFog();
- vec4 FogColor = uFogColor;
- FogColor.a = 1.0;
- FinalColor = mix(FogColor, FinalColor, FogFactor);
- }
- gl_FragColor = FinalColor;
- }
|