profile.low    = INFO=0 shadowMapResolution=1024  SHADOW_PCF !SHADOW_COLOR !SHADOW_VPS !ENTITY_SHADOWS !BLOCK_ENTITY_SHADOWS !ENVIRONMENT_REFLECTIONS !GTAO !VL !AIR_FOG_COLORED_LIGHT_SHAFTS !WATER_CAUSTICS !WATER_PARALLAX !COLORED_LIGHTS !SHADOW_SSRT
profile.medium = INFO=1 shadowMapResolution=2048  SHADOW_PCF !SHADOW_COLOR  SHADOW_VPS !ENTITY_SHADOWS !BLOCK_ENTITY_SHADOWS !ENVIRONMENT_REFLECTIONS !GTAO  VL !AIR_FOG_COLORED_LIGHT_SHAFTS !WATER_CAUSTICS !WATER_PARALLAX !COLORED_LIGHTS !SHADOW_SSRT
profile.high   = INFO=2 shadowMapResolution=2048  SHADOW_PCF  SHADOW_COLOR  SHADOW_VPS  ENTITY_SHADOWS !BLOCK_ENTITY_SHADOWS  ENVIRONMENT_REFLECTIONS  GTAO  VL !AIR_FOG_COLORED_LIGHT_SHAFTS !WATER_CAUSTICS  WATER_PARALLAX !COLORED_LIGHTS  SHADOW_SSRT
profile.ultra  = INFO=3 shadowMapResolution=2048  SHADOW_PCF  SHADOW_COLOR  SHADOW_VPS  ENTITY_SHADOWS  BLOCK_ENTITY_SHADOWS  ENVIRONMENT_REFLECTIONS  GTAO  VL  AIR_FOG_COLORED_LIGHT_SHAFTS  WATER_CAUSTICS  WATER_PARALLAX  COLORED_LIGHTS  SHADOW_SSRT

#--------------------------------------------------------------------------------------------------#

screen              = INFO <profile> <empty> <empty> [world] [lighting] [sky] [fog] [materials] [water] [post] [misc]

screen.world        = [weather] <empty> WAVING_PLANTS WAVING_LEAVES EDGE_HIGHLIGHT EDGE_HIGHLIGHT_SCALE SLANTED_RAIN RAIN_OPACITY MOON_PHASE_AFFECTS_BRIGHTNESS SEA_LEVEL DESERT_SANDSTORM END_GLOW
screen.lighting     = [shadows] [ao] [light_sources] <empty> <empty> <empty> COLORED_LIGHTS [colored_lights] HANDHELD_LIGHTING HANDHELD_LIGHTING_INTENSITY AO_IN_SUNLIGHT SH_SKYLIGHT CLOUD_SHADOWS CLOUD_SHADOWS_INTENSITY SSS_SHEEN SSS_INTENSITY SHADING_STRENGTH
screen.sky          = [aurora] [clouds] [crepuscular_rays] [stars] VANILLA_SUN VANILLA_MOON SUN_ANGULAR_RADIUS MOON_ANGULAR_RADIUS SKY_GROUND GALAXY GALAXY_INTENSITY LIGHTNING_FLASH RAINBOWS END_SUN_EFFECT
screen.fog          = VL [lpv_vl] OVERWORLD_FOG_INTENSITY NETHER_FOG_INTENSITY AIR_FOG_CLOUDY_NOISE AIR_FOG_COLORED_LIGHT_SHAFTS BORDER_FOG CAVE_FOG BLOOMY_FOG BLOOMY_FOG_INTENSITY <empty> <empty> [fog_rlh] [fog_mie] 
screen.materials    = NORMAL_MAPPING SPECULAR_MAPPING POM [rp_settings] <empty> <empty> HARDCODED_SPECULAR HARDCODED_EMISSION HARDCODED_SSS RAIN_PUDDLES <empty> <empty>  [reflections] [refraction]
screen.water        = [water_waves] [water_fog_coeff] WATER_EDGE_HIGHLIGHT WATER_EDGE_HIGHLIGHT_INTENSITY WATER_CAUSTICS WATER_CAUSTICS_INTENSITY SNELLS_WINDOW WATER_TEXTURE BIOME_WATER_COLOR WATER_REFRACTION WATER_REFRACTION_INTENSITY
screen.post         = [color_grading] [exposure] BLOOM BLOOM_INTENSITY DOF DOF_INTENSITY DOF_SAMPLES DOF_FOCUS MOTION_BLUR MOTION_BLUR_INTENSITY TAA FXAA TAAU TAAU_RENDER_SCALE CAS CAS_INTENSITY VIGNETTE VIGNETTE_INTENSITY
screen.misc         = [distant_horizons]  [box] [distance_view] [developer] WHITE_WORLD FANCY_NETHER_PORTAL CUSTOM_SKY CUSTOM_SKY_BRIGHTNESS ENCHANTMENT_GLINT_BRIGHTNESS TONEMAP_COMPARISON tonemap_left tonemap_right DITHERED_TRANSLUCENCY_FALLBACK
screen.box          = BOX_MODE BOX_LINE_WIDTH BOX_COLOR_R BOX_COLOR_G BOX_COLOR_B BOX_EMISSION

# World submenus
screen.weather          = RANDOM_WEATHER_VARIATION BIOME_WEATHER_VARIATION WEATHER_TEMPERATURE_BIAS WEATHER_HUMIDITY_BIAS WEATHER_WIND_BIAS WEATHER_TEMPERATURE_VARIATION_SPEED WEATHER_HUMIDITY_VARIATION_SPEED WEATHER_WIND_VARIATION_SPEED

# Lighting submenus
screen.colored_lights   = COLORED_LIGHTS_VANILLA_LIGHTMAP_CONTRIBUTION VOXEL_VOLUME_SIZE VOXEL_VOLUME_CENTER [lpv_vl]
screen.light_sources    = [sunlight_color] SUN_I [moonlight_color] MOON_I [blocklight_color] BLOCKLIGHT_I SKYLIGHT_I BOUNCED_LIGHT_I CAVE_LIGHTING_I <empty> <empty> <empty> [light_nether] [light_end]
screen.shadows          = SHADOW SHADOW_PCF SHADOW_SSRT SHADOW_SSRT_STEPS SHADOW_COLOR SHADOW_VPS shadowMapResolution shadowDistance sunPathRotation SHADOW_PENUMBRA_SCALE ENTITY_SHADOWS BLOCK_ENTITY_SHADOWS PIXELATED_SHADOWS PIXELATED_SHADOWS_RESOLUTION SSS_STEPS
screen.ao               = SHADER_AO VANILLA_AO <empty> <empty> SSAO_STEPS SSAO_RADIUS <empty> <empty> GTAO_SLICES GTAO_HORIZON_STEPS GTAO_RADIUS

# Sky submenus
screen.aurora           = AURORA_NORMAL AURORA_SNOW AURORA_BRIGHTNESS AURORA_FREQUENCY AURORA_CLOUD_LIGHTING AURORA_GROUND_LIGHTING
screen.clouds           = CLOUDS_TEMPORAL_UPSCALING CLOUDS_DAILY_WEATHER CLOUDS_SCALE CLOUDS_AERIAL_PERSPECTIVE_BOOST <empty> <empty> CLOUDS_CUMULUS [clouds_cumulus] CLOUDS_ALTOCUMULUS [clouds_altocumulus] CLOUDS_CUMULUS_CONGESTUS [clouds_cumulus_congestus] CLOUDS_CIRRUS [clouds_cirrus] CLOUDS_NOCTILUCENT [clouds_noctilucent] <empty> <empty> BLOCKY_CLOUDS [clouds_minecrafty] 
screen.stars            = STARS STARS_INTENSITY STARS_COVERAGE 
screen.crepuscular_rays = CREPUSCULAR_RAYS CREPUSCULAR_RAYS_INTENSITY CREPUSCULAR_RAYS_STEPS_HORIZON CREPUSCULAR_RAYS_STEPS_ZENITH 
screen.rp_settings      = TEXTURE_FORMAT EMISSION_STRENGTH DIRECTIONAL_LIGHTMAPS DIRECTIONAL_LIGHTMAPS_INTENSITY POM_DEPTH POM_SAMPLES POM_SHADOW POM_SHADOW_SAMPLES

# Materials submenus
screen.reflections      = ENVIRONMENT_REFLECTIONS SKY_REFLECTIONS SSR_ROUGHNESS_SUPPORT <empty> SSR_RAY_COUNT SSR_INTERSECTION_STEPS_SMOOTH SSR_INTERSECTION_STEPS_ROUGH SSR_REFINEMENT_STEPS SSR_ROUGHNESS_THRESHOLD
screen.refraction       = REFRACTION REFRACTION_INTENSITY

# Fog submenus
screen.fog_rlh          = AIR_FOG_RAYLEIGH_DENSITY [fog_rlh_normal] AIR_FOG_RAYLEIGH_DENSITY_RAIN [fog_rlh_rain] AIR_FOG_RAYLEIGH_DENSITY_ARID [fog_rlh_arid] AIR_FOG_RAYLEIGH_DENSITY_SNOWY [fog_rlh_snowy] AIR_FOG_RAYLEIGH_DENSITY_TAIGA [fog_rlh_taiga] AIR_FOG_RAYLEIGH_DENSITY_JUNGLE [fog_rlh_jungle] AIR_FOG_RAYLEIGH_DENSITY_SWAMP [fog_rlh_swamp] AIR_FOG_RAYLEIGH_FALLOFF_START AIR_FOG_RAYLEIGH_FALLOFF_HALF_LIFE 
screen.fog_mie          = AIR_FOG_MIE_DENSITY_MORNING AIR_FOG_MIE_DENSITY_NOON AIR_FOG_MIE_DENSITY_EVENING AIR_FOG_MIE_DENSITY_MIDNIGHT AIR_FOG_MIE_DENSITY_RAIN AIR_FOG_MIE_DENSITY_BLUE_HOUR AIR_FOG_MIE_FALLOFF_START AIR_FOG_MIE_FALLOFF_HALF_LIFE
screen.lpv_vl           = LPV_VL LPV_VL_STEPS LPV_VL_INTENSITY_OVERWORLD LPV_VL_INTENSITY_UNDERGROUND LPV_VL_INTENSITY_NETHER LPV_VL_INTENSITY_END

# Water submenus
screen.water_waves      = WATER_WAVES WATER_WAVE_ITERATIONS WATER_WAVE_STRENGTH WATER_WAVE_FREQUENCY WATER_WAVE_SPEED_STILL WATER_WAVE_SPEED_FLOWING WATER_WAVE_PERSISTENCE WATER_WAVE_LACUNARITY WATER_PARALLAX WATER_DISPLACEMENT WATER_WAVES_HEIGHT_VARIATION
screen.water_fog_coeff  = WATER_ABSORPTION_R WATER_ABSORPTION_G WATER_ABSORPTION_B WATER_SCATTERING <empty> WATER_ABSORPTION_R_UNDERWATER WATER_ABSORPTION_G_UNDERWATER WATER_ABSORPTION_B_UNDERWATER WATER_SCATTERING_UNDERWATER

# Post-Processing submenus
screen.color_grading    = tonemap <empty> <empty> <empty> GRADE_BRIGHTNESS GRADE_CONTRAST GRADE_SATURATION GRADE_WHITE_BALANCE GRADE_ORANGE_SAT_BOOST GRADE_TEAL_SAT_BOOST GRADE_GREEN_SAT_BOOST GRADE_GREEN_HUE_SHIFT <empty> <empty> PURKINJE_SHIFT PURKINJE_SHIFT_INTENSITY
screen.exposure         = AUTO_EXPOSURE AUTO_EXPOSURE_BIAS AUTO_EXPOSURE_MIN AUTO_EXPOSURE_MAX AUTO_EXPOSURE_RATE_DIM_TO_BRIGHT AUTO_EXPOSURE_RATE_BRIGHT_TO_DIM <empty> <empty> MANUAL_EXPOSURE_VALUE MANUAL_EXPOSURE_USE_SCREEN_BRIGHTNESS <empty> <empty> HISTOGRAM_BINS HISTOGRAM_TARGET

# Misc. submenus
screen.distant_horizons = DH_OVERDRAW_DISTANCE DH_OVERDRAW_FADE_LENGTH NOISE_ON_DH_TERRAIN 
screen.developer        = DEBUG_VIEW DEBUG_SAMPLER 
screen.distance_view    = DISTANCE_VIEW DISTANCE_VIEW_METHOD DISTANCE_VIEW_MAX_DISTANCE

# Clouds submenus
screen.clouds_cumulus           = CLOUDS_CUMULUS_PRIMARY_STEPS_H CLOUDS_CUMULUS_PRIMARY_STEPS_Z CLOUDS_CUMULUS_LIGHTING_STEPS CLOUDS_CUMULUS_AMBIENT_STEPS CLOUDS_CUMULUS_ALTITUDE CLOUDS_CUMULUS_THICKNESS CLOUDS_CUMULUS_DENSITY CLOUDS_CUMULUS_COVERAGE CLOUDS_CUMULUS_SIZE <empty> CLOUDS_CUMULUS_DETAIL_STRENGTH CLOUDS_CUMULUS_WIND_SPEED CLOUDS_CUMULUS_WIND_ANGLE CLOUDS_CUMULUS_PRECOMPUTE_LOCAL_COVERAGE
screen.clouds_cumulus_congestus = CLOUDS_CUMULUS_CONGESTUS_PRIMARY_STEPS_H CLOUDS_CUMULUS_CONGESTUS_PRIMARY_STEPS_Z CLOUDS_CUMULUS_CONGESTUS_LIGHTING_STEPS CLOUDS_CUMULUS_CONGESTUS_AMBIENT_STEPS CLOUDS_CUMULUS_CONGESTUS_ALTITUDE CLOUDS_CUMULUS_CONGESTUS_THICKNESS CLOUDS_CUMULUS_CONGESTUS_DENSITY CLOUDS_CUMULUS_CONGESTUS_COVERAGE CLOUDS_CUMULUS_CONGESTUS_SIZE <empty> CLOUDS_CUMULUS_CONGESTUS_DETAIL_STRENGTH CLOUDS_CUMULUS_CONGESTUS_WIND_SPEED CLOUDS_CUMULUS_CONGESTUS_WIND_ANGLE
screen.clouds_altocumulus       = CLOUDS_ALTOCUMULUS_PRIMARY_STEPS_H CLOUDS_ALTOCUMULUS_PRIMARY_STEPS_Z CLOUDS_ALTOCUMULUS_LIGHTING_STEPS CLOUDS_ALTOCUMULUS_AMBIENT_STEPS CLOUDS_ALTOCUMULUS_ALTITUDE CLOUDS_ALTOCUMULUS_THICKNESS CLOUDS_ALTOCUMULUS_DENSITY CLOUDS_ALTOCUMULUS_COVERAGE CLOUDS_ALTOCUMULUS_SIZE <empty> CLOUDS_ALTOCUMULUS_DETAIL_STRENGTH CLOUDS_ALTOCUMULUS_WIND_SPEED CLOUDS_ALTOCUMULUS_WIND_ANGLE
screen.clouds_cirrus            = CLOUDS_CIRRUS_LIGHTING_STEPS CLOUDS_CIRRUS_ALTITUDE CLOUDS_CIRRUS_DENSITY CLOUDS_CIRROCUMULUS_DENSITY CLOUDS_CIRRUS_COVERAGE CLOUDS_CIRROCUMULUS_COVERAGE CLOUDS_CIRRUS_SIZE CLOUDS_CIRROCUMULUS_SIZE CLOUDS_CIRRUS_DETAIL_STRENGTH CLOUDS_CIRROCUMULUS_DETAIL_STRENGTH CLOUDS_CIRRUS_CURL_STRENGTH CLOUDS_CIRROCUMULUS_CURL_STRENGTH CLOUDS_CIRRUS_WIND_SPEED CLOUDS_CIRRUS_WIND_ANGLE
screen.clouds_noctilucent       = CLOUDS_NOCTILUCENT_INTENSITY CLOUDS_NOCTILUCENT_RARITY
screen.clouds_minecrafty        = BLOCKY_CLOUDS_LAYER_2 BLOCKY_CLOUDS_THICKNESS BLOCKY_CLOUDS_ALTITUDE BLOCKY_CLOUDS_ALTITUDE_2 BLOCKY_CLOUDS_ROUNDNESS BLOCKY_CLOUDS_SHARPNESS

# Light Sources submenus
screen.sunlight_color    = [sunlight_morning] [sunlight_noon] [sunlight_evening]
screen.moonlight_color   = MOON_R MOON_G MOON_B
screen.blocklight_color  = BLOCKLIGHT_R BLOCKLIGHT_G BLOCKLIGHT_B
screen.light_nether      = NETHER_USE_BIOME_COLOR [nether_color] NETHER_I NETHER_S
screen.nether_color      = NETHER_R NETHER_G NETHER_B
screen.light_end         = [end_light_color] END_LIGHT_I [end_ambient_color] END_AMBIENT_I
screen.end_light_color   = END_LIGHT_R END_LIGHT_G END_LIGHT_B
screen.end_ambient_color = END_AMBIENT_R END_AMBIENT_G END_AMBIENT_B
screen.sunlight_morning  = SUN_MR SUN_MG SUN_MB
screen.sunlight_noon     = SUN_NR SUN_NG SUN_NB
screen.sunlight_evening  = SUN_ER SUN_EG SUN_EB

# Rayleigh Fog submenus
screen.fog_rlh_normal = AIR_FOG_RAYLEIGH_R AIR_FOG_RAYLEIGH_G AIR_FOG_RAYLEIGH_B
screen.fog_rlh_rain   = AIR_FOG_RAYLEIGH_R_RAIN AIR_FOG_RAYLEIGH_G_RAIN AIR_FOG_RAYLEIGH_B_RAIN
screen.fog_rlh_arid   = AIR_FOG_RAYLEIGH_R_ARID AIR_FOG_RAYLEIGH_G_ARID AIR_FOG_RAYLEIGH_B_ARID
screen.fog_rlh_snowy  = AIR_FOG_RAYLEIGH_R_SNOWY AIR_FOG_RAYLEIGH_G_SNOWY AIR_FOG_RAYLEIGH_B_SNOWY
screen.fog_rlh_taiga  = AIR_FOG_RAYLEIGH_R_TAIGA AIR_FOG_RAYLEIGH_G_TAIGA AIR_FOG_RAYLEIGH_B_TAIGA
screen.fog_rlh_jungle = AIR_FOG_RAYLEIGH_R_JUNGLE AIR_FOG_RAYLEIGH_G_JUNGLE AIR_FOG_RAYLEIGH_B_JUNGLE
screen.fog_rlh_swamp  = AIR_FOG_RAYLEIGH_R_SWAMP AIR_FOG_RAYLEIGH_G_SWAMP AIR_FOG_RAYLEIGH_B_SWAMP

# Columns
screen.clouds.columns            = 2
screen.sunlight_color.columns    = 1
screen.moonlight_color.columns   = 1
screen.blocklight_color.columns  = 1
screen.sunlight_noon.columns     = 1
screen.sunlight_morning.columns  = 1
screen.sunlight_evening.columns  = 1
screen.blocklight_color.columns  = 1
screen.nether_color.columns      = 1
screen.end_light_color.columns   = 1
screen.end_ambient_color.columns = 1
screen.reflections.columns       = 1
screen.refraction.columns        = 1
screen.fog_rlh.columns           = 2
screen.fog_rlh_normal.columns    = 1
screen.fog_rlh_rain.columns      = 1
screen.fog_rlh_arid.columns      = 1
screen.fog_rlh_snowy.columns     = 1
screen.fog_rlh_taiga.columns     = 1
screen.fog_rlh_jungle.columns    = 1
screen.fog_rlh_swamp.columns     = 1
screen.water_fog_coeff.columns   = 1
screen.weather.columns           = 1
screen.distance_view.columns     = 1

# Sliders
sliders = DEBUG_SAMPLER TAAU_RENDER_SCALE CAS_INTENSITY VIGNETTE_INTENSITY PURKINJE_SHIFT_INTENSITY GRADE_BRIGHTNESS GRADE_CONTRAST GRADE_SATURATION GRADE_WHITE_BALANCE GRADE_ORANGE_SAT_BOOST GRADE_TEAL_SAT_BOOST GRADE_GREEN_SAT_BOOST GRADE_GREEN_HUE_SHIFT shadowMapResolution shadowDistance sunPathRotation SHADOW_PENUMBRA_SCALE AUTO_EXPOSURE_BIAS AUTO_EXPOSURE_MIN AUTO_EXPOSURE_MAX AUTO_EXPOSURE_RATE_DIM_TO_BRIGHT AUTO_EXPOSURE_RATE_BRIGHT_TO_DIM MANUAL_EXPOSURE_VALUE HISTOGRAM_BINS HISTOGRAM_TARGET AIR_FOG_RAYLEIGH_DENSITY AIR_FOG_RAYLEIGH_R AIR_FOG_RAYLEIGH_G AIR_FOG_RAYLEIGH_B AIR_FOG_RAYLEIGH_DENSITY_RAIN AIR_FOG_RAYLEIGH_R_RAIN AIR_FOG_RAYLEIGH_G_RAIN AIR_FOG_RAYLEIGH_B_RAIN AIR_FOG_RAYLEIGH_DENSITY_ARID AIR_FOG_RAYLEIGH_R_ARID AIR_FOG_RAYLEIGH_G_ARID AIR_FOG_RAYLEIGH_B_ARID AIR_FOG_RAYLEIGH_DENSITY_SNOWY AIR_FOG_RAYLEIGH_R_SNOWY AIR_FOG_RAYLEIGH_G_SNOWY AIR_FOG_RAYLEIGH_B_SNOWY AIR_FOG_RAYLEIGH_DENSITY_TAIGA AIR_FOG_RAYLEIGH_R_TAIGA AIR_FOG_RAYLEIGH_G_TAIGA AIR_FOG_RAYLEIGH_B_TAIGA AIR_FOG_RAYLEIGH_DENSITY_JUNGLE AIR_FOG_RAYLEIGH_R_JUNGLE AIR_FOG_RAYLEIGH_G_JUNGLE AIR_FOG_RAYLEIGH_B_JUNGLE AIR_FOG_RAYLEIGH_DENSITY_SWAMP AIR_FOG_RAYLEIGH_R_SWAMP AIR_FOG_RAYLEIGH_G_SWAMP AIR_FOG_RAYLEIGH_B_SWAMP BLOOM_INTENSITY DOF_INTENSITY DOF_SAMPLES DOF_FOCUS AIR_FOG_MIE_DENSITY_MORNING AIR_FOG_MIE_DENSITY_NOON AIR_FOG_MIE_DENSITY_RAIN AIR_FOG_MIE_DENSITY_BLUE_HOUR AIR_FOG_MIE_DENSITY_EVENING AIR_FOG_MIE_DENSITY_MIDNIGHT BLOOMY_FOG_INTENSITY SUN_ANGULAR_RADIUS MOON_ANGULAR_RADIUS STARS_INTENSITY STARS_COVERAGE SEA_LEVEL POM_DEPTH POM_SAMPLES POM_SHADOW_SAMPLES EMISSION_STRENGTH POM_DISTANCE RAIN_OPACITY SSR_RAY_COUNT SSR_INTERSECTION_STEPS_SMOOTH SSR_INTERSECTION_STEPS_ROUGH SSR_REFINEMENT_STEPS SSR_ROUGHNESS_THRESHOLD WATER_WAVE_ITERATIONS WATER_WAVE_STRENGTH WATER_WAVE_FREQUENCY WATER_WAVE_SPEED_STILL WATER_WAVE_SPEED_FLOWING WATER_WAVE_PERSISTENCE WATER_WAVE_LACUNARITY WATER_ABSORPTION_R WATER_ABSORPTION_G WATER_ABSORPTION_B WATER_SCATTERING WATER_ABSORPTION_R_UNDERWATER WATER_ABSORPTION_G_UNDERWATER WATER_ABSORPTION_B_UNDERWATER WATER_SCATTERING_UNDERWATER SUN_I MOON_R MOON_G MOON_B MOON_I BLOCKLIGHT_R BLOCKLIGHT_G BLOCKLIGHT_B BLOCKLIGHT_I SKYLIGHT_I BOUNCED_LIGHT_I CAVE_LIGHTING_I CUSTOM_SKY_BRIGHTNESS DIRECTIONAL_LIGHTMAPS_INTENSITY MOTION_BLUR_INTENSITY CLOUDS_CUMULUS_PRIMARY_STEPS_H CLOUDS_CUMULUS_PRIMARY_STEPS_Z CLOUDS_CUMULUS_LIGHTING_STEPS CLOUDS_CUMULUS_AMBIENT_STEPS CLOUDS_CUMULUS_ALTITUDE CLOUDS_CUMULUS_THICKNESS CLOUDS_CUMULUS_DENSITY CLOUDS_CUMULUS_COVERAGE CLOUDS_CUMULUS_SIZE CLOUDS_CUMULUS_DETAIL_STRENGTH CLOUDS_CUMULUS_WIND_SPEED CLOUDS_CUMULUS_WIND_ANGLE CLOUDS_ALTOCUMULUS_PRIMARY_STEPS_H CLOUDS_ALTOCUMULUS_PRIMARY_STEPS_Z CLOUDS_ALTOCUMULUS_LIGHTING_STEPS CLOUDS_ALTOCUMULUS_AMBIENT_STEPS CLOUDS_ALTOCUMULUS_ALTITUDE CLOUDS_ALTOCUMULUS_THICKNESS CLOUDS_ALTOCUMULUS_DENSITY CLOUDS_ALTOCUMULUS_COVERAGE CLOUDS_ALTOCUMULUS_SIZE CLOUDS_ALTOCUMULUS_DETAIL_STRENGTH CLOUDS_ALTOCUMULUS_WIND_SPEED CLOUDS_ALTOCUMULUS_WIND_ANGLE CLOUDS_CIRRUS_LIGHTING_STEPS CLOUDS_CIRRUS_ALTITUDE CLOUDS_CIRRUS_DENSITY CLOUDS_CIRRUS_COVERAGE CLOUDS_CIRRUS_SIZE CLOUDS_CIRRUS_WIND_SPEED CLOUDS_CIRRUS_WIND_ANGLE CLOUDS_CIRRUS_DETAIL_STRENGTH CLOUDS_CIRRUS_CURL_STRENGTH NETHER_I NETHER_S NETHER_FOG_INTENSITY CLOUDS_TEMPORAL_UPSCALING SSS_INTENSITY SHADING_STRENGTH REFRACTION_INTENSITY BLOCKY_CLOUDS_THICKNESS BLOCKY_CLOUDS_ALTITUDE BLOCKY_CLOUDS_ALTITUDE_2 BLOCKY_CLOUDS_ROUNDNESS BLOCKY_CLOUDS_SHARPNESS EDGE_HIGHLIGHT_SCALE SUN_MR SUN_MG SUN_MB SUN_NR SUN_NG SUN_NB SUN_ER SUN_EG SUN_EB PIXELATED_SHADOWS_RESOLUTION CLOUDS_AERIAL_PERSPECTIVE_BOOST VOXEL_VOLUME_SIZE HANDHELD_LIGHTING_INTENSITY CLOUD_SHADOWS_INTENSITY NETHER_R NETHER_G NETHER_B END_LIGHT_R END_LIGHT_G END_LIGHT_B END_LIGHT_I END_AMBIENT_R END_AMBIENT_G END_AMBIENT_B END_AMBIENT_I  CLOUDS_CUMULUS_CONGESTUS_PRIMARY_STEPS_H CLOUDS_CUMULUS_CONGESTUS_PRIMARY_STEPS_Z CLOUDS_CUMULUS_CONGESTUS_LIGHTING_STEPS CLOUDS_CUMULUS_CONGESTUS_AMBIENT_STEPS CLOUDS_CUMULUS_CONGESTUS_ALTITUDE CLOUDS_CUMULUS_CONGESTUS_THICKNESS CLOUDS_CUMULUS_CONGESTUS_DENSITY CLOUDS_CUMULUS_CONGESTUS_COVERAGE CLOUDS_CUMULUS_CONGESTUS_SIZE <empty> CLOUDS_CUMULUS_CONGESTUS_DETAIL_STRENGTH CLOUDS_CUMULUS_CONGESTUS_WIND_SPEED CLOUDS_CUMULUS_CONGESTUS_WIND_ANGLE AURORA_CLOUD_LIGHTING AURORA_GROUND_LIGHTING AURORA_BRIGHTNESS AURORA_FREQUENCY BOX_COLOR_R BOX_COLOR_G BOX_COLOR_B BOX_EMISSION BOX_LINE_WIDTH CLOUDS_SCALE ATMOSPHERE_SATURATION_BOOST_INTENSITY WATER_EDGE_HIGHLIGHT_INTENSITY GALAXY_INTENSITY WATER_CAUSTICS_INTENSITY CLOUDS_CIRROCUMULUS_DENSITY CLOUDS_CIRROCUMULUS_COVERAGE CLOUDS_CIRROCUMULUS_SIZE CLOUDS_CIRROCUMULUS_DETAIL_STRENGTH CLOUDS_CIRROCUMULUS_CURL_STRENGTH SSAO_STEPS SSAO_RADIUS GTAO_SLICES GTAO_HORIZON_STEPS GTAO_RADIUS CLOUDS_NOCTILUCENT_INTENSITY CLOUDS_NOCTILUCENT_RARITY ENCHANTMENT_GLINT_BRIGHTNESS OVERWORLD_FOG_INTENSITY DISTANCE_VIEW_MAX_DISTANCE LPV_VL_STEPS LPV_VL_INTENSITY_OVERWORLD LPV_VL_INTENSITY_UNDERGROUND LPV_VL_INTENSITY_NETHER LPV_VL_INTENSITY_END WEATHER_TEMPERATURE_BIAS WEATHER_HUMIDITY_BIAS WEATHER_WIND_BIAS WEATHER_TEMPERATURE_VARIATION_SPEED WEATHER_HUMIDITY_VARIATION_SPEED WEATHER_WIND_VARIATION_SPEED SSS_STEPS CREPUSCULAR_RAYS_INTENSITY CREPUSCULAR_RAYS_STEPS_HORIZON CREPUSCULAR_RAYS_STEPS_ZENITH AIR_FOG_MIE_FALLOFF_START AIR_FOG_MIE_FALLOFF_HALF_LIFE AIR_FOG_RAYLEIGH_FALLOFF_START AIR_FOG_RAYLEIGH_FALLOFF_HALF_LIFE DH_OVERDRAW_DISTANCE DH_OVERDRAW_FADE_LENGTH SHADOW_SSRT_STEPS

#--------------------------------------------------------------------------------------------------#

iris.features.optional = CUSTOM_IMAGES ENTITY_TRANSLUCENT

clouds              = off
dynamicHandLight    = true
oldHandLight        = false
oldLighting         = false
rain.depth          = false
separateAo          = true
shadowPlayer        = true
underwaterOverlay   = false
vignette            = false

#ifdef COLORED_LIGHTS
shadow.culling = reversed
#endif

#ifndef ENTITY_SHADOWS
shadowEntities = false
#endif

#ifndef BLOCK_ENTITY_SHADOWS
shadowBlockEntities = false
#endif

# Distant Horizons
dhShadow.enabled = false

# -------------------
#   Program Toggles
# -------------------

# Overworld

program.world0/shadow.enabled      = SHADOW
program.world0/composite2.enabled  = DOF
program.world0/composite3.enabled  = TAAU
program.world0/composite5.enabled  = BLOOM
program.world0/composite6.enabled  = BLOOM
program.world0/composite7.enabled  = BLOOM
program.world0/composite8.enabled  = BLOOM
program.world0/composite9.enabled  = BLOOM
program.world0/composite10.enabled = BLOOM
program.world0/composite11.enabled = BLOOM
program.world0/composite12.enabled = BLOOM
program.world0/composite13.enabled = BLOOM
program.world0/composite15.enabled = MOTION_BLUR
program.world0/composite16.enabled = FXAA
#ifdef MC_GL_RENDERER_INTEL
	program.world0/composite17.enabled = true
#else
	program.world0/composite17.enabled = false
#endif
program.world0/setup.enabled       = COLORED_LIGHTS
program.world0/shadowcomp.enabled  = COLORED_LIGHTS
program.world0/deferred4_a.enabled = SH_SKYLIGHT

# Nether

program.world-1/shadow.enabled      = COLORED_LIGHTS
program.world-1/composite2.enabled  = DOF
program.world-1/composite3.enabled  = TAAU
program.world-1/composite5.enabled  = BLOOM
program.world-1/composite6.enabled  = BLOOM
program.world-1/composite7.enabled  = BLOOM
program.world-1/composite8.enabled  = BLOOM
program.world-1/composite9.enabled  = BLOOM
program.world-1/composite10.enabled = BLOOM
program.world-1/composite11.enabled = BLOOM
program.world-1/composite12.enabled = BLOOM
program.world-1/composite13.enabled = BLOOM
program.world-1/composite15.enabled = MOTION_BLUR
program.world-1/composite16.enabled = FXAA
#ifdef MC_GL_RENDERER_INTEL
	program.world-1/composite17.enabled = true
#else
	program.world-1/composite17.enabled = false
#endif
program.world-1/prepare.enabled      = false
program.world-1/setup.enabled       = COLORED_LIGHTS
program.world-1/shadowcomp.enabled  = COLORED_LIGHTS

# End

program.world1/shadow.enabled      = SHADOW
program.world1/composite2.enabled  = DOF
program.world1/composite3.enabled  = TAAU
program.world1/composite5.enabled  = BLOOM
program.world1/composite6.enabled  = BLOOM
program.world1/composite7.enabled  = BLOOM
program.world1/composite8.enabled  = BLOOM
program.world1/composite9.enabled  = BLOOM
program.world1/composite10.enabled = BLOOM
program.world1/composite11.enabled = BLOOM
program.world1/composite12.enabled = BLOOM
program.world1/composite13.enabled = BLOOM
program.world1/composite15.enabled = MOTION_BLUR
program.world1/composite16.enabled = FXAA
#ifdef MC_GL_RENDERER_INTEL
	program.world1/composite17.enabled = true
#else
	program.world1/composite17.enabled = false
#endif
program.world1/prepare.enabled     = false
program.world1/setup.enabled       = COLORED_LIGHTS
program.world1/shadowcomp.enabled  = COLORED_LIGHTS

# Separate Entity Draws
#if MC_VERSION < 260100
program.world0/gbuffers_entities_translucent.enabled   = false
program.world0/gbuffers_block_translucent.enabled      = false
program.world0/gbuffers_particles.enabled              = false
program.world0/gbuffers_particles_translucent.enabled  = false
program.world1/gbuffers_entities_translucent.enabled   = false
program.world1/gbuffers_block_translucent.enabled      = false
program.world1/gbuffers_particles.enabled              = false
program.world1/gbuffers_particles_translucent.enabled  = false
program.world-1/gbuffers_entities_translucent.enabled  = false
program.world-1/gbuffers_block_translucent.enabled     = false
program.world-1/gbuffers_particles.enabled             = false
program.world-1/gbuffers_particles_translucent.enabled = false
#endif

# ----------------
#   Buffer Flips
# ----------------

flip.composite1.colortex6 = true

# ----------------
#   Buffer Sizes
# ----------------

# sky map
size.buffer.colortex4 = 192 108

# quarter res stuff: AO, fog
size.buffer.colortex6 = 0.5 0.5
size.buffer.colortex7 = 0.5 0.5
size.buffer.colortex14 = 0.5 0.5

# cloud shadow map
size.buffer.colortex8 = 512 512

# low-res clouds
#if CLOUDS_TEMPORAL_UPSCALING == 1
size.buffer.colortex9  = 1.0 1.0
size.buffer.colortex10 = 1.0 1.0
#elif CLOUDS_TEMPORAL_UPSCALING == 2
size.buffer.colortex9  = 0.5 0.5
size.buffer.colortex10 = 0.5 0.5
#elif CLOUDS_TEMPORAL_UPSCALING == 3
size.buffer.colortex9  = 0.333333 0.333333
size.buffer.colortex10 = 0.333333 0.333333
#elif CLOUDS_TEMPORAL_UPSCALING == 4
size.buffer.colortex9  = 0.25 0.25
size.buffer.colortex10 = 0.25 0.25
#endif

# ------------
#   Blending
# ------------

alphaTest.dh_water                       = off
alphaTest.gbuffers_armor_glint           = off
alphaTest.gbuffers_basic                 = off
alphaTest.gbuffers_block                 = off
alphaTest.gbuffers_damagedblock          = off
alphaTest.gbuffers_entities              = off
alphaTest.gbuffers_hand                  = off
alphaTest.gbuffers_hand_water            = off
alphaTest.gbuffers_line                  = off
alphaTest.gbuffers_particles             = off
alphaTest.gbuffers_spidereyes            = off
alphaTest.gbuffers_skytextured           = off
alphaTest.gbuffers_terrain               = off
alphaTest.gbuffers_textured              = off
alphaTest.gbuffers_block_translucent     = off
alphaTest.gbuffers_entities_translucent  = off
alphaTest.gbuffers_particles_translucent = off
alphaTest.gbuffers_water                 = off
alphaTest.gbuffers_weather               = off
alphaTest.shadow                         = off

blend.dh_water                       = off
blend.gbuffers_armor_glint           = off
blend.gbuffers_basic                 = off
blend.gbuffers_block                 = off
blend.gbuffers_entities              = off
blend.gbuffers_hand                  = off
blend.gbuffers_hand_water            = off
blend.gbuffers_line                  = off
blend.gbuffers_particles             = off
blend.gbuffers_spidereyes            = off
blend.gbuffers_skytextured           = off
blend.gbuffers_terrain               = off
blend.gbuffers_textured              = off
blend.gbuffers_block_translucent     = off
blend.gbuffers_entities_translucent  = off
blend.gbuffers_particles_translucent = off
blend.gbuffers_water                 = off
blend.gbuffers_weather               = off
blend.shadow                         = off

#if MC_VERSION >= 260100
blend.gbuffers_armor_glint.colortex13 = ONE ONE ZERO ONE
#else
blend.gbuffers_armor_glint            = off
blend.gbuffers_damagedblock           = off
#endif

blend.dh_water.colortex0                        = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_basic.colortex0                  = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.dh_water.colortex13                       = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_water.colortex13                 = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_weather.colortex13               = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_hand_water.colortex13            = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_textured.colortex13              = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_entities_translucent.colortex13  = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_particles_translucent.colortex13 = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.gbuffers_block_translucent.colortex13     = ONE ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA

# -------------------
#   Custom Textures
# -------------------

texture.noise = image/noise.png

# atmospheric scattering LUT
texture.deferred.depthtex0 = image/atmosphere/scattering.dat TEXTURE_3D RGB16F 32 64 32 RGB HALF_FLOAT

# 3D noise for clouds
texture.deferred.colortex6.1 = image/worley_bubbly.dat TEXTURE_3D R8 64 64 64 RED UNSIGNED_BYTE
texture.deferred.colortex7.1 = image/worley_swirley.dat TEXTURE_3D R8 64 64 64 RED UNSIGNED_BYTE

# galaxy
texture.deferred.colortex13 = image/galaxy.png

# 3D noise for fog
texture.composite.colortex0 = image/worley_swirley.dat TEXTURE_3D R8 64 64 64 RED UNSIGNED_BYTE

# minecraft clouds texture
#ifdef BLOCKY_CLOUDS
texture.deferred.depthtex2 = minecraft:textures/environment/clouds.png
#endif

# -------------------------
#   Custom Images & SSBOs
# -------------------------

#ifdef COLORED_LIGHTS
image.light_data_img = light_data_sampler rgba rgba16f half_float false false 32 2

#if VOXEL_VOLUME_SIZE == 64
image.voxel_img = voxel_sampler red_integer r8ui unsigned_byte true false 64 64 64

image.light_img_a = light_sampler_a rgba rgba16f half_float false false 64 64 64
image.light_img_b = light_sampler_b rgba rgba16f half_float false false 64 64 64
#elif VOXEL_VOLUME_SIZE == 96
image.voxel_img = voxel_sampler red_integer r8ui unsigned_byte true false 96 96 96

image.light_img_a = light_sampler_a rgba rgba16f half_float false false 96 96 96
image.light_img_b = light_sampler_b rgba rgba16f half_float false false 96 96 96
#elif VOXEL_VOLUME_SIZE == 128
image.voxel_img = voxel_sampler red_integer r8ui unsigned_byte true false 128 128 128

image.light_img_a = light_sampler_a rgba rgba16f half_float false false 128 128 128
image.light_img_b = light_sampler_b rgba rgba16f half_float false false 128 128 128
#elif VOXEL_VOLUME_SIZE == 256
image.voxel_img = voxel_sampler red_integer r8ui unsigned_byte true false 256 256 256

image.light_img_a = light_sampler_a rgba rgba16f half_float false false 256 256 256
image.light_img_b = light_sampler_b rgba rgba16f half_float false false 256 256 256
#elif VOXEL_VOLUME_SIZE == 512
image.voxel_img = voxel_sampler red_integer r8ui unsigned_byte true false 512 512 512

image.light_img_a = light_sampler_a rgba rgba16f half_float false false 512 512 512
image.light_img_b = light_sampler_b rgba rgba16f half_float false false 512 512 512
#endif
#endif

# -------------------
#   Custom Uniforms
# -------------------

uniform.vec2.view_res = vec2(viewWidth, viewHeight)
uniform.vec2.view_pixel_size = vec2(1.0 / viewWidth, 1.0 / viewHeight)

# TAA jitter offset using R2 sequence
# http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/
variable.float.jitter_x = frac(1.3247179572 * frameCounter + 0.5) * 2.0 - 1.0
variable.float.jitter_y = frac(1.7548776662 * frameCounter + 0.5) * 2.0 - 1.0
uniform.vec2.taa_offset = vec2(jitter_x / viewWidth, jitter_y / viewWidth)

# Lighting uniforms

uniform.float.eye_blocklight = smooth(eyeBrightness.x / 240.0, 1.0, 1.0)
uniform.float.eye_skylight   = smooth(eyeBrightness.y / 240.0, 1.0, 1.0)

variable.float.view_up_dir_norm = 1.0 / sqrt((upPosition.x * upPosition.x) + (upPosition.y * upPosition.y) + (upPosition.z * upPosition.z))
variable.float.view_up_dir_x = upPosition.x * view_up_dir_norm
variable.float.view_up_dir_y = upPosition.y * view_up_dir_norm
variable.float.view_up_dir_z = upPosition.z * view_up_dir_norm
uniform.vec3.view_up_dir = vec3(view_up_dir_x, view_up_dir_y, view_up_dir_z)

variable.float.view_sun_dir_norm = 1.0 / sqrt((sunPosition.x * sunPosition.x) + (sunPosition.y * sunPosition.y) + (sunPosition.z * sunPosition.z))
variable.float.view_sun_dir_x = sunPosition.x * view_sun_dir_norm
variable.float.view_sun_dir_y = sunPosition.y * view_sun_dir_norm
variable.float.view_sun_dir_z = sunPosition.z * view_sun_dir_norm
uniform.vec3.view_sun_dir = vec3(view_sun_dir_x, view_sun_dir_y, view_sun_dir_z)

variable.float.sun_dir_x = gbufferModelViewInverse.0.0 * view_sun_dir_x + gbufferModelViewInverse.1.0 * view_sun_dir_y + gbufferModelViewInverse.2.0 * view_sun_dir_z
variable.float.sun_dir_y = gbufferModelViewInverse.0.1 * view_sun_dir_x + gbufferModelViewInverse.1.1 * view_sun_dir_y + gbufferModelViewInverse.2.1 * view_sun_dir_z
variable.float.sun_dir_z = gbufferModelViewInverse.0.2 * view_sun_dir_x + gbufferModelViewInverse.1.2 * view_sun_dir_y + gbufferModelViewInverse.2.2 * view_sun_dir_z
uniform.vec3.sun_dir = vec3(sun_dir_x, sun_dir_y, sun_dir_z)

variable.float.view_moon_dir_norm = 1.0 / sqrt((moonPosition.x * moonPosition.x) + (moonPosition.y * moonPosition.y) + (moonPosition.z * moonPosition.z))
variable.float.view_moon_dir_x = moonPosition.x * view_moon_dir_norm
variable.float.view_moon_dir_y = moonPosition.y * view_moon_dir_norm
variable.float.view_moon_dir_z = moonPosition.z * view_moon_dir_norm
uniform.vec3.view_moon_dir = vec3(view_moon_dir_x, view_moon_dir_y, view_moon_dir_z)

variable.float.moon_dir_x = gbufferModelViewInverse.0.0 * view_moon_dir_x + gbufferModelViewInverse.1.0 * view_moon_dir_y + gbufferModelViewInverse.2.0 * view_moon_dir_z
variable.float.moon_dir_y = gbufferModelViewInverse.0.1 * view_moon_dir_x + gbufferModelViewInverse.1.1 * view_moon_dir_y + gbufferModelViewInverse.2.1 * view_moon_dir_z
variable.float.moon_dir_z = gbufferModelViewInverse.0.2 * view_moon_dir_x + gbufferModelViewInverse.1.2 * view_moon_dir_y + gbufferModelViewInverse.2.2 * view_moon_dir_z
uniform.vec3.moon_dir = vec3(moon_dir_x, moon_dir_y, moon_dir_z)

variable.float.view_light_dir_x = if(sunAngle < 0.5, view_sun_dir_x, view_moon_dir_x)
variable.float.view_light_dir_y = if(sunAngle < 0.5, view_sun_dir_y, view_moon_dir_y)
variable.float.view_light_dir_z = if(sunAngle < 0.5, view_sun_dir_z, view_moon_dir_z)
uniform.vec3.view_light_dir = vec3(view_light_dir_x, view_light_dir_y, view_light_dir_z)

variable.float.light_dir_x = if(sunAngle < 0.5, sun_dir_x, moon_dir_x)
variable.float.light_dir_y = if(sunAngle < 0.5, sun_dir_y, moon_dir_y)
variable.float.light_dir_z = if(sunAngle < 0.5, sun_dir_z, moon_dir_z)
uniform.vec3.light_dir = vec3(light_dir_x, light_dir_y, light_dir_z)

# Time uniforms

uniform.float.me_fade      = if(sun_dir_y < 0.18, 0.37 + 1.2 * max(0.0, -sun_dir_y), 1.7)
uniform.float.me_weight    = pow(clamp(1.0 - me_fade * abs(sun_dir_y - 0.18), 0.0, 1.0), 2.0)
uniform.float.time_sunrise  = if(sun_dir_x > 0.0, 1.0, 0.0) * me_weight
uniform.float.time_noon     = if(sun_dir_y > 0.0, 1.0, 0.0) * (1.0 - me_weight)
uniform.float.time_midnight = if(sun_dir_y < 0.0, 1.0, 0.0) * (1.0 - me_weight)
uniform.float.time_sunset   = if(sun_dir_x < 0.0, 1.0, 0.0) * me_weight

#uniform.float.time_noon_old     = max(1.0 - pow(abs(1.0 - worldTime / 6000.0), 5.0), 0.0)
#uniform.float.time_midnight_old = max(1.0 - pow(abs(3.0 - worldTime / 6000.0), 1.0), 0.0)
#uniform.float.time_sunrise_old  = (1.0 - time_noon_old) * (1.0 - time_midnight_old) * if(between(worldTime, 6000, 18000), 0.0, 1.0)
#uniform.float.time_sunset_old   = (1.0 - time_noon_old) * (1.0 - time_midnight_old) * if(between(worldTime, 6000, 18000), 1.0, 0.0)

# World age in seconds, repeating every 128 days. This is used for animating atmospherics
uniform.float.world_age = ((worldDay % 128) * 24000.0 + worldTime) / 20.0

# Detect whether gamerule doDaylightCycle is enabled
uniform.bool.daylight_cycle_enabled = worldTime > smooth(worldTime, 0.1, 0.1)

# Detect whether world age has drastically changed since the last frame
variable.float.world_age_delta = abs(world_age - smooth(world_age, 0.1, 0.1))
uniform.bool.world_age_changed = world_age_delta > 1.0

uniform.float.lightning_flash_base = if(equals(skyColor.r, skyColor.g, 0.01) && skyColor.r > 0.3, 1.0, 0.0)
uniform.float.lightning_flash_of = smooth(lightning_flash_base, 0.0, 0.75)
uniform.float.lightning_flash_iris = smooth(if(lightningBoltPosition.w > 0.5, lightning_flash_base, 0.0), 0.0, 0.75)

#ifdef MOON_PHASE_AFFECTS_BRIGHTNESS
uniform.float.moon_phase_brightness = if( \
	moonPhase == 0, 1.0,                  \
	moonPhase == 1, 0.875,                \
	moonPhase == 2, 0.75,                 \
	moonPhase == 3, 0.625,                \
	moonPhase == 4, 0.5,                  \
	moonPhase == 5, 0.75,                 \
	moonPhase == 6, 0.875,                \
	moonPhase == 7, 1.0,                  \
	1.0 \
) \
#else
uniform.float.moon_phase_brightness = 1.0
#endif

# Adjust the color saturation of the atmosphere and sunlight colour depending on the time of day
variable.float.blue_hour = exp(-150.0 * (sun_dir_y + 0.07283) * (sun_dir_y + 0.07283))
uniform.float.atmosphere_saturation_boost_amount = 1.10 + 0.20 * blue_hour

# for clouds
variable.float.day_factor_u = clamp(abs(sun_dir.y) / 0.3, 0.0, 1.0)
uniform.float.day_factor = day_factor_u * day_factor_u * (3.0 - 2.0 * day_factor_u)

# Biome uniforms

# Fix biome_precipitation on Iris 1.7 (thanks to sw-52)
#ifndef PPT_NONE
#define PPT_NONE 0
#endif
#ifndef PPT_RAIN
#define PPT_RAIN 1
#endif
#ifndef PPT_SNOW
#define PPT_SNOW 2
#endif

#if MC_VERSION >= 12102
uniform.float.biome_pale_garden = smooth(if(in(biome, BIOME_PALE_GARDEN), 1.0, 0.0), 10, 10)
#else
uniform.float.biome_pale_garden = 0.0
#endif

uniform.float.biome_cave        = smooth(clamp((63.0 - eyeAltitude) / (63.0 - 50.0), 0.0, 1.0) * (1.0 - eyeBrightness.y / 240.0), 5.0, 2.0)
uniform.float.biome_arid        = smooth(if(biome_category == CAT_DESERT || biome_category == CAT_MESA || biome_category == CAT_SAVANNA, 1.0, 0.0), 30, 30)
uniform.float.biome_snowy       = smooth(if(biome_category == CAT_ICY, 1.0, 0.0), 30, 30)
uniform.float.biome_taiga       = smooth(if(biome_category == CAT_TAIGA, 1.0, 0.0), 30, 30)
uniform.float.biome_jungle      = smooth(if(biome_category == CAT_JUNGLE, 1.0, 0.0), 30, 30)
uniform.float.biome_swamp       = smooth(if(biome_category == CAT_SWAMP, 1.0, 0.0), 30, 30)
uniform.float.biome_temperate   = 1.0 - biome_arid - biome_snowy - biome_taiga - biome_jungle - biome_swamp - biome_pale_garden
uniform.float.biome_may_rain    = smooth(if(biome_precipitation == PPT_RAIN, 1.0, 0.0), 30, 30)
uniform.float.biome_may_snow    = smooth(if(biome_precipitation == PPT_SNOW, 1.0, 0.0), 30, 30)
uniform.float.biome_temperature = smooth(temperature * 2.0 - 1.0, 1000, 1000)
uniform.float.biome_humidity    = smooth(rainfall * 2.0 - 1.0, 1000, 1000)

uniform.float.desert_sandstorm    = smooth(if(biome_category == CAT_DESERT || biome_category == CAT_MESA, rainStrength, 0.0), 60.0, 30.0)
uniform.float.biome_may_sandstorm = smooth(if(biome_category == CAT_DESERT || biome_category == CAT_MESA, 1.0, 0.0), 30, 30)

# Distant Horizons combined depth buffer

#ifdef DISTANT_HORIZONS
# references:
# https://shaderlabs.org/wiki/Shader_Tricks#Constructing_perspective_projection_matrices
# https://www.symbolab.com/solver/matrix-inverse-calculator/inverse%5Cbegin%7Bpmatrix%7D%5Cfrac%7Bcot%5Cleft(%5Cfrac%7B%5Ctheta%7D%7B2%7D%5Cright)%7D%7Ba%7D%260%260%260%5C%5C%20%20%200%26cot%5Cleft(%5Cfrac%7B%5Ctheta%7D%7B2%7D%5Cright)%260%260%5C%5C%20%20%200%260%26-%5Cfrac%7BZ_%7Bf%7D%2BZ_%7Bn%7D%7D%7BZ_%7Bf%7D-Z_%7Bn%7D%7D%26-%20%5Cfrac%7B2%20Z_%7Bf%7D%20Z_%7Bn%7D%7D%7BZ_%7Bf%7D%20-%20Z_%7Bn%7D%7D%5C%5C%20%20%200%260%26-1%260%5Cend%7Bpmatrix%7D?or=input

variable.float.fov = 2.0 * atan(1.0 / (gbufferProjection.0.0 * aspectRatio))

uniform.float.combined_near = near
uniform.float.combined_far = dhRenderDistance
uniform.vec4.combined_projection_matrix_0 = vec4(gbufferProjection.0.0, 0.0, 0.0, 0.0)
uniform.vec4.combined_projection_matrix_1 = vec4(0.0, gbufferProjection.1.1, 0.0, 0.0)
uniform.vec4.combined_projection_matrix_2 = vec4(gbufferProjection.2.0, gbufferProjection.2.1, (combined_far + combined_near) / (combined_near - combined_far), -1.0)
uniform.vec4.combined_projection_matrix_3 = vec4(0.0, 0.0, (2.0 * combined_far * combined_near) / (combined_near - combined_far), 0.0)

uniform.vec4.combined_projection_matrix_inverse_0 = vec4(gbufferProjectionInverse.0.0, 0.0, 0.0, 0.0)
uniform.vec4.combined_projection_matrix_inverse_1 = vec4(0.0, gbufferProjectionInverse.1.1, 0.0, 0.0)
uniform.vec4.combined_projection_matrix_inverse_2 = vec4(0.0, 0.0, 0.0, -(combined_far - combined_near) / (2.0 * combined_far * combined_near))
uniform.vec4.combined_projection_matrix_inverse_3 = vec4(gbufferProjectionInverse.3.0, gbufferProjectionInverse.3.1, -1.0, (combined_far + combined_near) / (2.0 * combined_far * combined_near))
#endif
