#version 330 #extension GL_ARB_separate_shader_objects : require #include #include #include uniform sampler2D Sampler0; layout(location = 0) in float sphericalVertexDistance; layout(location = 1) in float cylindricalVertexDistance; layout(location = 2) in vec4 vertexColor; layout(location = 3) in vec2 texCoord0; #ifndef OIT_ALPHA_ONLY layout(location = 0) out vec4 fragColor; #endif vec4 calculateFinalColor(vec4 color) { #ifdef OIT_ACCUMULATE color = sampleColorForAccumulation(color); vec4 fogColor = vec4(FogColor.rgb * color.a, FogColor.a); #else vec4 fogColor = FogColor; #endif return apply_fog(color, sphericalVertexDistance, cylindricalVertexDistance, FogEnvironmentalStart, FogEnvironmentalEnd, FogRenderDistanceStart, FogRenderDistanceEnd, fogColor); } void main() { vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; #ifdef ALPHA_CUTOUT if (color.a < ALPHA_CUTOUT) { discard; } #endif #ifdef OIT_ALPHA_ONLY executeAlphaOnlyPhase(gl_FragCoord.z, color.a); #else fragColor = calculateFinalColor(color); #endif }