#Global Settings

# The DH shadow pass is automatically enabled. It can be turned on or off with the shader property dhShadow.enabled.
# Distant Horizons has no set shadow distance; all chunks will be rendered.
dhShadow.enabled=false

# Enable or disable old hand light 
# Backwards compatibility for shader packs not supporting main and off hand.
# When enabled uses the handheld item with higher light value for the main hand.  
# The old hand light is also controlled by "Video Settings -> Shaders -> Old Hand Light" with higher priority
#oldHandLight=true|false

# Enable or disable old block lighting with fixed multiplier
# The old block lighting is also controlled by "Video Settings -> Shaders -> Old Lighting" with higher priority
# oldLighting=true|false
oldLighting=false

# Enable or disable rendering of translucent blocks (water, stained glass) in the shadow pass
# shadowTranslucent=true|false
shadowTranslucent=true

# Frustum culling
# Enable or disable frustum culling
frustum.culling=true

# Enable or disable the dynamic hand light from "Dynamic Lights"
# This option can be used to disable the dynamic hand light from "Dynamic Lights" if the shader implements its own hand light.
# dynamicHandLight=true|false

# Enable or disable underwater screen overlay
underwaterOverlay=false

# Enable or disable sun rendering
# sun=true|false

# Enable or disable moon rendering
# moon=true|false

# Disable the shadow progam if shadows or VL are disabled
program.shadow.enabled=Shadows || Volumetric_Lighting

#Final screen
screen=[AA_SCREEN] [BLOOM_SCREEN] [COLORS_SCREEN] [DOF_SCREEN] [FOG_SCREEN] [MB_SCREEN] [NORMALMAP_SCREEN] [REFLECTIONS_SCREEN] [SKY_SCREEN] [SHADOWS_SCREEN] [SHADING_SCREEN] [WAVING_SCREEN] [EMISSIVE_SCREEN] [Debug] MobsFlashRed Whiteworld

#Sub-screens:
screen.AA_SCREEN=TAA TAA_sharpness
screen.BLOOM_SCREEN=Bloom bloom_strength
screen.COLORS_SCREEN=Brightness Contrast [WATERC_SCREEN] [LIGHTINGC_SCREEN]
screen.WATERC_SCREEN=watertex wtexblend waterCR <empty> waterCG <empty> waterCB <empty> waterA
screen.LIGHTINGC_SCREEN=HandLight <empty> eyeLight <empty> light_brightness <empty> r_multiplier <empty> g_multiplier <empty> b_multiplier
screen.MB_SCREEN=Motionblur MB_strength
screen.DOF_SCREEN=Depth_of_Field DoF_Strength smoothDof <empty> Distance_Blur Dof_Distance_View
screen.SKY_SCREEN=Lens_Flares Lens_Flares_Strength Rain_Drops <empty> Godrays Godrays_Density Volumetric_Lighting VL_amount Clouds cloudsIT Cloudsblur cloud_height defskybox skyboxblendfactor customStars sunPathRotation Moonlight WeatherAngle
screen.SHADOWS_SCREEN=Shadows ColoredShadows Penumbra grass_shadows shadowMapResolution raytracedShadows shadowDistance shadow_samples Nearshadowplane Farshadowplane
screen.WAVING_SCREEN=animationSpeed <empty> Waving_Grass Waving_Tallgrass Waving_Entities Waving_Leaves Waving_Vines Waving_Fire Waving_Lanterns Waving_Lava Waving_Lilypads Waving_Water waves_amplitude
screen.NORMALMAP_SCREEN=nMap POM_RES <empty> POM_DEPTH <empty> POM_DIST WaterParallax waterheight
screen.FOG_SCREEN=Fog wFogDensity morningFog Underwater_Fog uFogDensity uwatertint
screen.EMISSIVE_SCREEN=minlight <empty> emissive_R <empty> emissive_G <empty> emissive_B
screen.REFLECTIONS_SCREEN=waterRefl Refraction Caustics causticsStrength iceRefl waveSize metallicRefl metalStrength polishedRefl metallicSky RainReflections rainNoise <empty> BiomeCheck Cloud_reflection cloudreflIT
screen.SHADING_SCREEN=SSDO ao_strength Celshading Celborder <empty> Celradius

screen.Debug=Showbuffer
#screen.Experimental=*

sliders=TAA_sharpness VL_amount ao_strength Celborder Celradius eyeLight emissive_R emissive_G emissive_B waterCR waterCG waterCB waterA light_brightness r_multiplier g_multiplier b_multiplier shadow_samples Nearshadowplane Farshadowplane shadowDistance Brightness Contrast DoF_Strength Dof_Distance_View wFogDensity uFogDensity POM_DIST POM_DEPTH minlight cloudsIT cloudreflIT cloud_height skyboxblendfactor sunPathRotation rainNoise waveSize causticsStrength AS_sharpening waves_amplitude wtexblend metalStrength metallicSky

# Setup for different colors per biome
uniform.float.inSwamp=smooth(1, if(in(biome, BIOME_SWAMP, BIOME_SWAMP_HILLS), 1, 0), 5)

# Rainy biomes
#uniform.bool.rainBiomes=in(biome, BIOME_PLAINS, BIOME_SUNFLOWER_PLAINS, BIOME_FOREST, BIOME_WOODED_HILLS, BIOME_FLOWER_FOREST, BIOME_BIRCH_FOREST, BIOME_BIRCH_FOREST_HILLS, BIOME_TALL_BIRCH_FOREST, BIOME_TALL_BIRCH_HILLS, BIOME_DARK_FOREST, BIOME_DARK_FOREST_HILLS, BIOME_SWAMP, BIOME_SWAMP_HILLS, BIOME_JUNGLE, BIOME_JUNGLE_HILLS, BIOME_MODIFIED_JUNGLE, BIOME_JUNGLE_EDGE, BIOME_MODIFIED_JUNGLE_EDGE, BIOME_RIVER, BIOME_BEACH, BIOME_MUSHROOM_FIELDS, BIOME_MUSHROOM_FIELD_SHORE, BIOME_OCEAN, BIOME_DEEP_OCEAN, BIOME_COLD_OCEAN, BIOME_DEEP_COLD_OCEAN, BIOME_WARM_OCEAN, BIOME_LUKEWARM_OCEAN, BIOME_DEEP_LUKEWARM_OCEAN)

# Rainy biomes below y = 90+ otherwise snowy, using cameraPosition.y to workaround this
#uniform.bool.coldBiomes=in(biome, BIOME_MOUNTAINS, BIOME_GRAVELLY_MOUNTAINS, BIOME_WOODED_MOUNTAINS, BIOME_MODIFIED_GRAVELLY_MOUNTAINS, BIOME_MOUNTAIN_EDGE, BIOME_TAIGA, BIOME_TAIGA_HILLS, BIOME_TAIGA_MOUNTAINS, BIOME_GIANT_TREE_TAIGA, BIOME_GIANT_TREE_TAIGA_HILLS, BIOME_GIANT_SPRUCE_TAIGA, BIOME_GIANT_SPRUCE_TAIGA_HILLS, BIOME_STONE_SHORE)

# Nether update 1.16+
#variable.bool.isBlueNether=in(biome, BIOME_SOUL_SAND_VALLEY)
#uniform.float.blueNether=smooth(1, if(isBlueNether, 1, 0), 5)
#uniform.bool.isBasaltNether=in(biome, BIOME_BASALT_DELTAS)
#uniform.float.basaltNether=smooth(1, if(isBasaltNether, 1, 0), 5)
#uniform.bool.isPurpleNether=in(biome, BIOME_WARPED_FOREST)
#uniform.float.purpleNether=smooth(1, if(isPurpleNether, 1, 0), 5)

# Biome temperature
uniform.float.BiomeTemp=temperature

# Used for TAA
#uniform.vec2.texelSize=vec2(1.0/viewWidth,1.0/viewHeight) Doesn't work on 1.7.10
uniform.int.framemod8=fmod(frameCounter, 8)

# Scale down the bloom buffer, it's faster than using texcoord for scaling, might break if you're in a dimension without shaders and return to one that supports shaders.
#scale.composite3=0.25

# Must be turned off so that we can store data in alpha channel without issues
blend.gbuffers_basic=off
blend.gbuffers_damagedblock=off
blend.gbuffers_clouds=off
alphaTest.gbuffers_basic=GREATER 0.1
alphaTest.gbuffers_damagedblock=GREATER 0.1
alphaTest.gbuffers_clouds=GREATER 0.1

# Fixes various issues with rain if we don't render it to its own buffer.
#rain.depth=true

# Shadowlight pos from Chocapic
#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

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

#uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ