| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "Uniforms.glsl"
- #include "Samplers.glsl"
- #include "Transform.glsl"
- #include "ScreenPos.glsl"
- #include "Fog.glsl"
- varying vec2 vTexCoord;
- varying vec4 vWorldPos;
- #ifdef VERTEXCOLOR
- varying vec4 vColor;
- #endif
- void VS()
- {
- mat4 modelMatrix = iModelMatrix;
- vec3 worldPos = GetWorldPos(modelMatrix);
- gl_Position = GetClipPos(worldPos);
- vTexCoord = GetTexCoord(iTexCoord);
- vWorldPos = vec4(worldPos, GetDepth(gl_Position));
- #ifdef VERTEXCOLOR
- vColor = iColor;
- #endif
- }
- void PS()
- {
- // Get material diffuse albedo
- #ifdef DIFFMAP
- vec4 diffColor = cMatDiffColor * texture2D(sDiffMap, vTexCoord);
- #ifdef ALPHAMASK
- if (diffColor.a < 0.5)
- discard;
- #endif
- #else
- vec4 diffColor = cMatDiffColor;
- #endif
- #ifdef VERTEXCOLOR
- diffColor *= vColor;
- #endif
- // Get fog factor
- #ifdef HEIGHTFOG
- float fogFactor = GetHeightFogFactor(vWorldPos.w, vWorldPos.y);
- #else
- float fogFactor = GetFogFactor(vWorldPos.w);
- #endif
- #if defined(PREPASS)
- // Fill light pre-pass G-Buffer
- gl_FragData[0] = vec4(0.5, 0.5, 0.5, 1.0);
- gl_FragData[1] = vec4(EncodeDepth(vWorldPos.w), 0.0);
- #elif defined(DEFERRED)
- gl_FragData[0] = vec4(GetFog(diffColor.rgb, fogFactor), diffColor.a);
- gl_FragData[1] = vec4(0.0, 0.0, 0.0, 0.0);
- gl_FragData[2] = vec4(0.5, 0.5, 0.5, 1.0);
- gl_FragData[3] = vec4(EncodeDepth(vWorldPos.w), 0.0);
- #else
- gl_FragColor = vec4(GetFog(diffColor.rgb, fogFactor), diffColor.a);
- #endif
- }
|