clouds=off
stars=false
vignette=false
underwaterOverlay=false
dynamicHandLight=true
oldLighting=false
separateAo = true
rain.depth = false
beacon.beam.depth = true

iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE

#if RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3
    sun=true
    moon=true
#else
    sun=false
    moon=false
#endif

#ifdef LPV_ENABLED
    shadow.enabled = true
    shadow.culling = reversed
    voxelizeLightBlocks = true
#endif

#ifndef RENDER_ENTITY_SHADOWS
    shadowBlockEntities = false
    shadowEntities = false
    #ifdef RENDER_PLAYER_SHADOWS
        shadowPlayer = true
    #endif
#endif

#if defined TRANSLUCENT_ENTITIES && defined IS_IRIS
  separateEntityDraws = true
#else
  separateEntityDraws = false
#endif

program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS
program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS

program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS
program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS

program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS
program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS

#if defined DISTANT_HORIZONS && defined IS_IRIS

    #if defined DISTANT_HORIZONS_SHADOWMAP
        dhShadow.enabled = true
    #else
        dhShadow.enabled = false
    #endif

    program.world0/dh_terrain.enabled = true
    program.world0/dh_water.enabled = true
    program.world1/dh_terrain.enabled = true
    program.world1/dh_water.enabled = true
    program.world-1/dh_terrain.enabled = true
    program.world-1/dh_water.enabled = true

    blend.dh_terrain = off
    blend.dh_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
#else
    dhShadow.enabled = false
    program.world0/dh_terrain.enabled = false
    program.world0/dh_water.enabled = false
    program.world1/dh_terrain.enabled = false
    program.world1/dh_water.enabled = false
    program.world-1/dh_terrain.enabled = false
    program.world-1/dh_water.enabled = false
#endif


#ifdef CLOUDS_INTERSECT_TERRAIN
    program.world0/deferred2.enabled = false
    program.world0/deferred2.enabled = false
    program.world1/deferred2.enabled = false
    program.world1/deferred2.enabled = false
    program.world-1/deferred2.enabled = false
    program.world-1/deferred2.enabled = false
#endif

program.composite5.enabled = TAA_UPSCALING

# SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ZERO
# SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
#Get the correct alpha value : S_A*(1-DST_A)+DST_A

# terrible blending for shadows on purpose
blend.gbuffers_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_armor_glint = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_hand_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_textured = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_textured_lit = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_basic = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_weather = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_block_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_beaconbeam = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_entities_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_spidereyes = ONE ONE ONE ONE
blend.gbuffers_skytextured = ONE ONE ONE ZERO
blend.shadow = SRC_COLOR ZERO ONE ZERO

#  Disable blending
blend.gbuffers_terrain = off
blend.gbuffers_hand = off
blend.gbuffers_block = off
blend.gbuffers_entities = off
blend.gbuffers_damagedblock = off

# this is important for refraction and glass tint to work correctly
blend.gbuffers_water.colortex11 = off
blend.gbuffers_hand_water.colortex11 = off
blend.gbuffers_entities_translucent.colortex11 = off

blend.composite.colortex5 = off
blend.composite.colortex12 = off
blend.composite.colortex13 = off
blend.composite.colortex14 = off

#  Alpha test
alphaTest.gbuffers_terrain = GREATER 0.1
alphaTest.gbuffers_hand = GREATER 0.1
alphaTest.gbuffers_weather = false
alphaTest.gbuffers_water = false
alphaTest.gbuffers_skybasic = false
alphaTest.gbuffers_skytextured = false

sliders = NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B END_HAZE_DENSTIY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY  SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED  WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY  DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog  Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness  AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal fstop MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH
profile.SHADER_VERSION_LABEL = TONEMAP=ToneMap_AgX_minimal
profile.OLD_BLISS_TONEMAP = TONEMAP=ToneMap_Hejl2015

screen.columns=2
screen = \
<profile> <empty>     \
<empty>             <empty>     \
[Direct_Light]      [World]     \
[Ambient_light]     [Fog]       \
[Post_Processing]   [Clouds]    \
[Resource_Pack_Support] [Climate] \
<empty> <empty>                 \
[Misc_Settings] [Mod_support] \

# screen = \
# BLISS_SHADERS       <empty>     \
# <empty>             <empty>     \
# [Direct_Light]      [World]     \
# [Ambient_light]     [Fog]       \
# [Post_Processing]   [Clouds]    \
# [LabPBR] [Climate]              \
# <empty> <empty>                 \
# [Misc_Settings] [DISTANT_HORIZONS_SETTINGS] \

######## LIGHTING
    ### DIRECT LIGHT
        screen.Direct_Light.columns=1
        screen.Direct_Light =  [Shadows] [Subsurface_Scattering] [Sun_and_Moon_Colors]  OLD_LIGHTLEAK_FIX sunPathRotation sun_illuminance MOONPHASE_BASED_MOONLIGHT moon_illuminance

        screen.Shadows.columns=1
        screen.Shadows = TRANSLUCENT_COLORED_SHADOWS SCREENSPACE_CONTACT_SHADOWS RENDER_ENTITY_SHADOWS RENDER_PLAYER_SHADOWS entityShadowDistanceMul <empty>  [Filtering]  shadowMapResolution shadowDistance OPTIMIZED_SHADOW_DISTANCE
        
        screen.Filtering.columns=1
        screen.Filtering = BASIC_SHADOW_FILTER SHADOW_FILTER_SAMPLE_COUNT Min_Shadow_Filter_Radius <empty> Variable_Penumbra_Shadows VPS_Search_Samples Max_Shadow_Filter_Radius Max_Filter_Depth  

        screen.Sun_and_Moon_Colors.columns = 1
        screen.Sun_and_Moon_Colors =  sunColorR  sunColorG  sunColorB moonColorR moonColorG moonColorB colortype Sun_temp Moon_temp

    ### AMBIENT LIGHT
        screen.Ambient_light.columns=1
        screen.Ambient_light = [LPV] [Torch_Colors] [Ambient_Colors] \
                                MIN_LIGHT_AMOUNT indirect_effect \
                                <empty> <empty> \
                                AO_Strength GI_Strength \
                                ambientOcclusionLevel HQ_SSGI \
                                Hand_Held_lights SKY_CONTRIBUTION_IN_SSRT \
                                HANDHELD_LIGHT_RANGE UseQuarterResDepth

            screen.Torch_Colors.columns=1
            screen.Torch_Colors = TORCH_AMOUNT Emissive_Brightness Emissive_Curve <empty> TORCH_R TORCH_G TORCH_B  

            screen.Ambient_Colors.columns=1
            screen.Ambient_Colors = ambient_brightness MIN_LIGHT_AMOUNT <empty> AmbientLight_R AmbientLight_G AmbientLight_B

    ### RESOURCE PACK SUPPORT
        screen.Resource_Pack_Support.columns = 1
        screen.Resource_Pack_Support = [Reflections] [Emissives] [Subsurface_Scattering] [POM] [Porosity] MATERIAL_AO RESOURCEPACK_SKY

        screen.Reflections.columns=2
        screen.Reflections =  Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold  Sky_reflection Dynamic_SSR_quality
    
        screen.Subsurface_Scattering.columns=1
        screen.Subsurface_Scattering = SSS_TYPE sss_density_multiplier sss_absorbance_multiplier LabSSS_Curve  <empty> MISC_BLOCK_SSS MOB_SSS <empty> Ambient_SSS ambientsss_brightness

        screen.Emissives.columns = 1
        screen.Emissives = EMISSIVE_TYPE Emissive_Brightness Emissive_Curve
    
        screen.POM.columns=1
        screen.POM = POM Adaptive_Step_length MAX_ITERATIONS POM_DEPTH MAX_DIST  Horrible_slope_normals

        screen.Porosity.columns = 1
        screen.Porosity = Porosity <empty> Puddles Puddle_Size 

    ### FloodFill
        screen.LPV.columns = 2
        screen.LPV = LPV_ENABLED LPV_SIZE \
                     LPV_SATURATION LPV_COLORED_CANDLES \
                     LPV_TINT_SATURATION LPV_REDSTONE_LIGHTS \
                     LPV_NORMAL_STRENGTH LPV_ENTITY_LIGHTS \
                     LPV_NOSHADOW_HACK <empty> \
                     LPV_VL_FOG_ILLUMINATION LPV_VL_FOG_ILLUMINATION_BRIGHTNESS
        
######## WORLD
    screen.World.columns=1
    screen.World = [Water] [Waving_Stuff] [Sky_coefficients] SKY_GROUND <empty> AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED
       ### WAVING STUFF
            screen.Waving_Stuff.columns=1
            screen.Waving_Stuff = WAVY_PLANTS WAVY_STRENGTH WAVY_SPEED
        
######## CLIMATE
    screen.Climate.columns=1
    screen.Climate = [Seasons] <empty> PER_BIOME_ENVIRONMENT [SWAMP] [JUNGLE] [DARKFOREST] SNOW_STORMS SAND_STORMS

        ## BIOME SPECIFICS
            screen.SWAMP.columns=1
            screen.SWAMP = SWAMP_ENV SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY <empty> SWAMP_R SWAMP_G SWAMP_B

            screen.JUNGLE.columns=1
            screen.JUNGLE = JUNGLE_ENV JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY <empty> JUNGLE_R JUNGLE_G JUNGLE_B

            screen.DARKFOREST.columns=1
            screen.DARKFOREST = DARKFOREST_ENV DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY <empty> DARKFOREST_R DARKFOREST_G DARKFOREST_B

        ## SEASONS
            screen.Seasons.columns=1
            screen.Seasons = Seasons Season_Length Start_Season Snowy_Winter <empty> [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors] 

                screen.Summer_colors.columns=1
                screen.Summer_colors = Summer_R Summer_G Summer_B <empty> Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B

                screen.Fall_colors.columns=1
                screen.Fall_colors = Fall_R Fall_G Fall_B <empty> Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B

                screen.Winter_colors.columns=1
                screen.Winter_colors = Winter_R Winter_G Winter_B <empty> Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B

                screen.Spring_colors.columns=1
                screen.Spring_colors = Spring_R Spring_G Spring_B <empty> Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B

      
######## ATMOSPHERICS

        screen.Sky_coefficients.columns=1
        screen.Sky_coefficients = Sky_Brightness sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB
       
        ### CLOUDS
            screen.Clouds.columns = 3
            screen.Clouds = VOLUMETRIC_CLOUDS CLOUDS_SHADOWS Cloud_Speed \
                            CLOUDS_QUALITY CLOUD_SHADOW_STRENGTH  Rain_coverage \
                            minRayMarchSteps maxRayMarchSteps [DAILY_WEATHER] \
                            CloudLayer0             CloudLayer1             CloudLayer2 \
                            CloudLayer0_coverage    CloudLayer1_coverage    CloudLayer2_coverage \
                            CloudLayer0_density     CloudLayer1_density     CloudLayer2_density \
                            CloudLayer0_height      CloudLayer1_height      CloudLayer2_height \

        ### FOG
            screen.Fog.columns=2
            screen.Fog =    VL_RENDER_RESOLUTION VL_SAMPLES \
                            FOG_START_HEIGHT BLOOMY_FOG \
                            <empty> <empty> \
                            Haze_amount RainFog_amount \
                            [TOD_fog] [Cave_Fog]  \
                            [END_AND_NETHER_FOG] <empty> \
                            <empty> <empty> \
                            BorderFog PER_BIOME_ENVIRONMENT \
                            RAYMARCH_CLOUDS_WITH_FOG 

                screen.TOD_fog.columns=2
                screen.TOD_fog = TOD_Fog_mult <empty> Morning_Uniform_Fog Morning_Cloudy_Fog Noon_Uniform_Fog Noon_Cloudy_Fog Evening_Uniform_Fog Evening_Cloudy_Fog Night_Uniform_Fog Night_Cloudy_Fog
                
                screen.Cave_Fog.columns=1
                screen.Cave_Fog = CAVE_FOG CAVE_FOG_DARKEN_SKY CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B

                screen.Fog_Color.columns=1
                screen.Fog_Color = fog_coefficientRayleighR fog_coefficientRayleighG fog_coefficientRayleighB fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB
                
                screen.END_AND_NETHER_FOG.columns=1
                screen.END_AND_NETHER_FOG = END_LIGHTNING END_STORM_DENSTIY END_HAZE_DENSTIY <empty> NETHER_PLUME_DENSITY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY <empty> [FOG_LIGHTING_COLORS]
                    screen.FOG_LIGHTING_COLORS.columns=1
                    screen.FOG_LIGHTING_COLORS = VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B <empty> END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B
      
        ### WATER
            screen.Water.columns=2
            screen.Water =  WATER_REFLECTIONS Refraction \
            WATER_SUN_SPECULAR Vanilla_like_water \
            SCREENSPACE_REFLECTIONS SSR_STEPS \
            WATER_BACKGROUND_SPECULAR Dirt_Amount \
            [Water_fog_color] Water_Top_Layer \
            SNELLS_WINDOW WATER_WAVE_STRENGTH WATER_WAVE_SPEED LARGE_WAVE_DISPLACEMENT

                screen.Water_fog_color.columns=1
                screen.Water_fog_color = Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B

######## POST
    screen.Post_Processing.columns=2
    screen.Post_Processing =  [TAA_OPTIONS] [Tonemapping] [Exposure] [DepthOfField] [Purkinje_effect] [COLOR_GRADING] [GAMEPLAY_EFFECTS] <empty> SHARPENING BLOOM_STRENGTH CAMERA_GRIDLINES MOTION_BLUR MOTION_BLUR_STRENGTH
        ### TAA
            screen.TAA_OPTIONS.columns = 1
            screen.TAA_OPTIONS= SCREENSHOT_MODE <empty> TAA BLEND_FACTOR <empty> TAA_UPSCALING SCALE_FACTOR
        ### DOF  
            screen.DepthOfField.columns = 1
            screen.DepthOfField = DOF_QUALITY DOF_ANAMORPHIC_RATIO focal fstop MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY [JITTER_DOF]
				screen.JITTER_DOF.columns=1
				screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR SCREENSHOT_MODE
        ### EXPOSURE
            screen.Exposure.columns = 1
            screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed  Manual_exposure_value
        ### TONEMAPS
            screen.Tonemapping.columns = 1
            screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK
        ### PURKINJE
            screen.Purkinje_effect.columns = 1
            screen.Purkinje_effect = Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Purkinje_Multiplier
		### COLOR GRADING
			screen.COLOR_GRADING.columns = 3
			screen.COLOR_GRADING = \
			LUMINANCE_CURVE LOWER_CURVE UPPER_CURVE \
			<empty> <empty> <empty> \
			COLOR_GRADING_ENABLED <empty> <empty> \
			SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R \
			SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G \
			SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B \
			SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL

        ### COOL GAMEPLAY EFFECTS
        screen.GAMEPLAY_EFFECTS = MOTION_AMOUNT DAMAGE_TAKEN_EFFECT LOW_HEALTH_EFFECT WATER_ON_CAMERA_EFFECT


            
######## MOD SUPPORT SETTINGS
    screen.Mod_support = [DISTANT_HORIZONS_SETTINGS]  [PHYSICS_MOD_OCEAN_IS_NOT_SUPPORTED]
    
        screen.DISTANT_HORIZONS_SETTINGS.columns = 1
        screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE <empty> DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS <empty> DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF <empty> DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution <empty> TOGGLE_VL_FOG VOLUMETRIC_CLOUDS


######## MISC SETTINGS
    screen.Misc_Settings = [EXPERIMENTAL_STUFF] DEBUG_VIEW [the_end_orb] display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX TRANSLUCENT_ENTITIES LIGHTING_EFFECTS_BLUR_FILTER FORCE_TRANSLUCENT_GLASS [selection_box_outline]

        screen.EXPERIMENTAL_STUFF = CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER HYPER_DETAILED_WAVES OLD_BLOOM PLANET_GROUND_BRIGHTNESS LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS OLD_CAVE_DETECTION

        screen.the_end_orb.columns = 1
        screen.the_end_orb = THE_ORB ORB_X ORB_Y ORB_Z ORB_ColMult ORB_R ORB_G ORB_B
        
        screen.selection_box_outline.columns = 1
        screen.selection_box_outline = SELECT_BOX SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B


#####################################
####### WEATHER RELATED STUFF #######
#####################################

    screen.DAILY_WEATHER.columns = 2
    screen.DAILY_WEATHER = Daily_Weather CHOOSE_RANDOM_WEATHER_PROFILE \
                           [DAY0_WEATHER] [DAY5_WEATHER] \
                           [DAY1_WEATHER] [DAY6_WEATHER] \
                           [DAY2_WEATHER] [DAY7_WEATHER] \
                           [DAY3_WEATHER] [DAY8_WEATHER] \
                           [DAY4_WEATHER] [DAY9_WEATHER]
    
    screen.DAY0_WEATHER.columns = 2
    screen.DAY0_WEATHER  = DAY0_l0_coverage DAY0_l0_density DAY0_l1_coverage DAY0_l1_density DAY0_l2_coverage DAY0_l2_density DAY0_ufog_density DAY0_cfog_density
    screen.DAY1_WEATHER.columns = 2
    screen.DAY1_WEATHER  = DAY1_l0_coverage DAY1_l0_density DAY1_l1_coverage DAY1_l1_density DAY1_l2_coverage DAY1_l2_density DAY1_ufog_density DAY1_cfog_density
    screen.DAY2_WEATHER.columns = 2
    screen.DAY2_WEATHER  = DAY2_l0_coverage DAY2_l0_density DAY2_l1_coverage DAY2_l1_density DAY2_l2_coverage DAY2_l2_density DAY2_ufog_density DAY2_cfog_density                   
    screen.DAY3_WEATHER.columns = 2
    screen.DAY3_WEATHER  = DAY3_l0_coverage DAY3_l0_density DAY3_l1_coverage DAY3_l1_density DAY3_l2_coverage DAY3_l2_density DAY3_ufog_density DAY3_cfog_density  
    screen.DAY4_WEATHER.columns = 2
    screen.DAY4_WEATHER  = DAY4_l0_coverage DAY4_l0_density DAY4_l1_coverage DAY4_l1_density DAY4_l2_coverage DAY4_l2_density DAY4_ufog_density DAY4_cfog_density 
    screen.DAY5_WEATHER.columns = 2
    screen.DAY5_WEATHER  = DAY5_l0_coverage DAY5_l0_density DAY5_l1_coverage DAY5_l1_density DAY5_l2_coverage DAY5_l2_density DAY5_ufog_density DAY5_cfog_density 
    screen.DAY6_WEATHER.columns = 2
    screen.DAY6_WEATHER  = DAY6_l0_coverage DAY6_l0_density DAY6_l1_coverage DAY6_l1_density DAY6_l2_coverage DAY6_l2_density DAY6_ufog_density DAY6_cfog_density 
    screen.DAY7_WEATHER.columns = 2
    screen.DAY7_WEATHER  = DAY7_l0_coverage DAY7_l0_density DAY7_l1_coverage DAY7_l1_density DAY7_l2_coverage DAY7_l2_density DAY7_ufog_density DAY7_cfog_density 
    screen.DAY8_WEATHER.columns = 2
    screen.DAY8_WEATHER  = DAY8_l0_coverage DAY8_l0_density DAY8_l1_coverage DAY8_l1_density DAY8_l2_coverage DAY8_l2_density DAY8_ufog_density DAY8_cfog_density 
    screen.DAY9_WEATHER.columns = 2
    screen.DAY9_WEATHER  = DAY9_l0_coverage DAY9_l0_density DAY9_l1_coverage DAY9_l1_density DAY9_l2_coverage DAY9_l2_density DAY9_ufog_density DAY9_cfog_density


# thank you sixthsurge!
#ifdef LIGHTNING_FLASH
    #ifdef IS_IRIS 
        variable.float.lightningFlash = smooth(if(lightningBoltPosition.w > 0.0, 1.0, 0.0), 0.0, 0.0)
    #else
        variable.float.lightningFlash = smooth(if(equals(skyColor.r, skyColor.g, 0.01) && skyColor.r > 0.3, 1.0, 0.0), 0.0, 0.0)
    #endif
#else
    variable.float.lightningFlash = 0.0
#endif

uniform.vec3.lightningEffect = vec3(77.0 * lightningFlash, 153.0 * lightningFlash, 255.0 * lightningFlash) 

###################################
####### BIOME RELATED STUFF #######
###################################

# in seconds
variable.int.BiomeTransitionTime = 60

#ifdef SWAMP_ENV
    uniform.float.isSwamps = smooth(if(in(biome, 6, 52, 7), 1,0), BiomeTransitionTime, BiomeTransitionTime)
#else
    uniform.float.isSwamps = 0.0
#endif

#ifdef JUNGLE_ENV
    uniform.float.isJungles = smooth(if(in(biome, 23, 24, 25), 1,0), BiomeTransitionTime, BiomeTransitionTime)
#else
    uniform.float.isJungles = 0.0
#endif

#ifdef DARKFOREST_ENV
    uniform.float.isDarkForests = smooth(if(in(biome, 11), 1,0), BiomeTransitionTime, BiomeTransitionTime)
#else
    uniform.float.isDarkForests = 0.0
#endif

#ifdef MANGROVE_ENV
    uniform.float.isMangroveSwamp = smooth(if(in(biome, 7), 1,0), BiomeTransitionTime, BiomeTransitionTime)
#else
    uniform.float.isMangroveSwamp = 0.0
#endif

#ifdef SNOW_STORMS
    uniform.float.snowStorm = smooth(if(in(biome, 31, 32, 33, 34), rainStrength, 0), 15,30)
#else
    uniform.float.snowStorm = 0.0;
#endif

#ifdef SAND_STORMS
    #if defined IS_IRIS
        uniform.float.sandStorm = smooth(if(in(biome, 5, 26, 27, 28), thunderStrength, 0), 15,30)
    #else
        uniform.float.sandStorm = smooth(if(in(biome, 5, 26, 27, 28), rainStrength, 0), 15,30)
    #endif
#else
    uniform.float.sandStorm = 0.0;
#endif

uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, 32, 33, 34,    5, 17, 18, 26, 27, 28), 0,1), 15,15)

############################
####### RANDOM STUFF #######
############################

#if defined WATER_ON_CAMERA_EFFECT
    uniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0)
#endif

#if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT 
    #ifdef IS_IRIS
        variable.float.Currenthealth = currentPlayerHealth * maxPlayerHealth
        uniform.float.oneHeart =   smooth(if(Currenthealth <= 2.0 && currentPlayerHealth > -1.0,  1,0),   0.0,1.0)
        uniform.float.threeHeart = smooth(if(Currenthealth <= 6.0 && currentPlayerHealth > -1.0,  1,0),   0.0,1.0)

        variable.float.interpolatedHealth = smooth(if(is_hurt, 0.0, Currenthealth), 0.0, 1.0)
        
        # detect over 5 hearts of damage taken
        variable.bool.largeHealthDifference = (interpolatedHealth - Currenthealth) >= 7.0
        variable.bool.delayedCritDamage = smooth(if(largeHealthDifference, 1.0, 0.0), 0.0, 1.0) > 0.01

        uniform.float.CriticalDamageTaken = smooth(if(delayedCritDamage && currentPlayerHealth > -1.0, 1.0, 0.0), 0.5, 3.0) 

        # detect over 2 hearts of damage taken
        variable.bool.smallHealthDifference = (interpolatedHealth - Currenthealth) >= 3.0
        uniform.float.MinorDamageTaken = smooth(if(smallHealthDifference && currentPlayerHealth > -1.0, 5.0, 0.0), 0.5, 1.0) 

    #else
        uniform.bool.isDead = !is_alive
    #endif
#endif

#if defined OLD_CAVE_DETECTION
    variable.bool.inTheDarkTimer = smooth(if(eyeBrightness.y < 0.01, 1.0, 0.0), 10.0, 0.0) > 0.99

    uniform.float.caveDetection = smooth(if(inTheDarkTimer, 1.0, 0.0), 3.0, 1.0)
#else
    # the idea is to modulate the mood value between 0 - 1
    # then check if the modulated value is non-zero. when it goes back to zero, it will have a very slowly deteriorating value.
    # that value immediately regenerates when it modulates to 1 again. this way, i can check if the mood is climbing by checking if the smoothed value is above zero.

    # doing this is just for readablity, not required.
    variable.float.playerMoodPercent = playerMood*100.0 + 1.0
    # modulo 0 - 1
    variable.float.modMood = playerMoodPercent - floor(playerMoodPercent)

    # check if mood is increasing.
    # and only activate when mood is above the threshold (5% mood)
    # make sure it degenerates slow enough that mood can reach 5% after the mood flips to 0% from 100%
    variable.bool.moodIsClimbing = smooth(if(modMood > 0.50 && playerMoodPercent > 4.0, 1.0, eyeBrightness.x/240.0), 0.0, 10.0) > 0.1

    # add one more check to turn it off when lightlevels are not zero
    uniform.float.caveDetection = smooth(if(moodIsClimbing && eyeBrightness.y < 0.01, 1.0, 0.0), 3.0, 1.0)
#endif


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

texture.noise = texture/noises.png
texture.composite.colortex6 = texture/blueNoise.png

variable.float.texelSizeX = 1.0/viewWidth
variable.float.texelSizeY = 1.0/viewHeight
uniform.vec2.texelSize = vec2(texelSizeX,texelSizeY)

uniform.int.framemod8 = frameCounter%8

variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z)
variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z)

variable.float.sunPosX = sunPosition.x/normSunVec
variable.float.sunPosY = sunPosition.y/normSunVec
variable.float.sunPosZ = sunPosition.z/normSunVec

uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ)

variable.float.upPosX = upPosition.x/normUpVec
variable.float.upPosY = upPosition.y/normUpVec
variable.float.upPosZ = upPosition.z/normUpVec

uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ)
uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ
uniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0

#Max angle at frustrum diagonal
variable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio)))
uniform.float.cosFov = cos(maxAngle)
variable.float.viewDirX = gbufferModelViewInverse.2.0
variable.float.viewDirY = gbufferModelViewInverse.2.1
variable.float.viewDirZ = gbufferModelViewInverse.2.2
variable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ)
variable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView
variable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView
variable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView

uniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ)

variable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2)
variable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2)
variable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2)

uniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0)

variable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ)
variable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ)
variable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ)

variable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ)
variable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ)
variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ)

uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ)

uniform.float.shadowMaxProj = 150.0/abs(sunPosY) 


###############################
####### FLOODFILL STUFF #######
###############################

#ifdef LPV_ENABLED
    image.imgBlockData = texBlockData RG_INTEGER RG32UI UNSIGNED_INT false false 2048

    #if   LPV_SIZE == 8
        image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256
        image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 256 256 256
        image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 256 256 256
    #elif LPV_SIZE == 7
        image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128
        image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 128 128 128
        image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 128 128 128
    #elif LPV_SIZE == 6
        image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64
        image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 64 64 64
        image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 64 64 64
    #endif
#else
    program.world1/setup.enabled = false
    program.world0/setup.enabled = false
    program.world-1/setup.enabled = false
    
    program.world1/shadow.enabled = false
    program.world-1/shadow.enabled = false
    
    program.world1/shadowcomp.enabled = false
    program.world0/shadowcomp.enabled = false
    program.world-1/shadowcomp.enabled = false
#endif