/* Complementary Shaders by EminGT, based on BSL Shaders by Capt Tatsu */ //Common// #include "/lib/common.glsl" //Varyings// varying vec2 texCoord; //////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// #ifdef FSH //Uniforms// uniform sampler2D colortex1; uniform float viewWidth, viewHeight; #if THE_FORBIDDEN_OPTION > 0 uniform float frameTimeCounter; #endif #if defined GRAY_START || (defined WATERMARK && WATERMARK_DURATION < 900) uniform float starter; #endif #ifdef WATERMARK uniform sampler2D depthtex2; #endif //Optifine Constants// /* const int colortex0Format = R11F_G11F_B10F; //main const int colortex1Format = RGB8; //raw albedo & raw translucent & water mask & vl & bloom const int colortex2Format = RGBA16; //temporal stuff const int colortex3Format = RGB8; //specular & skymapMod const int gaux1Format = R8; //half-res ao const int gaux2Format = RGBA8; //reflection const int gaux3Format = RG16; //normals const int gaux4Format = RGB8; //taa mask & galaxy image #ifdef COLORED_LIGHT const int colortex8Format = RGB16; const int colortex9Format = RGB16; #endif */ const bool shadowHardwareFiltering = true; const float shadowDistanceRenderMul = 1.0; const float entityShadowDistanceMul = 0.125; // Iris devs may bless us with their power const int noiseTextureResolution = 512; const float drynessHalflife = 300.0; const float wetnessHalflife = 300.0; const float ambientOcclusionLevel = 1.0; //Common Functions// #if SHARPEN > 0 vec2 sharpenOffsets[4] = vec2[4]( vec2( 1.0, 0.0), vec2( 0.0, 1.0), vec2(-1.0, 0.0), vec2( 0.0, -1.0) ); void SharpenFilter(inout vec3 color, vec2 texCoord2) { float mult = SHARPEN * 0.025; vec2 view = 1.0 / vec2(viewWidth, viewHeight); color *= SHARPEN * 0.1 + 1.0; for(int i = 0; i < 4; i++) { vec2 offset = sharpenOffsets[i] * view; color -= texture2DLod(colortex1, texCoord2 + offset, 0).rgb * mult; } } #endif #ifdef GRAY_START float GetLuminance(vec3 color) { return dot(color, vec3(0.299, 0.587, 0.114)); } #endif //Program// void main() { #ifndef OVERDRAW vec2 texCoord2 = texCoord; #else vec2 texCoord2 = (texCoord - vec2(0.5)) * (2.0 / 3.0) + vec2(0.5); #endif /* vec2 wh = vec2(viewWidth, viewHeight); wh /= 32.0; texCoord2 = floor(texCoord2 * wh) / wh; */ #if CHROMATIC_ABERRATION < 1 vec3 color = texture2DLod(colortex1, texCoord2, 0).rgb; #else float midDistX = texCoord2.x - 0.5; float midDistY = texCoord2.y - 0.5; vec2 scale = vec2(1.0, viewHeight / viewWidth); vec2 aberration = vec2(midDistX, midDistY) * (2.0 / vec2(viewWidth, viewHeight)) * scale * CHROMATIC_ABERRATION; vec3 color = vec3(texture2DLod(colortex1, texCoord2 + aberration, 0).r, texture2DLod(colortex1, texCoord2, 0).g, texture2DLod(colortex1, texCoord2 - aberration, 0).b); #endif #if SHARPEN > 0 SharpenFilter(color, texCoord2); #endif #if THE_FORBIDDEN_OPTION > 0 #if THE_FORBIDDEN_OPTION < 3 float fractTime = fract(frameTimeCounter*0.01); color = pow(vec3(1.0) - color, vec3(5.0)); color = vec3(color.r + color.g + color.b)*0.5; color.g = 0.0; if (fractTime < 0.5) color.b *= fractTime, color.r *= 0.5 - fractTime; if (fractTime >= 0.5) color.b *= 1 - fractTime, color.r *= fractTime - 0.5; color = pow(color, vec3(1.8))*8; #else float colorM = dot(color, vec3(0.299, 0.587, 0.114)); color = vec3(colorM); #endif #endif #ifdef WATERMARK #if WATERMARK_DURATION < 900 if (starter < 0.99) { #endif vec2 textCoord = vec2(texCoord.x, 1.0 - texCoord.y); vec4 compText = texture2D(depthtex2, textCoord); //compText.rgb = pow(compText.rgb, vec3(2.2)); #if WATERMARK_DURATION < 900 float starterFactor = 1.0 - 2.0 * abs(starter - 0.5); starterFactor = max(starterFactor - 0.333333, 0.0) * 3.0; starterFactor = smoothstep(0.0, 1.0, starterFactor); #else float starterFactor = 1.0; #endif color.rgb = mix(color.rgb, compText.rgb, compText.a * starterFactor); #if WATERMARK_DURATION < 900 } #endif #endif #ifdef GRAY_START float animation = min(starter, 0.1) * 10.0; vec3 grayStart = vec3(GetLuminance(color.rgb)); color.rgb = mix(grayStart, color.rgb, animation); #endif gl_FragColor = vec4(color, 1.0); } #endif //////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// #ifdef VSH //Program// void main() { texCoord = gl_MultiTexCoord0.xy; gl_Position = ftransform(); } #endif