#include "/lib/settings.glsl"
#include "/lib/util.glsl"
#include "/lib/dither.glsl"

uniform sampler2D depthtex0;
uniform sampler2D dhDepthTex;

uniform sampler2D colortex1;
uniform sampler2D colortex2;

uniform vec2 texelSize;

float interleaved_gradientNoise(){
	vec2 coord = gl_FragCoord.xy;
	float noise = fract(52.9829189 * fract((coord.x * 0.06711056) + (coord.y * 0.00583715)));
	return noise;
}

//////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN//////////////////////////////

#if RESOURCEPACK_SKY != 0
	/* RENDERTARGETS:1,2 */
#endif

void main() {
	vec2 texcoord = gl_FragCoord.xy * texelSize;

	gl_FragData[0] = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy),0);

	if(
		texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x < 1.0 	
		#ifdef DISTANT_HORIZONS
			|| texelFetch2D(dhDepthTex, ivec2(gl_FragCoord.xy), 0).x < 1.0
		#endif
 	) {
 		// doing this for precision reasons, DH does NOT like depth => 1.0
	}else{
		vec3 skyColor = texelFetch2D(colortex2, ivec2(gl_FragCoord.xy),0).rgb;
		skyColor.rgb = max(skyColor.rgb - skyColor.rgb * interleaved_gradientNoise()*0.05, 0.0);
		gl_FragData[0].rgb = skyColor/50.0;
		gl_FragData[0].a = 0.0;
	}
	gl_FragData[1] = vec4(0,0,0,0);
}