#if (MC_VERSION >= 11800 || MC_VERSION == 11605) && defined IS_IRIS
	#define MODERN_BACKEND
#endif



// optifine settings (DON'T DELETE)
/*
const int   colortex0Format       = RGB10_A2;
const bool  colortex0Clear        = false;
const int   colortex1Format       = RGB10_A2;
const bool  colortex1Clear        = false;
const int   colortex2Format       = RGBA16;
#ifndef VOXY
	const bool  colortex2Clear    = true;
#endif
const int   colortex3Format       = RGBA16;
const bool  colortex3Clear        = true;
const int   colortex4Format       = R11F_G11F_B10F;
const bool  colortex4Clear        = false;
const int   colortex5Format       = RGB10_A2;
const bool  colortex5Clear        = true;
const int   colortex6Format       = RG16;
const bool  colortex6Clear        = false;
const int   colortex7Format       = R16;
const bool  colortex7Clear        = false;
const int   colortex8Format       = RGBA4;
#if defined VOXY || defined DISTANT_HORIZONS
	const int   colortex9Format   = RGBA8;
	const bool  colortex9Clear    = true;
#endif
// should maybe change this to RG16F:
const int   colortex10Format      = RG8;
const bool  colortex10Clear       = false;
const bool  shadowtex0Clear       = false;
const bool  shadowtex1Clear       = false;
const float wetnessHalflife       = 30.0f;
const float drynessHalflife       = 30.0f;
const float eyeBrightnessHalflife = 4.0f;
const float ambientOcclusionLevel = 1.0;
const float shadowIntervalSize    = 2.0;
#if COLORED_LIGHTING_ENABLED == 1
	const float voxelDistance = 32.0;
#endif
*/





// settings basics

#include "/basics/setting_defines.glsl"

#if STYLE == 0
	#include "/style_vanilla.glsl"
#endif
#if STYLE == 1
	#include "/style_fantasy.glsl"
#endif
#if STYLE == 2
	#include "/style_realistic.glsl"
#endif
#if STYLE == 3
	#include "/style_cartoon.glsl"
#endif





// post-processed definitions

#ifdef NETHER
	#undef DEPTH_SUNRAYS_ENABLED
	#define DEPTH_SUNRAYS_ENABLED 0
	#undef VOL_SUNRAYS_ENABLED
	#define VOL_SUNRAYS_ENABLED 0
	#undef HEIGHT_BASED_WAVING_ENABLED
	#define HEIGHT_BASED_WAVING_ENABLED 0
#endif

#ifdef END
	#undef DEPTH_SUNRAYS_ENABLED
	#define DEPTH_SUNRAYS_ENABLED 0
	#undef VOL_SUNRAYS_ENABLED
	#define VOL_SUNRAYS_ENABLED 0
	#undef WAVING_ENABLED
	#define WAVING_ENABLED 0
	#undef PHYSICALLY_WAVING_WATER_ENABLED
	#define PHYSICALLY_WAVING_WATER_ENABLED 0
	#undef WAVING_WATER_SURFACE_ENABLED
	#define WAVING_WATER_SURFACE_ENABLED 0
#endif

#ifndef OVERWORLD
	#undef REALISTIC_CLOUDS_ENABLED
	#define REALISTIC_CLOUDS_ENABLED 0
#endif

#ifndef NETHER
	#undef NETHER_CLOUDS_ENABLED
	#define NETHER_CLOUDS_ENABLED 0
#endif

#ifndef END
	#undef END_CLOUDS_ENABLED
	#define END_CLOUDS_ENABLED 0
#endif

#if defined OVERWORLD
	#define SHADOWS_TYPE OVERWORLD_SHADOWS_TYPE
#endif
#if defined END
	#define SHADOWS_TYPE END_SHADOWS_TYPE
#endif



#if SHADOWS_TYPE < 2
	#undef VOL_SUNRAYS_ENABLED
	#define VOL_SUNRAYS_ENABLED 0
#endif

#if KUWAHARA_ENABLED == 1
	#undef SHARPENING_ENABLED
	#define SHARPENING_ENABLED 0
#endif

#if SSS_PIXELS != 0
	#undef TAA_ENABLED
	#define TAA_ENABLED 0
	#undef FXAA_ENABLED
	#define FXAA_ENABLED 0
	#undef SHARPENING_ENABLED
	#define SHARPENING_ENABLED 0
#endif

#if TEMPORAL_FILTER_ENABLED == 0
	#undef TAA_ENABLED
	#define TAA_ENABLED 0
#endif

#if PROJECTION_TYPE == 2
	#undef BORDER_FOG_ENABLED
	#define BORDER_FOG_ENABLED 0
#endif

#if PBR_TYPE == 1
	#undef EMISSIVE_TEXTURES_ENABLED
	#define EMISSIVE_TEXTURES_ENABLED 0
#endif

#if CLOUD_COMPATIBILITY == 2
	#undef CLOUD_COMPATIBILITY
	#ifdef MODERN_BACKEND
		#define CLOUD_COMPATIBILITY 0
	#else
		#define CLOUD_COMPATIBILITY 1
	#endif
#endif
#undef CLOUD_COMPATIBILITY
#define CLOUD_COMPATIBILITY 1

#if BSL_MODE == 1
	#undef BLOOM_STYLE
	#undef BLOOM_SIZE
	#undef BLOOM_AMOUNT
	#undef BLOOM_NETHER_AMOUNT
	#undef BLOOM_END_AMOUNT
	#undef VIBRANCE
	#undef SATURATION 0.1
	#define BLOOM_STYLE 2
	#define BLOOM_SIZE 2.0
	#define BLOOM_AMOUNT 2.2
	#define BLOOM_NETHER_AMOUNT 2.2
	#define BLOOM_END_AMOUNT 2.2
	#define BLOOM_LOW_CUTOFF 0.0
	#define BLOOM_HIGH_CUTOFF 0.6
	#define VIBRANCE -0.1
	#define SATURATION 0.1
#endif



#if (defined OVERWORLD && CUSTOM_OVERWORLD_SKYBOX == 1) || (defined NETHER && CUSTOM_NETHER_SKYBOX == 1) || (defined END && CUSTOM_END_SKYBOX == 1)
	#define CUSTOM_SKYBOX
#endif



// How on earth can optifine be THIS bad???
#if TEMPORAL_FILTER_ENABLED == 1
	#undef TEMPORAL_FILTER_ENABLED
	#define TEMPORAL_FILTER_ENABLED 1
#endif
#if TEMPORAL_FILTER_ENABLED == 2
	#undef TEMPORAL_FILTER_ENABLED
	#define TEMPORAL_FILTER_ENABLED 2
#endif
#if SSS_PHOSPHOR == 1
	#undef SSS_PHOSPHOR
	#define SSS_PHOSPHOR 1
#endif
#if MOTION_BLUR_ENABLED == 1
	#undef MOTION_BLUR_ENABLED
	#define MOTION_BLUR_ENABLED 1
#endif



#define BLOCK_COLOR_DARK vec3(BLOCK_RED_DARK, BLOCK_GREEN_DARK, BLOCK_BLUE_DARK) * BLOCK_BRIGHTNESS
#define BLOCK_COLOR_BRIGHT vec3(BLOCK_RED_BRIGHT, BLOCK_GREEN_BRIGHT, BLOCK_BLUE_BRIGHT) * BLOCK_BRIGHTNESS
#define CAVE_AMBIENT_COLOR vec3(CAVE_AMBIENT_RED, CAVE_AMBIENT_GREEN, CAVE_AMBIENT_BLUE) * CAVE_AMBIENT_BRIGHTNESS
#define NETHER_AMBIENT_COLOR vec3(NETHER_AMBIENT_RED, NETHER_AMBIENT_GREEN, NETHER_AMBIENT_BLUE) * NETHER_AMBIENT_BRIGHTNESS;
#define NETHER_BLOCKLIGHT_MULT vec3(NETHER_BLOCKLIGHT_RED_MULT, NETHER_BLOCKLIGHT_GREEN_MULT, NETHER_BLOCKLIGHT_BLUE_MULT) * NETHER_BLOCKLIGHT_BRIGHTNESS_MULT
#define END_SKYLIGHT_COLOR vec3(END_SKYLIGHT_RED, END_SKYLIGHT_GREEN, END_SKYLIGHT_BLUE) * END_SKYLIGHT_BRIGHTNESS
#define END_AMBIENT_COLOR vec3(END_AMBIENT_RED, END_AMBIENT_GREEN, END_AMBIENT_BLUE) * END_AMBIENT_BRIGHTNESS
#define WATER_TINT_SHALLOW vec3(WATER_TINT_SHALLOW_RED, WATER_TINT_SHALLOW_GREEN, WATER_TINT_SHALLOW_BLUE) * WATER_TINT_SHALLOW_BRIGHTNESS
#define WATER_TINT_DEEP vec3(WATER_TINT_DEEP_RED, WATER_TINT_DEEP_GREEN, WATER_TINT_DEEP_BLUE) * WATER_TINT_DEEP_BRIGHTNESS

#define SKYLIGHT_DAY_COLOR vec3(SKYLIGHT_DAY_RED, SKYLIGHT_DAY_GREEN, SKYLIGHT_DAY_BLUE) * SKYLIGHT_DAY_BRIGHTNESS
#define AMBIENT_DAY_COLOR vec3(AMBIENT_DAY_RED, AMBIENT_DAY_GREEN, AMBIENT_DAY_BLUE) * AMBIENT_DAY_BRIGHTNESS

#define SKYLIGHT_NIGHT_COLOR vec3(SKYLIGHT_NIGHT_RED, SKYLIGHT_NIGHT_GREEN, SKYLIGHT_NIGHT_BLUE) * SKYLIGHT_NIGHT_BRIGHTNESS
#define AMBIENT_NIGHT_COLOR vec3(AMBIENT_NIGHT_RED, AMBIENT_NIGHT_GREEN, AMBIENT_NIGHT_BLUE) * AMBIENT_NIGHT_BRIGHTNESS

#define SKYLIGHT_SUNRISE_COLOR vec3(SKYLIGHT_SUNRISE_RED, SKYLIGHT_SUNRISE_GREEN, SKYLIGHT_SUNRISE_BLUE) * SKYLIGHT_SUNRISE_BRIGHTNESS
#define AMBIENT_SUNRISE_COLOR vec3(AMBIENT_SUNRISE_RED, AMBIENT_SUNRISE_GREEN, AMBIENT_SUNRISE_BLUE) * AMBIENT_SUNRISE_BRIGHTNESS

#define SKYLIGHT_SUNSET_COLOR vec3(SKYLIGHT_SUNSET_RED, SKYLIGHT_SUNSET_GREEN, SKYLIGHT_SUNSET_BLUE) * SKYLIGHT_SUNSET_BRIGHTNESS
#define AMBIENT_SUNSET_COLOR vec3(AMBIENT_SUNSET_RED, AMBIENT_SUNSET_GREEN, AMBIENT_SUNSET_BLUE) * AMBIENT_SUNSET_BRIGHTNESS

#define WATER_CAUSTICS_DARK_COLOR vec3(WATER_CAUSTICS_DARK_RED, WATER_CAUSTICS_DARK_GREEN, WATER_CAUSTICS_DARK_BLUE) * WATER_CAUSTICS_DARK_BRIGHTNESS
#define WATER_CAUSTICS_BRIGHT_COLOR vec3(WATER_CAUSTICS_BRIGHT_RED, WATER_CAUSTICS_BRIGHT_GREEN, WATER_CAUSTICS_BRIGHT_BLUE) * WATER_CAUSTICS_BRIGHT_BRIGHTNESS

#define ATMOSPHERIC_FOG_DAY vec3(ATMOSPHERIC_FOG_DAY_RED, ATMOSPHERIC_FOG_DAY_GREEN, ATMOSPHERIC_FOG_DAY_BLUE)
#define ATMOSPHERIC_FOG_NIGHT vec3(ATMOSPHERIC_FOG_NIGHT_RED, ATMOSPHERIC_FOG_NIGHT_GREEN, ATMOSPHERIC_FOG_NIGHT_BLUE)
#define ATMOSPHERIC_FOG_SUNRISE vec3(ATMOSPHERIC_FOG_SUNRISE_RED, ATMOSPHERIC_FOG_SUNRISE_GREEN, ATMOSPHERIC_FOG_SUNRISE_BLUE)
#define ATMOSPHERIC_FOG_SUNSET vec3(ATMOSPHERIC_FOG_SUNSET_RED, ATMOSPHERIC_FOG_SUNSET_GREEN, ATMOSPHERIC_FOG_SUNSET_BLUE)

#define LINE_OUTLINES_COLOR vec3(OUTLINES_RED, OUTLINES_GREEN, OUTLINES_BLUE)

#define BLOOM_DETECT_TINT vec3(BLOOM_DETECT_TINT_RED, BLOOM_DETECT_TINT_GREEN, BLOOM_DETECT_TINT_BLUE)
#define BLOOM_FINAL_TINT vec3(BLOOM_FINAL_TINT_RED, BLOOM_FINAL_TINT_GREEN, BLOOM_FINAL_TINT_BLUE)

#define SUNRAYS_SUN_COLOR vec3(SUNRAYS_SUN_RED, SUNRAYS_SUN_GREEN, SUNRAYS_SUN_BLUE)
#define SUNRAYS_MOON_COLOR vec3(SUNRAYS_MOON_RED, SUNRAYS_MOON_GREEN, SUNRAYS_MOON_BLUE)

#define SKY_DAY_COLOR (vec3(SKY_DAY_RED, SKY_DAY_GREEN, SKY_DAY_BLUE) * SKY_DAY_BRIGHTNESS)
#define SKY_NIGHT_COLOR (vec3(SKY_NIGHT_RED, SKY_NIGHT_GREEN, SKY_NIGHT_BLUE) * SKY_NIGHT_BRIGHTNESS)
#define SKY_HORIZON_DAY_COLOR (vec3(SKY_HORIZON_DAY_RED, SKY_HORIZON_DAY_GREEN, SKY_HORIZON_DAY_BLUE) * SKY_HORIZON_DAY_BRIGHTNESS)
#define SKY_HORIZON_NIGHT_COLOR (vec3(SKY_HORIZON_NIGHT_RED, SKY_HORIZON_NIGHT_GREEN, SKY_HORIZON_NIGHT_BLUE) * SKY_HORIZON_NIGHT_BRIGHTNESS)
#define SKY_HORIZON_SUNRISE_COLOR (vec3(SKY_HORIZON_SUNRISE_RED, SKY_HORIZON_SUNRISE_GREEN, SKY_HORIZON_SUNRISE_BLUE) * SKY_HORIZON_SUNRISE_BRIGHTNESS)
#define SKY_HORIZON_SUNSET_COLOR (vec3(SKY_HORIZON_SUNSET_RED, SKY_HORIZON_SUNSET_GREEN, SKY_HORIZON_SUNSET_BLUE) * SKY_HORIZON_SUNSET_BRIGHTNESS)

#define NETHER_SKY_BASE_COLOR vec3(NETHER_SKY_BASE_RED, NETHER_SKY_BASE_GREEN, NETHER_SKY_BASE_BLUE)
#define NETHER_SKY_TINT_COLOR vec3(NETHER_SKY_TINT_RED, NETHER_SKY_TINT_GREEN, NETHER_SKY_TINT_BLUE)

#define END_SKY_COLOR vec3(END_SKY_RED, END_SKY_GREEN, END_SKY_BLUE)
#define END_STATIC_COLOR vec3(END_STATIC_RED, END_STATIC_GREEN, END_STATIC_BLUE)

#define END_FOG_COLOR vec3(END_FOG_RED, END_FOG_GREEN, END_FOG_BLUE)

#define CLOUD_DAY_COLOR vec3(CLOUD_DAY_RED, CLOUD_DAY_GREEN, CLOUD_DAY_BLUE)
#define CLOUD_NIGHT_COLOR vec3(CLOUD_NIGHT_RED, CLOUD_NIGHT_GREEN, CLOUD_NIGHT_BLUE)
#define CLOUD_SUNRISE_COLOR vec3(CLOUD_SUNRISE_RED, CLOUD_SUNRISE_GREEN, CLOUD_SUNRISE_BLUE)
#define CLOUD_SUNSET_COLOR vec3(CLOUD_SUNSET_RED, CLOUD_SUNSET_GREEN, CLOUD_SUNSET_BLUE)
#define CLOUD_BOTTOM_TINT vec3(CLOUD_BOTTOM_TINT_RED, CLOUD_BOTTOM_TINT_GREEN, CLOUD_BOTTOM_TINT_BLUE)
#define CLOUD_WEATHER_TINT vec3(CLOUD_WEATHER_TINT_RED, CLOUD_WEATHER_TINT_GREEN, CLOUD_WEATHER_TINT_BLUE)

#define NETHER_CLOUDS_BASE_COLOR vec3(NETHER_CLOUDS_BASE_RED, NETHER_CLOUDS_BASE_GREEN, NETHER_CLOUDS_BASE_BLUE)
#define NETHER_CLOUDS_TINT_COLOR vec3(NETHER_CLOUDS_TINT_RED, NETHER_CLOUDS_TINT_GREEN, NETHER_CLOUDS_TINT_BLUE)

#define END_CLOUDS_DARK_COLOR vec3(END_CLOUDS_RED_DARK, END_CLOUDS_GREEN_DARK, END_CLOUDS_BLUE_DARK)
#define END_CLOUDS_BRIGHT_COLOR vec3(END_CLOUDS_RED_BRIGHT, END_CLOUDS_GREEN_BRIGHT, END_CLOUDS_BLUE_BRIGHT)

#define WATER_FOG_BASE_COLOR vec3(WATER_FOG_BASE_RED, WATER_FOG_BASE_GREEN, WATER_FOG_BASE_BLUE)
#define WATER_FOG_TINT_COLOR vec3(WATER_FOG_TINT_RED, WATER_FOG_TINT_GREEN, WATER_FOG_TINT_BLUE)
#define LAVA_FOG_COLOR vec3(LAVA_FOG_RED, LAVA_FOG_GREEN, LAVA_FOG_BLUE)
#define POWDERED_SNOW_FOG_COLOR vec3(POWDERED_SNOW_FOG_RED, POWDERED_SNOW_FOG_GREEN, POWDERED_SNOW_FOG_BLUE)

#ifdef OVERWORLD
	#define GLOWING_ORES_STRENGTH GLOWING_ORES_STRENGTH_OVERWORLD
#elif defined NETHER
	#define GLOWING_ORES_STRENGTH GLOWING_ORES_STRENGTH_NETHER
#elif defined END
	#define GLOWING_ORES_STRENGTH GLOWING_ORES_STRENGTH_END
#endif



// settings won't show up unless they're actually used in glsl code
#if PLAYER_SHADOWS_ENABLED == 1
#endif
#if ENTITY_SHADOWS_ENABLED == 1
#endif
#if BLOCK_ENTITY_SHADOWS_ENABLED == 1
#endif
#if WATER_CAUSTICS_ENABLED == 1
#endif
