clouds=off
voxelizeLightBlocks=true

iris.features.required=CUSTOM_IMAGES SSBO SEPARATE_HARDWARE_SAMPLERS BLOCK_EMISSION_ATTRIBUTE

image.sunTransmittanceLUT = sunTransmittanceLUTTex RGBA RGBA16F HALF_FLOAT false false 256 64
image.multipleScatteringLUT = multipleScatteringLUTTex RGBA RGBA16F HALF_FLOAT false false 32 32
image.skyViewLUT = skyViewLUTTex RGBA RGBA16F HALF_FLOAT false false 200 200
image.debug = debugtex RGBA RGBA8 unsigned_byte true true 1.0 1.0

endFlashShadows=true

#ifdef FLOODFILL
shadow.culling = reversed
image.voxelMap = voxelMapTex RED_INTEGER R32UI UNSIGNED_INT true false 256 128 256
image.floodfillVoxelMap1 = floodfillVoxelMapTex1 RGBA RGBA16F FLOAT false false 256 128 256
image.floodfillVoxelMap2 = floodfillVoxelMapTex2 RGBA RGBA16F FLOAT false false 256 128 256
#endif

customTexture.perlinNoiseTex = /textures/perlinNoise.png
customTexture.blueNoiseTex = /textures/blueNoise.png

#ifdef VANILLA_CLOUD_TEXTURE
customTexture.vanillaCloudTex = minecraft:textures/environment/clouds.png
#else
customTexture.vanillaCloudTex = /textures/clouds.png
#endif

customTexture.causticsTex = /textures/caustics.png

# sky and sunlight colours (both vec3s = 24), rain frame time counter (float = 8), hand voxel data (uint = 8)
bufferObject.0 = 40
# sun visibility smoothed over time (float)
bufferObject.1 = 4

blend.gbuffers_textured_lit.colortex1=off
blend.gbuffers_hand.colortex1=off
blend.dh_water.colortex1=off
blend.dh_terrain.colortex1=off

blend.gbuffers_textured_lit.colortex4=ONE_MINUS_SRC_ALPHA SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.dh_terrain.colortex4=ONE_MINUS_SRC_ALPHA SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA
blend.dh_water.colortex4=ONE_MINUS_SRC_ALPHA SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA

sliders = shadowDistance shadowMapResolution SHADOW_SAMPLES sunPathRotation BLOOM_RADIUS BLOOM_STRENGTH REFLECTION_MODE SSR_STEPS SHADOW_SOFTNESS EXPOSURE CONTRAST SATURATION DH_AO_SAMPLES BLOOM_QUALITY PARALLAX_HEIGHT PARALLAX_DISTANCE PARALLAX_SAMPLES PARALLAX_SHADOW_SAMPLES SEA_LEVEL GODRAYS AMBIENT_STRENGTH GODRAYS_SAMPLES BASE_FOG_DENSITY MORNING_FOG_DENSITY PIXEL_SIZE RAIN_PUDDLES EMISSION_STRENGTH ambientOcclusionLevel entityShadowDistanceMul VANILLA_FOG_DENSITY CLOUD_PLANE_ALTITUDE CLOUD_PLANE_HEIGHT BLOCKLIGHT_STRENGTH WAVE_MODE BLOOM_PIXELATION

profile.potato = !SHADOWS REFLECTION_MODE:1 !CLOUDS BLOOM_QUALITY:0.25 !TEMPORAL_FILTER !CLOUDY_FOG !CAUSTICS !DH_AO GODRAYS:0 !FLOODFILL
profile.toaster = !SHADOWS REFLECTION_MODE:1 CLOUDS BLOOM BLOOM_QUALITY:0.25 !TEMPORAL_FILTER CLOUDY_FOG !CAUSTICS !DH_AO GODRAYS:1 !FLOODFILL
profile.igpu = SHADOWS REFLECTION_MODE:2 CLOUDS BLOOM  BLOOM_QUALITY:0.5 TEMPORAL_FILTER CLOUDY_FOG !CAUSTICS SSR_STEPS:4 shadowMapResolution:512 shadowDistance:64.0 SHADOW_SAMPLES:4 DH_AO DH_AO_SAMPLES:32 GODRAYS:1 !FLOODFILL
profile.dgpu = SHADOWS REFLECTION_MODE:2 CLOUDS BLOOM  BLOOM_QUALITY:1.0 TEMPORAL_FILTER CLOUDY_FOG CAUSTICS SSR_STEPS:8 shadowMapResolution:2048 shadowDistance:160.0 SHADOW_SAMPLES:8 DH_AO DH_AO_SAMPLES:64 GODRAYS:2 FLOODFILL

screen=GLIMMER_SHADERS WEBSITE  <empty> PBR_MODE <empty> <empty>  [LIGHTING] [ATMOSPHERICS] [WATER] [POST] [WORLD] [MATERIALS] [DH] <empty> <empty> <empty> <empty> [DEBUG]

    screen.LIGHTING =  [SHADOWS] FLOODFILL DIRECTIONAL_LIGHTMAPS DYNAMIC_HANDLIGHT AMBIENT_STRENGTH BLOCKLIGHT_STRENGTH EMISSION_STRENGTH ambientOcclusionLevel

    screen.SHADOWS = SHADOWS shadowDistance shadowMapResolution SHADOW_SAMPLES SHADOW_SOFTNESS sunPathRotation entityShadowDistanceMul

    screen.ATMOSPHERICS = CLOUDS CLOUD_SHADOWS CLOUD_PLANE_ALTITUDE CLOUD_PLANE_HEIGHT VANILLA_CLOUD_TEXTURE CUSTOM_SUN ATMOSPHERIC_FOG VANILLA_FOG_DENSITY CLOUDY_FOG GODRAYS

    screen.WATER = REFLECTION_MODE SSR_STEPS FADE_REFLECTIONS SSR_JITTER SNELLS_WINDOW WAVE_MODE REFRACTION CAUSTICS

    screen.POST = EXPOSURE BLOOM tonemap BLOOM_RADIUS TEMPORAL_FILTER BLOOM_STRENGTH CONTRAST BLOOM_QUALITY SATURATION FXAA

    screen.WORLD = WAVING_BLOCKS INFINITE_OCEAN SEA_LEVEL

    screen.MATERIALS = PBR_MODE [PARALLAX] INTEGRATED_EMISSION

        screen.PARALLAX = PARALLAX PARALLAX_HEIGHT PARALLAX_DISTANCE PARALLAX_SAMPLES PARALLAX_SHADOW PARALLAX_SHADOW_SAMPLES

    screen.DH = DH_AO DH_AO_SAMPLES

    screen.DEBUG = DEBUG_ENABLE FREEZE_TIME <empty> <empty> ROUGH_SKY_REFLECTIONS VANILLA_WATER PIXEL_LOCKED_LIGHTING PIXEL_SIZE BLOOM_PIXELATION

program.world0/prepare1.enabled=ROUGH_SKY_REFLECTIONS

program.world0/shadowcomp.enabled=FLOODFILL

program.world0/deferred1.enabled=DH_AO

#if GODRAYS == 0
program.world0/composite4.enabled=PROGRAM_DISABLED
#endif

#ifndef DISTANT_HORIZONS
program.world0/composite.enabled=PROGRAM_DISABLED
#endif

program.world0/composite80.enabled=BLOOM
program.world0/composite81.enabled=BLOOM
program.world0/composite82.enabled=BLOOM
program.world0/composite83.enabled=BLOOM
program.world0/composite84.enabled=BLOOM
program.world0/composite85.enabled=BLOOM
program.world0/composite86.enabled=BLOOM
program.world0/composite87.enabled=BLOOM
program.world0/composite88.enabled=BLOOM

program.world0/composite89.enabled=TEMPORAL_FILTER

program.world1/prepare1.enabled=ROUGH_SKY_REFLECTIONS

program.world1/shadowcomp.enabled=FLOODFILL

program.world1/deferred1.enabled=DH_AO

#ifndef DISTANT_HORIZONS
program.world1/composite.enabled=PROGRAM_DISABLED
#endif

program.world1/composite80.enabled=BLOOM
program.world1/composite81.enabled=BLOOM
program.world1/composite82.enabled=BLOOM
program.world1/composite83.enabled=BLOOM
program.world1/composite84.enabled=BLOOM
program.world1/composite85.enabled=BLOOM
program.world1/composite86.enabled=BLOOM
program.world1/composite87.enabled=BLOOM
program.world1/composite88.enabled=BLOOM

program.world1/composite89.enabled=TEMPORAL_FILTER


program.world-1/prepare1.enabled=ROUGH_SKY_REFLECTIONS

program.world-1/shadowcomp.enabled=FLOODFILL

program.world-1/deferred1.enabled=DH_AO

#ifndef DISTANT_HORIZONS
program.world-1/composite.enabled=PROGRAM_DISABLED
#endif

program.world-1/composite80.enabled=BLOOM
program.world-1/composite81.enabled=BLOOM
program.world-1/composite82.enabled=BLOOM
program.world-1/composite83.enabled=BLOOM
program.world-1/composite84.enabled=BLOOM
program.world-1/composite85.enabled=BLOOM
program.world-1/composite86.enabled=BLOOM
program.world-1/composite87.enabled=BLOOM
program.world-1/composite88.enabled=BLOOM

program.world-1/composite89.enabled=TEMPORAL_FILTER

#if BLOOM_QUALITY 0.75
size.buffer.colortex2 = 0.75 0.75
#elif BLOOM_QUALITY == 0.5
size.buffer.colortex2 = 0.5 0.5
#elif BLOOM_QUALITY = 0.25
size.buffer.colortex2 = 0.25 0.25
#endif

size.buffer.colortex7 = 512 512

#ifdef DISTANT_HORIZONS
# COMBINED PROJECTION MATRIX BY SIXTHSURGE
# 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 = 1.0
uniform.float.combined_far = dhRenderDistance
uniform.vec4.combinedProjection0 = vec4(1.0 / (tan(fov / 2.0) * aspectRatio), 0.0, 0.0, 0.0)
uniform.vec4.combinedProjection1 = vec4(0.0, 1.0 / tan(fov / 2), 0.0, 0.0)
uniform.vec4.combinedProjection2 = vec4(0.0, 0.0, (combined_far + combined_near) / (combined_near - combined_far), -1.0)
uniform.vec4.combinedProjection3 = vec4(0.0, 0.0, (2.0 * combined_far * combined_near) / (combined_near - combined_far), 0.0)

uniform.vec4.combinedProjectionInverse0 = vec4(aspectRatio * tan(fov / 2.0), 0.0, 0.0, 0.0)
uniform.vec4.combinedProjectionInverse1 = vec4(0.0, tan(fov / 2.0), 0.0, 0.0)
uniform.vec4.combinedProjectionInverse2 = vec4(0.0, 0.0, 0.0, -(combined_far - combined_near) / (2.0 * combined_far * combined_near))
uniform.vec4.combinedProjectionInverse3 = vec4(0.0, 0.0, -1.0, (combined_far + combined_near) / (2.0 * combined_far * combined_near))
#endif
