screen=<profile> VERSION SM_DIST [COMPAT] <empty> <empty> [ATMOSPHERICS] [POST] [SURFACE] [UTIL] [LIGHTING] <empty> <empty>
screen.columns=2

screen.LIGHTING=<profile> VERSION <empty> <empty> [SHADOW_MAP] [LIGHT_LIST] DIR_SL DIR_BL IND_SL IND_BL SSS DIR_SHADING <empty> <empty> AMBIENT [HAND_LIGHT] ambientOcclusionLevel [CUSTOM_EMISSIVE_BLOCKS]
	screen.LIGHTING.columns=2

	screen.SHADOW_MAP=<profile> VERSION <empty> <empty> shadowMapResolution SM_DIST SM_BLUR SM_FADE_DIST <empty> <empty> SM_ENTITY SM_DISTORTION SM_PLR <empty> SM_BLOCK_ENTITY
		screen.SHADOW_MAP.columns=2

	screen.LIGHT_LIST=<profile> VERSION <empty> <empty> LL_DIST MIN_LL_INTENSITY LL_CAPACITY LOD_FALLOFF LDS_RATIO LAVA_LOD_BIAS LL_RATE LL_FALLOFF_MARGIN <empty> <empty> [FALLBACK_BLOCK]
		screen.LIGHT_LIST.columns=2

		screen.FALLBACK_BLOCK=<profile> <empty> BL_FALLBACK_R BL_FALLBACK_G BL_FALLBACK_B
			screen.FALLBACK_BLOCK.columns=1

	screen.HAND_LIGHT=<profile> VERSION <empty> <empty> HAND_LIGHT HAND_LIGHT_TRACE_STEPS HAND_LIGHT_TRACE_HARDNESS MAX_HAND_LIGHT_TRACE_DIST
		screen.HAND_LIGHT.columns=2

	screen.CUSTOM_EMISSIVE_BLOCKS=<profile> <empty> EMISSIVE_REDSTONE_BLOCK EMISSIVE_EMERALD_BLOCK EMISSIVE_LAPIS_BLOCK
		screen.CUSTOM_EMISSIVE_BLOCKS.columns=1

screen.POST=<profile> VERSION <empty> <empty> TONEMAP SHARPNESS SATURATION [SMAA] <empty> <empty> RED_MUL AUTO_EXP GREEN_MUL AUTO_EXP_SPEED BLUE_MUL AUTO_EXP_TARGET
	screen.POST.columns=2

	screen.SMAA=<profile> <empty> SMAA_THRESHOLD <empty> SMAA_SEARCH SMAA_SEARCH_DIAG <empty> SMAA_CORNER
		screen.SMAA.columns=1

screen.ATMOSPHERICS=<profile> VERSION <empty> <empty> VL FOG VL_SAMPLES WATER_FOG [CEL_BODIES] RAIN_FOG <empty> <empty> SUN_BLOOM sunPathRotation SKY_BLOOM CLOUD_FOG_END
	screen.ATMOSPHERICS.columns=2

	screen.CEL_BODIES=<profile> VERSION <empty> <empty> SUN_SIZE MOON_SIZE <empty> MOON_PHASE_DIFF
		screen.CEL_BODIES.columns=2

screen.SURFACE=<profile> VERSION <empty> <empty> NORMALS WATER_OPACITY SM WAVES SM_CH WAVE_SPEED SM_TYPE EMISSION_BRIGHTNESS
	screen.SURFACE.columns=2

screen.UTIL=<profile> <empty> LINE_WIDTH <empty> COMPASS <empty> LIGHT_LEVELS
	screen.UTIL.columns=1

screen.COMPAT=CONST_IMMUT <empty> MINMAX_3 MUL_32x16 SUBGROUP <empty> SIZED_16_8 BUFFER_16_8 ASSUME_NV_GPU_SHADER5 ASSUME_AMD_GPU_SHADER_HALF_FLOAT ASSUME_AMD_GPU_SHADER_INT16
	screen.COMPAT.columns=1

profile.COPPER=shadowMapResolution=256 SM_DISTORTION=95 VL=0 VL_SAMPLES=1 !SM_ENTITY SSS=0 LL_DIST=32 LL_CAPACITY=256 MIN_LL_INTENSITY=3 LL_RATE=64 LDS_RATIO=0.25 SMAA_THRESHOLD=0.1 SMAA_SEARCH=8 SMAA_SEARCH_DIAG=0 SMAA_CORNER=0 HAND_LIGHT_TRACE_STEPS=0 HAND_LIGHT_TRACE_HARDNESS=0 MAX_HAND_LIGHT_TRACE_DIST=8
profile.WOOD=shadowMapResolution=512 SM_DISTORTION=95 VL=0 VL_SAMPLES=1 !SM_ENTITY SSS=0 LL_DIST=48 LL_CAPACITY=512 MIN_LL_INTENSITY=3 LL_RATE=32 LDS_RATIO=0.4 SMAA_THRESHOLD=0.07 SMAA_SEARCH=8 SMAA_SEARCH_DIAG=0 SMAA_CORNER=0 HAND_LIGHT_TRACE_STEPS=4 HAND_LIGHT_TRACE_HARDNESS=1 MAX_HAND_LIGHT_TRACE_DIST=16
profile.STONE=shadowMapResolution=1024 SM_DISTORTION=95 VL=0 VL_SAMPLES=1 !SM_ENTITY SSS=0 LL_DIST=80 LL_CAPACITY=1024 MIN_LL_INTENSITY=3 LL_RATE=16 LDS_RATIO=0.35 SMAA_THRESHOLD=0.05 SMAA_SEARCH=16 SMAA_SEARCH_DIAG=4 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=8 HAND_LIGHT_TRACE_HARDNESS=1 MAX_HAND_LIGHT_TRACE_DIST=24
profile.IRON=shadowMapResolution=2048 SM_DISTORTION=90 VL=0 VL_SAMPLES=1 !SM_ENTITY SSS=0 LL_DIST=128 LL_CAPACITY=3072 MIN_LL_INTENSITY=2 LL_RATE=16 LDS_RATIO=0.25 SMAA_THRESHOLD=0.03 SMAA_SEARCH=16 SMAA_SEARCH_DIAG=8 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=16 HAND_LIGHT_TRACE_HARDNESS=1 MAX_HAND_LIGHT_TRACE_DIST=32
profile.GOLD=shadowMapResolution=2048 SM_DISTORTION=90 VL=4 VL_SAMPLES=1 SM_ENTITY SSS=5 LL_DIST=160 LL_CAPACITY=5120 MIN_LL_INTENSITY=1 LL_RATE=16 LDS_RATIO=0.25 SMAA_THRESHOLD=0.02 SMAA_SEARCH=32 SMAA_SEARCH_DIAG=16 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=16 HAND_LIGHT_TRACE_HARDNESS=1 MAX_HAND_LIGHT_TRACE_DIST=48
profile.DIAMOND=shadowMapResolution=4096 SM_DISTORTION=90 VL=4 VL_SAMPLES=1 SM_ENTITY SSS=5 LL_DIST=160 LL_CAPACITY=5120 MIN_LL_INTENSITY=1 LL_RATE=16 LDS_RATIO=0.25 SMAA_THRESHOLD=0.01 SMAA_SEARCH=80 SMAA_SEARCH_DIAG=20 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=32 HAND_LIGHT_TRACE_HARDNESS=2 MAX_HAND_LIGHT_TRACE_DIST=64
profile.NETHERITE=shadowMapResolution=8192 SM_DISTORTION=85 VL=4 VL_SAMPLES=3 SM_ENTITY SSS=5 LL_DIST=160 LL_CAPACITY=5120 MIN_LL_INTENSITY=1 LL_RATE=16 LDS_RATIO=0.25 SMAA_THRESHOLD=0.01 SMAA_SEARCH=112 SMAA_SEARCH_DIAG=20 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=64 HAND_LIGHT_TRACE_HARDNESS=2 MAX_HAND_LIGHT_TRACE_DIST=96
profile.SCREENSHOT=shadowMapResolution=16384 SM_DISTORTION=85 VL=4 VL_SAMPLES=8 SM_ENTITY SSS=5 LL_DIST=160 LL_CAPACITY=5120 MIN_LL_INTENSITY=1 LL_RATE=16 LDS_RATIO=1.0 SMAA_THRESHOLD=0.005 SMAA_SEARCH=112 SMAA_SEARCH_DIAG=20 SMAA_CORNER=25 HAND_LIGHT_TRACE_STEPS=512 HAND_LIGHT_TRACE_HARDNESS=1 MAX_HAND_LIGHT_TRACE_DIST=96

sliders=ambientOcclusionLevel shadowMapResolution SM_DIST AMBIENT DIR_SL RED_MUL GREEN_MUL BLUE_MUL SHARPNESS FOG RAIN_FOG WATER_FOG sunPathRotation WATER_OPACITY SATURATION WAVES WAVE_SPEED SM_FADE_DIST SUN_BLOOM SKY_BLOOM VL VL_SAMPLES SM_BLUR SM_DISTORTION DIR_BL IND_BL LL_DIST LL_CAPACITY TONEMAP SSS MIN_LL_INTENSITY LL_RATE LOD_FALLOFF LAVA_LOD_BIAS LDS_RATIO SMAA_THRESHOLD SMAA_SEARCH SMAA_SEARCH_DIAG SMAA_CORNER HAND_LIGHT HAND_LIGHT_TRACE_STEPS MAX_HAND_LIGHT_TRACE_DIST HAND_LIGHT_TRACE_HARDNESS AUTO_EXP AUTO_EXP_SPEED AUTO_EXP_TARGET LINE_WIDTH IND_SL BL_FALLBACK_R BL_FALLBACK_G BL_FALLBACK_B LL_FALLOFF_MARGIN CLOUD_FOG_END DIR_SHADING SUN_SIZE MOON_SIZE MOON_PHASE_DIFF EMISSION_BRIGHTNESS

iris.features.required=BLOCK_EMISSION_ATTRIBUTE COMPUTE_SHADERS CUSTOM_IMAGES ENTITY_TRANSLUCENT PER_BUFFER_BLENDING SEPARATE_HARDWARE_SAMPLERS SSBO
iris.features.optional=FADE_VARIABLE

oldHandLight=false
allowConcurrentCompute=true
vignette=true
particles.ordering=mixed
sky=false
stars=false
sun=false
moon=false
separateEntityDraws=true
separateAo=true
#beacon.beam.depth=true
#rain.depth=true
endFlashShadows=false
dhShadow.enabled=false

#if SM_DIST == 0
	shadow.enabled=false
#endif

#ifndef SM_ENTITY
	shadowEntities=false

	#ifdef SM_PLR
		shadowPlayer=true
	#endif
#endif

#ifndef SM_BLOCK_ENTITY
	shadowBlockEntities=false
#endif

blend.gbuffers_basic=off
blend.gbuffers_beaconbeam=off
blend.gbuffers_block=off
blend.gbuffers_entities=off
blend.gbuffers_hand=off
blend.gbuffers_particles=off
blend.gbuffers_skybasic=off
blend.gbuffers_skytextured=off
blend.gbuffers_spidereyes=off
blend.gbuffers_terrain_cutout=off
blend.gbuffers_terrain_solid=off
blend.gbuffers_terrain=off
blend.gbuffers_textured_lit=off

blend.gbuffers_block_translucent=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_clouds=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_hand_water=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_particles_translucent=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_water=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_weather=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO

blend.gbuffers_entities_translucent.colortex1=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_entities_translucent.colortex2=off
blend.gbuffers_lightning.colortex1=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_lightning.colortex2=off
blend.gbuffers_line.colortex1=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_line.colortex2=off
blend.gbuffers_textured.colortex1=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO
blend.gbuffers_textured.colortex2=off

blend.gbuffers_armor_glint=ONE ONE ZERO ONE
blend.gbuffers_damagedblock.colortex1=DST_COLOR SRC_COLOR ONE ZERO
blend.gbuffers_damagedblock.colortex2=off

blend.shadow=off
blend.shadow_block=off
blend.shadow_cutout=off
blend.shadow_entities=off
blend.shadow_solid=off
blend.shadow_water=off

blend.dh_shadow=off
blend.dh_terrain=off
blend.dh_water=SRC_ALPHA ONE_MINUS_SRC_ALPHA ZERO ZERO

uniform.float.pbrFogDensity=10.0 / (FOG + blindness * 5000.0 + rainStrength * RAIN_FOG + pow(isEyeInWater, 4) * WATER_FOG)

# 0-1-0 from sunrise to noon to sunset
uniform.float.day=max(1.0 - abs(sunAngle - 0.25) * 4.0, 0.0)

# `rainStrength`, day, and moon size
uniform.vec3.skyState=vec3(rainStrength, day, abs(moonPhase - 4.0) + 1.0)

uniform.vec3.skyColorLinear=vec3(pow(skyColor.r, 2.4) * 3.0, pow(skyColor.g, 2.4) * 3.0, pow(skyColor.b, 2.4) * 3.0)
uniform.int.packedView=65536 * floor(viewHeight) + floor(viewWidth)
uniform.vec3.shadowLightDirection=shadowLightPosition * vec3(0.01, 0.01, 0.01)
uniform.vec3.shadowLightDirectionPlr=vec3(gbufferModelViewInverse.0.0 * shadowLightDirection.x + gbufferModelViewInverse.1.0 * shadowLightDirection.y + gbufferModelViewInverse.2.0 * shadowLightDirection.z, gbufferModelViewInverse.0.1 * shadowLightDirection.x + gbufferModelViewInverse.1.1 * shadowLightDirection.y + gbufferModelViewInverse.2.1 * shadowLightDirection.z, gbufferModelViewInverse.0.2 * shadowLightDirection.x + gbufferModelViewInverse.1.2 * shadowLightDirection.y + gbufferModelViewInverse.2.2 * shadowLightDirection.z)
variable.vec3.sunDirection=sunPosition * vec3(0.01, 0.01, 0.01)
uniform.vec3.sunDirectionPlr=vec3(gbufferModelViewInverse.0.0 * sunDirection.x + gbufferModelViewInverse.1.0 * sunDirection.y + gbufferModelViewInverse.2.0 * sunDirection.z, gbufferModelViewInverse.0.1 * sunDirection.x + gbufferModelViewInverse.1.1 * sunDirection.y + gbufferModelViewInverse.2.1 * sunDirection.z, gbufferModelViewInverse.0.2 * sunDirection.x + gbufferModelViewInverse.1.2 * sunDirection.y + gbufferModelViewInverse.2.2 * sunDirection.z)

uniform.vec3.mvInv0=vec3(gbufferModelViewInverse.0.x, gbufferModelViewInverse.0.y, gbufferModelViewInverse.0.z)
uniform.vec3.mvInv1=vec3(gbufferModelViewInverse.1.x, gbufferModelViewInverse.1.y, gbufferModelViewInverse.1.z)
uniform.vec3.mvInv2=vec3(gbufferModelViewInverse.2.x, gbufferModelViewInverse.2.y, gbufferModelViewInverse.2.z)
uniform.vec3.mvInv3=vec3(gbufferModelViewInverse.3.x, gbufferModelViewInverse.3.y, gbufferModelViewInverse.3.z)

#uniform.vec4.proj0=vec4()
#uniform.float.proj1=

uniform.bool.LLCollect=frameCounter % LL_RATE == 0
uniform.bool.LLDedup=frameCounter % LL_RATE == 1
uniform.bool.LLSort=frameCounter % LL_RATE == 2

image.edge=edgeS rg rg8 unsigned_byte true true 1.0 1.0
image.blendWeight=blendWeightS rgba rgba8 unsigned_byte true true 1.0 1.0

customTexture.areatex=tex/smaa_area.bin TEXTURE_2D RG8 160 560 RG UNSIGNED_BYTE
customTexture.searchtex=tex/smaa_search.bin TEXTURE_2D R8 64 16 RED UNSIGNED_BYTE

#if TONEMAP == 1
	customTexture.tmmfLut=tex/tmmf_lut.bin TEXTURE_3D RGB16F 48 48 48 RGB HALF_FLOAT
#endif

#if AUTO_EXP
	#ifdef BUFFER_16_8
		bufferObject.0=6
	#else
		bufferObject.0=8
	#endif
#endif

#if WAVES
	uniform.vec3.waveState=vec3(cameraPosition.x, cameraPosition.z, frameTimeCounter * WAVE_SPEED)
#endif

#if HAND_LIGHT
	variable.int.handLightLevel=min(heldBlockLightValue + max(heldItemId, 0) * 15, 15)
	variable.int.handLightLevel2=min(heldBlockLightValue2 + max(heldItemId2, 0) * 15, 15)

	variable.int.handLightRight=if(isRightHanded, handLightLevel, handLightLevel2)
	variable.int.handLightLeft=if(isRightHanded, handLightLevel2, handLightLevel)

	uniform.int.handLightPackedLR=65536 * handLightRight + handLightLeft

	bufferObject.3=16
	bufferObject.4=8
#endif

# TODO: Account for 16-bit colors in llq.

#if LL_CAPACITY == 128
	bufferObject.1=784
	bufferObject.2=1040
#elif LL_CAPACITY == 256
	bufferObject.1=1552
	bufferObject.2=2064
#elif LL_CAPACITY == 512
	bufferObject.1=3088
	bufferObject.2=4112
#elif LL_CAPACITY == 1024
	bufferObject.1=6160
	bufferObject.2=8208
#elif LL_CAPACITY == 2048
	bufferObject.1=12304
	bufferObject.2=16400
#elif LL_CAPACITY == 3072
	bufferObject.1=18448
	bufferObject.2=24592
#elif LL_CAPACITY == 4096
	bufferObject.1=24592
	bufferObject.2=32784
#elif LL_CAPACITY == 5120
	bufferObject.1=30736
	bufferObject.2=40976
#elif LL_CAPACITY == 6114
	bufferObject.1=36700
	bufferObject.2=48928
#elif LL_CAPACITY == 7178
	bufferObject.1=43084
	bufferObject.2=57440
#elif LL_CAPACITY == 8192
	bufferObject.1=49168
	bufferObject.2=65552
#elif LL_CAPACITY == 9216
	bufferObject.1=55312
	bufferObject.2=73744
#elif LL_CAPACITY == 10240
	bufferObject.1=61456
	bufferObject.2=81936
#elif LL_CAPACITY == 11264
	bufferObject.1=67600
	bufferObject.2=90128
#elif LL_CAPACITY == 12288
	bufferObject.1=73744
	bufferObject.2=98320
#elif LL_CAPACITY == 13312
	bufferObject.1=79888
	bufferObject.2=106512
#elif LL_CAPACITY == 14336
	bufferObject.1=86032
	bufferObject.2=114704
#elif LL_CAPACITY == 15360
	bufferObject.1=92176
	bufferObject.2=122896
#elif LL_CAPACITY == 16384
	bufferObject.1=98320
	bufferObject.2=131088
#endif
