// __multiversion__ // This signals the loading code to prepend either #version 100 or #version 300 es as apropriate. // To use centroid sampling we need to have version 300 es shaders, which requires changing: // attribute to in // varying to out when in vertex shaders or in when in fragment shaders // defining an out vec4 FragColor and replacing uses of gl_FragColor with FragColor // texture2D to texture #if __VERSION__ >= 300 // version 300 code #ifdef MSAA_FRAMEBUFFER_ENABLED #define _centroid centroid #else #define _centroid #endif #ifndef BYPASS_PIXEL_SHADER #if defined(TEXEL_AA) && defined(TEXEL_AA_FEATURE) _centroid in highp vec2 uv0; _centroid in highp vec2 uv1; #else _centroid in vec2 uv0; _centroid in vec2 uv1; #endif #endif #define varying in #define texture2D texture out vec4 FragColor; #define gl_FragColor FragColor #else // version 100 code #ifndef BYPASS_PIXEL_SHADER varying vec2 uv0; varying vec2 uv1; #endif #endif varying vec4 color; #ifdef FOG varying vec4 fogColor; #endif #ifdef NEAR_WATER varying float cameraDist; #endif #include "shaders/util.h" uniform sampler2D TEXTURE_0; uniform sampler2D TEXTURE_1; uniform sampler2D TEXTURE_2; void main() { vec4 diffuse = texture2D( TEXTURE_0, uv0 ); vec4 inColor = color; #ifdef SEASONS_FAR diffuse.a = 1.0; inColor.b = 1.0; #endif if(diffuse.a <= 0.0) discard; diffuse = diffuse * texture2D( TEXTURE_1, uv1 ); #ifndef SEASONS diffuse.rgb *= mix(vec3(1.0, 1.0, 1.0), inColor.rgb, diffuse.a); diffuse.a = 1.0; #else vec2 uv = inColor.xy; inColor.b = mix(0.0, color.b, diffuse.a); diffuse.rgb *= mix(vec3(1.0,1.0,1.0), texture2D( TEXTURE_2, uv).rgb*2.0, inColor.b); diffuse.rgb *= inColor.aaa; diffuse.a = 1.0; #endif #ifdef FOG diffuse.rgb = mix( diffuse.rgb, fogColor.rgb, fogColor.a ); #endif gl_FragColor = diffuse; }