#BSL Shaders Shader Properties

#Profiles
profile.LOW=!AO !LIGHT_SHAFT !SHADOW_COLOR !SHADOW_FILTER shadowMapResolution=1024 shadowDistance=128.0
profile.MEDIUM=profile.LOW SHADOW_COLOR SHADOW_FILTER shadowMapResolution=2048 shadowDistance=256.0
profile.HIGH=profile.MEDIUM AO LIGHT_SHAFT
profile.ULTRA=profile.HIGH shadowMapResolution=3072 shadowDistance=512.0

#Force Video Settings
dynamicHandLight=true
oldHandLight=false
oldLighting=false
particles.ordering=mixed
separateAo=true
shadow.culling=true
underwaterOverlay=false
vignette=false

#Screen Setup
screen=<empty> <empty> <profile> ABOUT <empty> <empty> [LIGHTING] [MATERIAL] [ATMOSPHERICS] [WATER] [CAMERA] [ANTIALIASING] [COLOR] [CGT] [EXTRAS] [ANIMATION]

screen.LIGHTING=<empty> <empty> shadowMapResolution shadowDistance SHADOW_COLOR SHADOW_FILTER sunPathRotation [SHADOW] <empty> <empty> AO AO_STRENGTH DESATURATION DESATURATION_FACTOR DYNAMIC_HANDLIGHT WHITE_WORLD
screen.SHADOW=<empty> <empty> SHADOW_ENTITY SHADOW_BLOCK_ENTITY SHADOW_VEGETATION SHADOW_PIXEL

screen.MATERIAL=<empty> <empty> ADVANCED_MATERIALS MATERIAL_FORMAT <empty> <empty> [SPECULAR] [NORMALS] <empty> <empty> SSS BASIC_SSS EMISSIVE REFRACTION ALBEDO_BALANCING ALPHA_BLEND ENTITY_FLASH
screen.SPECULAR=<empty> <empty> REFLECTION REFLECTION_TRANSLUCENT <empty> <empty> REFLECTION_SPECULAR REFLECTION_RAIN REFLECTION_ROUGH REFLECTION_PREVIOUS SPECULAR_HIGHLIGHT_ROUGH ALBEDO_METAL REFLECTION_MODE REFLECTION_SKY_FALLOFF
screen.NORMALS=<empty> <empty> PARALLAX PARALLAX_DEPTH PARALLAX_QUALITY PARALLAX_DISTANCE SELF_SHADOW SELF_SHADOW_ANGLE SELF_SHADOW_QUALITY SELF_SHADOW_STRENGTH <empty> <empty> DIRECTIONAL_LIGHTMAP DIRECTIONAL_LIGHTMAP_STRENGTH NORMAL_DAMPENING NORMAL_PLANTS

screen.ATMOSPHERICS=<empty> <empty> CLOUDS [CLOUDS] SKY_DESATURATION [SKY]  <empty> <empty> AURORA ROUND_SUN_MOON DISTANT_FADE DISTANT_FADE_STYLE WEATHER_PERBIOME UNDERGROUND_SKY LIGHT_SHAFT LIGHT_SHAFT_STRENGTH FOG_DENSITY WEATHER_OPACITY
screen.SKY=<empty> <empty> SKY_DENSITY_D SKY_EXPOSURE_D SKY_DENSITY_N SKY_EXPOSURE_N SKY_DENSITY_W SKY_EXPOSURE_W SKY_HORIZON_N SKY_HORIZON_F <empty> <empty> SKY_GROUND SKYBOX_BRIGHTNESS
screen.CLOUDS=<empty> <empty> CLOUD_BASE CLOUD_DENSITY CLOUD_AMOUNT CLOUD_HEIGHT CLOUD_THICKNESS CLOUD_DETAIL CLOUD_SPEED CLOUD_OPACITY CLOUD_BRIGHTNESS

screen.WATER=<empty> <empty> WATER_MODE WATER_ALPHA_MODE WATER_NORMALS WATER_PARALLAX WATER_SHADOW_COLOR WATER_CAUSTICS <empty> <empty> WATER_DETAIL WATER_SHARPNESS WATER_BUMP WATER_SPEED WATER_FOG WATER_FOG_DENSITY WATER_CAUSTICS_STRENGTH WATER_PIXEL

screen.CAMERA=<empty> <empty> DOF DOF_STRENGTH MOTION_BLUR MOTION_BLUR_STRENGTH BLOOM BLOOM_STRENGTH BLOOM_CONTRAST BLOOM_RADIUS LENS_FLARE LENS_FLARE_STRENGTH VIGNETTE VIGNETTE_STRENGTH DIRTY_LENS CHROMATIC_ABERRATION UNDERWATER_DISTORTION
screen.ANTIALIASING=<empty> <empty> FXAA TAA <empty> <empty> FXAA_SUBPIXEL FXAA_EDGE_SENSITIVITY

screen.COLOR=<empty> <empty> [LIGHT_COLOR] [BLOCKLIGHT_COLOR] [SKY_COLOR] [WATER_COLOR] [WEATHER_COLOR] [AURORA_COLOR] [NETHER_COLOR] [END_COLOR]
screen.LIGHT_COLOR=<empty> <empty> [LIGHT_M] [AMBIENT_M] [LIGHT_D] [AMBIENT_D] [LIGHT_E] [AMBIENT_E] [LIGHT_N] [AMBIENT_N] [MINLIGHT]
screen.LIGHT_M=<empty> <empty> LIGHT_MR LIGHT_MG LIGHT_MB LIGHT_MI
screen.LIGHT_D=<empty> <empty> LIGHT_DR LIGHT_DG LIGHT_DB LIGHT_DI
screen.LIGHT_E=<empty> <empty> LIGHT_ER LIGHT_EG LIGHT_EB LIGHT_EI
screen.LIGHT_N=<empty> <empty> LIGHT_NR LIGHT_NG LIGHT_NB LIGHT_NI
screen.AMBIENT_M=<empty> <empty> AMBIENT_MR AMBIENT_MG AMBIENT_MB AMBIENT_MI
screen.AMBIENT_D=<empty> <empty> AMBIENT_DR AMBIENT_DG AMBIENT_DB AMBIENT_DI
screen.AMBIENT_E=<empty> <empty> AMBIENT_ER AMBIENT_EG AMBIENT_EB AMBIENT_EI
screen.AMBIENT_N=<empty> <empty> AMBIENT_NR AMBIENT_NG AMBIENT_NB AMBIENT_NI
screen.MINLIGHT=<empty> <empty> MINLIGHT_R MINLIGHT_G MINLIGHT_B MINLIGHT_I
screen.BLOCKLIGHT_COLOR=<empty> <empty> BLOCKLIGHT_R BLOCKLIGHT_G BLOCKLIGHT_B BLOCKLIGHT_I <empty> <empty> EMISSIVE_RECOLOR
screen.SKY_COLOR=<empty> <empty> SKY_R SKY_G SKY_B SKY_I <empty> <empty> SKY_VANILLA
screen.WATER_COLOR=<empty> <empty> WATER_R WATER_G WATER_B WATER_I WATER_A
screen.WEATHER_COLOR=<empty> <empty> [WEATHER_R] [WEATHER_C] [WEATHER_D] [WEATHER_B] [WEATHER_S] [WEATHER_M] [WEATHER_V]
screen.WEATHER_R=<empty> <empty> WEATHER_RR WEATHER_RG WEATHER_RB WEATHER_RI
screen.WEATHER_C=<empty> <empty> WEATHER_CR WEATHER_CG WEATHER_CB WEATHER_CI
screen.WEATHER_D=<empty> <empty> WEATHER_DR WEATHER_DG WEATHER_DB WEATHER_DI
screen.WEATHER_B=<empty> <empty> WEATHER_BR WEATHER_BG WEATHER_BB WEATHER_BI
screen.WEATHER_S=<empty> <empty> WEATHER_SR WEATHER_SG WEATHER_SB WEATHER_SI
screen.WEATHER_M=<empty> <empty> WEATHER_MR WEATHER_MG WEATHER_MB WEATHER_MI
screen.WEATHER_V=<empty> <empty> WEATHER_VR WEATHER_VG WEATHER_VB WEATHER_VI
screen.AURORA_COLOR=<empty> <empty> [AURORA_L] [AURORA_H]
screen.AURORA_L=<empty> <empty> AURORA_LR AURORA_LG AURORA_LB AURORA_LI
screen.AURORA_H=<empty> <empty> AURORA_HR AURORA_HG AURORA_HB AURORA_HI
screen.NETHER_COLOR=<empty> <empty> [NETHER_N] [NETHER_V] [NETHER_C] [NETHER_W] [NETHER_B] <empty> <empty> <empty> NETHER_VANILLA
screen.NETHER_N=<empty> <empty> NETHER_NR NETHER_NG NETHER_NB NETHER_NI
screen.NETHER_V=<empty> <empty> NETHER_VR NETHER_VG NETHER_VB NETHER_VI
screen.NETHER_C=<empty> <empty> NETHER_CR NETHER_CG NETHER_CB NETHER_CI
screen.NETHER_W=<empty> <empty> NETHER_WR NETHER_WG NETHER_WB NETHER_WI
screen.NETHER_B=<empty> <empty> NETHER_BR NETHER_BG NETHER_BB NETHER_BI
screen.END_COLOR=<empty> <empty> END_R END_G END_B END_I

screen.CGT=<empty> <empty> EXPOSURE AUTO_EXPOSURE <empty> CLASSIC_EXPOSURE COLOR_GRADING [COLOR_GRADING] <empty> <empty> TONEMAP_LOWER_CURVE TONEMAP_UPPER_CURVE TONEMAP_WHITE_CURVE <empty> <empty> <empty> SATURATION VIBRANCE
screen.COLOR_GRADING=<empty> <empty> [CG_R] [CG_G] [CG_B] [CG_T]
screen.CG_R=<empty> <empty> CG_RR CG_RG CG_RB CG_RI <empty> <empty> CG_RM CG_RC
screen.CG_G=<empty> <empty> CG_GR CG_GG CG_GB CG_GI <empty> <empty> CG_GM CG_GC
screen.CG_B=<empty> <empty> CG_BR CG_BG CG_BB CG_BI <empty> <empty> CG_BM CG_BC
screen.CG_T=<empty> <empty> CG_TR CG_TG CG_TB CG_TI <empty> <empty> CG_TM

screen.EXTRAS=<empty> <empty> OUTLINE TOON_LIGHTMAP RETRO_FILTER <empty> WORLD_CURVATURE WORLD_CURVATURE_SIZE

screen.ANIMATION=<empty> <empty> WORLD_TIME_ANIMATION ANIMATION_SPEED <empty> <empty> WAVING_GRASS WAVING_CROP WAVING_PLANT WAVING_TALL_PLANT WAVING_LEAF WAVING_VINE WAVING_WATER WAVING_LAVA WAVING_FIRE WAVING_LANTERN

#Set Sliders
sliders=shadowMapResolution shadowDistance sunPathRotation SHADOW_PIXEL AO_STRENGTH LIGHT_SHAFT_STRENGTH DESATURATION_FACTOR REFLECTION_SKY_FALLOFF PARALLAX_DEPTH PARALLAX_QUALITY PARALLAX_DISTANCE SELF_SHADOW_ANGLE SELF_SHADOW_QUALITY SELF_SHADOW_STRENGTH DIRECTIONAL_LIGHTMAP_STRENGTH DOF_STRENGTH MOTION_BLUR_STRENGTH BLOOM_STRENGTH BLOOM_CONTRAST BLOOM_RADIUS LENS_FLARE_STRENGTH VIGNETTE_STRENGTH EXPOSURE TONEMAP_LOWER_CURVE TONEMAP_UPPER_CURVE TONEMAP_WHITE_CURVE SATURATION VIBRANCE CG_RR CG_RG CG_RB CG_RI CG_RM CG_RC CG_GR CG_GG CG_GB CG_GI CG_GM CG_GC CG_BR CG_BG CG_BB CG_BI CG_BM CG_BC CG_TR CG_TG CG_TB CG_TI CG_TM  FXAA_SUBPIXEL FXAA_EDGE_SENSITIVITY LIGHT_MR LIGHT_MG LIGHT_MB LIGHT_MI LIGHT_DR LIGHT_DG LIGHT_DB LIGHT_DI LIGHT_ER LIGHT_EG LIGHT_EB LIGHT_EI LIGHT_NR LIGHT_NG LIGHT_NB LIGHT_NI AMBIENT_MR AMBIENT_MG AMBIENT_MB AMBIENT_MI AMBIENT_DR AMBIENT_DG AMBIENT_DB AMBIENT_DI AMBIENT_ER AMBIENT_EG AMBIENT_EB AMBIENT_EI AMBIENT_NR AMBIENT_NG AMBIENT_NB AMBIENT_NI MINLIGHT_R MINLIGHT_G MINLIGHT_B MINLIGHT_I BLOCKLIGHT_R BLOCKLIGHT_G BLOCKLIGHT_B BLOCKLIGHT_I SKY_R SKY_G SKY_B SKY_I WATER_R WATER_G WATER_B WATER_I WATER_A WEATHER_RR WEATHER_RG WEATHER_RB WEATHER_RI WEATHER_CR WEATHER_CG WEATHER_CB WEATHER_CI WEATHER_DR WEATHER_DG WEATHER_DB WEATHER_DI WEATHER_BR WEATHER_BG WEATHER_BB WEATHER_BI WEATHER_SR WEATHER_SG WEATHER_SB WEATHER_SI WEATHER_MR WEATHER_MG WEATHER_MB WEATHER_MI WEATHER_VR WEATHER_VG WEATHER_VB WEATHER_VI AURORA_LR AURORA_LG AURORA_LB AURORA_LI AURORA_HR AURORA_HG AURORA_HB AURORA_HI NETHER_NR NETHER_NG NETHER_NB NETHER_NI NETHER_VR NETHER_VG NETHER_VB NETHER_VI NETHER_CR NETHER_CG NETHER_CB NETHER_CI NETHER_WR NETHER_WG NETHER_WB NETHER_WI NETHER_BR NETHER_BG NETHER_BB NETHER_BI END_R END_G END_B END_I CLOUD_DENSITY CLOUD_AMOUNT CLOUD_HEIGHT CLOUD_THICKNESS CLOUD_DETAIL CLOUD_OPACITY CLOUD_SPEED CLOUD_BRIGHTNESS SKY_DENSITY_D SKY_EXPOSURE_D SKY_DENSITY_N SKY_EXPOSURE_N SKY_DENSITY_W SKY_EXPOSURE_W SKY_HORIZON_N SKY_HORIZON_F SKYBOX_BRIGHTNESS WATER_SHARPNESS WATER_DETAIL WATER_BUMP WATER_SPEED WATER_FOG_DENSITY WATER_CAUSTICS_STRENGTH WATER_PIXEL WEATHER_OPACITY FOG_DENSITY WORLD_CURVATURE_SIZE ANIMATION_SPEED

#Program Toggle
program.world0/deferred.enabled=AO
program.world-1/deferred.enabled=AO
program.world1/deferred.enabled=AO
program.world0/composite1.enabled=LIGHT_SHAFT
program.world1/composite1.enabled=LIGHT_SHAFT
program.world0/composite2.enabled=MOTION_BLUR
program.world-1/composite2.enabled=MOTION_BLUR
program.world1/composite2.enabled=MOTION_BLUR
program.world0/composite3.enabled=DOF
program.world-1/composite3.enabled=DOF
program.world1/composite3.enabled=DOF
program.world0/composite6.enabled=TAA && !RETRO_FILTER
program.world-1/composite6.enabled=TAA && !RETRO_FILTER
program.world1/composite6.enabled=TAA && !RETRO_FILTER
program.world0/composite7.enabled=FXAA && !RETRO_FILTER
program.world-1/composite7.enabled=FXAA && !RETRO_FILTER
program.world1/composite7.enabled=FXAA && !RETRO_FILTER

#Disable Fast Leaves
alphaTest.gbuffers_terrain=GREATER 0.1

#Allow Low Opacity
alphaTest.gbuffers_clouds=GREATER 0.005
alphaTest.gbuffers_hand=GREATER 0.005
alphaTest.gbuffers_water=GREATER 0.001
alphaTest.gbuffers_weather=GREATER 0.0001

#Enable Beacon Beam Depth
beacon.beam.depth=true

#Custom Texture
texture.noise=tex/noise.png
texture.composite.depthtex2=tex/dirt.png

#Custom Time Uniform
variable.float.tAmin=frac(sunAngle - 0.033333333)
variable.float.tAlin=if(tAmin < 0.433333333, tAmin * 1.15384615385, tAmin * 0.882352941176 + 0.117647058824)
variable.float.hA=if(tAlin > 0.5, 1.0, 0.0)
variable.float.tAfrc=frac(tAlin * 2.0)
variable.float.tAfrs=tAfrc * tAfrc * (3.0 - 2.0 * tAfrc)
variable.float.tAmix=if(hA < 0.5, 0.3, -0.1)
uniform.float.timeAngle=(tAfrc * (1.0 - tAmix) + tAfrs * tAmix + hA) * 0.5
uniform.float.timeBrightness=max(sin(timeAngle * 6.28318530718), 0.0)
uniform.float.shadowFade=clamp(1.0 - (abs(abs(sunAngle - 0.5) - 0.25) - 0.23) * 100.0, 0.0, 1.0)

#Custom Blindness Uniform
variable.float.blindFactorSqrt=clamp(blindness * 2.0 - 1.0, 0.0, 1.0)
uniform.float.blindFactor=blindFactorSqrt * blindFactorSqrt

#Custom Biome Uniforms
variable.float.yCold1=if(cameraPosition.y >= 93.0, 1, 0)
variable.float.yCold2=if(cameraPosition.y >= 123.0, 1, 0)
variable.float.yCold3=if(cameraPosition.y >= 153.0, 1, 0)

#if MC_VERSION >= 11800
uniform.float.isCold=smooth(1, if(in(biome, BIOME_GROVE, BIOME_FROZEN_OCEAN, BIOME_FROZEN_RIVER, BIOME_SNOWY_PLAINS, BIOME_SNOWY_BEACH, BIOME_SNOWY_TAIGA, BIOME_ICE_SPIKES), 1, 0), 10, 10) + \
                     smooth(11, if(in(biome, BIOME_WINDSWEPT_HILLS, BIOME_STONY_SHORE, BIOME_WINDSWEPT_FOREST, BIOME_WINDSWEPT_GRAVELLY_HILLS), 1, 0) * yCold1, 10, 10) + \
                     smooth(12, if(in(biome, BIOME_TAIGA, BIOME_OLD_GROWTH_PINE_TAIGA), 1, 0) * yCold2, 10, 10) + \
                     smooth(13, if(in(biome, BIOME_OLD_GROWTH_SPRUCE_TAIGA), 1, 0) * yCold3, 10, 10)

uniform.float.isDesert=smooth(2, if(in(biome, BIOME_DESERT), 1, 0), 10, 10)
uniform.float.isMesa=smooth(3, if(in(biome, BIOME_BADLANDS, BIOME_WOODED_BADLANDS, BIOME_ERODED_BADLANDS), 1, 0), 10, 10)
uniform.float.isSwamp=smooth(4, if(in(biome, BIOME_SWAMP, BIOME_MANGROVE_SWAMP), 1, 0), 10, 10)
uniform.float.isMushroom=smooth(5, if(in(biome, BIOME_MUSHROOM_FIELDS), 1, 0), 10, 10)
uniform.float.isSavanna=smooth(6, if(in(biome, BIOME_SAVANNA, BIOME_SAVANNA_PLATEAU), 1, 0), 10, 10)

uniform.float.isValley=smooth(7, if(in(biome, BIOME_SOUL_SAND_VALLEY), 1, 0), 10, 10)
uniform.float.isCrimson=smooth(8, if(in(biome, BIOME_CRIMSON_FOREST), 1, 0), 10, 10)
uniform.float.isWarped=smooth(9, if(in(biome, BIOME_WARPED_FOREST), 1, 0), 10, 10)
uniform.float.isBasalt=smooth(10, if(in(biome, BIOME_BASALT_DELTAS), 1, 0), 10, 10)

uniform.float.voidFade=clamp((cameraPosition.y + 70.0) / 8.0, 0.0, 1.0)
#else
uniform.float.isCold=smooth(1, if(in(biome, 10, 11, 12, 13, 26, 30, 31, 140, 158), 1, 0), 10, 10) + \
                     smooth(11, if(in(biome, 3, 25, 34, 131, 162), 1, 0) * yCold1, 10, 10) + \
                     smooth(12, if(in(biome, 5, 19, 32, 33, 133), 1, 0) * yCold2, 10, 10) + \
                     smooth(13, if(in(biome, 160, 161), 1, 0) * yCold3, 10, 10)
uniform.float.isDesert=smooth(2, if(in(biome, 2, 17, 130), 1, 0), 10, 10)
uniform.float.isMesa=smooth(3, if(in(biome, 37, 38, 39, 165, 166, 167), 1, 0), 10, 10)
uniform.float.isSwamp=smooth(4, if(in(biome, 6, 134), 1, 0), 10, 10)
uniform.float.isMushroom=smooth(5, if(in(biome, 14, 15), 1, 0), 10, 10)
uniform.float.isSavanna=smooth(6, if(in(biome, 35, 36, 163, 164), 1, 0), 10, 10)

uniform.float.isValley=smooth(7, if(in(biome, 170), 1, 0), 10, 10)
uniform.float.isCrimson=smooth(8, if(in(biome, 171), 1, 0), 10, 10)
uniform.float.isWarped=smooth(9, if(in(biome, 172), 1, 0), 10, 10)
uniform.float.isBasalt=smooth(10, if(in(biome, 173), 1, 0), 10, 10)

uniform.float.voidFade=clamp((cameraPosition.y + 6.0) / 8.0, 0.0, 1.0)
#endif

#Frame Jitter Uniform
uniform.float.framemod8 = frameCounter % 8

#Disable Frustum Culling When Necessary
#ifdef WORLD_CURVATURE
frustum.culling=false
#endif

#Disable Entity Shadows If Disabled
#ifndef SHADOW_ENTITY
shadowEntities=false
#endif
#ifndef SHADOW_BLOCK_ENTITY
shadowBlockEntities=false
#endif