# Copyright (c) 2026 Josh Britain (jbritain)
# Licensed under a custom non-commercial license.
    See LICENSE for full terms.

# ┏┓┓•   
# ┃┓┃┓┏┓╋
# ┗┛┗┗┛┗┗

# By jbritain
# https://jbritain.net

iris.features.required = CUSTOM_IMAGES SSBO SEPARATE_HARDWARE_SAMPLERS COMPUTE_SHADERS HIGHER_SHADOWCOLOR

photonics.enabled = false

# CUSTOM IMAGES
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.aerialPerspectiveLUT = aerialPerspectiveLUTTex RGBA RGBA16F HALF_FLOAT false false 32 32 32
image.undistortedShadowMap = undistortedShadowMapTex RED_INTEGER R32UI UNSIGNED_INT true false 256 256
image.shadowImportanceMap = shadowImportanceMapTex RED_INTEGER R32UI UNSIGNED_INT true false 256 256
image.skyCloudMap = skyCloudMapTex RGBA RGBA16F HALF_FLOAT false false 512 512

#ifdef VOLUMETRIC_CLOUDS
image.lowFrequencyCloudNoise = lowFrequencyCloudNoiseTex RG RG8 UNSIGNED_BYTE false false 64 64 64
image.highFrequencyCloudNoise = highFrequencyCloudNoiseTex RED R8 UNSIGNED_BYTE false false 32 32 32
image.cloudCoverage = cloudCoverageTex RG RG8 UNSIGNED_BYTE false false 1024 1024
#endif

#if defined PHOTONICS
image.indirectRadiosity = indirectRadiosityTex RGBA RGBA16F HALF_FLOAT true true 1.0 1.0
#endif

#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


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
image.tempCol=tempColS rgba rgba16 unsigned_short false true 1.0 1.0


image.debug = debugtex RGBA RGBA8 unsigned_byte true true 1.0 1.0

# CUSTOM TEXTURES
customTexture.bluenoisetex = /textures/stbn.bin TEXTURE_3D RGB8 128 128 64 RGB UNSIGNED_BYTE
customTexture.perlinnoisetex = /textures/perlinNoise.png

customTexture.cloudcoveragetex = /textures/cloudcoverage.png
customTexture.cloudshapetex = /textures/cloudshape.bin TEXTURE_3D RGBA8 128 128 128 RGBA UNSIGNED_BYTE
customTexture.clouddetailtex = /textures/clouddetail.bin TEXTURE_3D RGB8 32 32 32 RGB UNSIGNED_BYTE
customTexture.vanillacloudtex = minecraft:textures/environment/clouds.png

customTexture.startex = /textures/starmap.bin TEXTURE_2D RGB16F 4096 2048 RGB HALF_FLOAT
customTexture.moontex = /textures/moon.png

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

customTexture.tonyMcMapfaceTex = /textures/tonyMcMapface.bin TEXTURE_3D RGBA32F 48 48 48 RGBA FLOAT



# SSBOS
# scene data
# 3x vec3 + 2x float
bufferObject.0 = 56

# COLORTEXES
size.buffer.colortex4 = 256 2
size.buffer.colortex12 = 0.5 0.5
size.buffer.colortex14 = 0.25 0.25
size.buffer.colortex15 = 0.25 0.25

# RENDER SETTINGS
separateAo = true

# UNIFORMS
uniform.vec2.resolution = vec2(viewWidth, viewHeight)
uniform.vec2.pixelSize = vec2(1.0 / viewWidth, 1.0 / viewHeight)
uniform.float.horizontalFov = 2.0 * atan(1.0 / (gbufferProjection.0.0))
uniform.float.fov = 2.0 * atan(1.0 / (gbufferProjection.0.0 * aspectRatio))

uniform.bool.isDay = sunAngle <= 0.5

variable.float.lightDirLength = sqrt((shadowLightPosition.x * shadowLightPosition.x) + (shadowLightPosition.y * shadowLightPosition.y) + (shadowLightPosition.z * shadowLightPosition.z))
uniform.vec3.lightDir = vec3(shadowLightPosition.x / lightDirLength, shadowLightPosition.y / lightDirLength, shadowLightPosition.z / lightDirLength)
uniform.vec3.sunDir   = vec3(sunPosition.x / lightDirLength, sunPosition.y / lightDirLength, sunPosition.z / lightDirLength)
uniform.vec3.moonDir = vec3(moonPosition.x / lightDirLength, moonPosition.y / lightDirLength, moonPosition.z / lightDirLength)

# xirreal sent this to the shaderlabs discord in 2021
variable.float.sunVectorX = gbufferModelViewInverse.0.0 * sunPosition.x + gbufferModelViewInverse.1.0 * sunPosition.y + gbufferModelViewInverse.2.0 * sunPosition.z
variable.float.sunVectorY = gbufferModelViewInverse.0.1 * sunPosition.x + gbufferModelViewInverse.1.1 * sunPosition.y + gbufferModelViewInverse.2.1 * sunPosition.z
variable.float.sunVectorZ = gbufferModelViewInverse.0.2 * sunPosition.x + gbufferModelViewInverse.1.2 * sunPosition.y + gbufferModelViewInverse.2.2 * sunPosition.z
variable.float.sunVectorNorm = 1.0 / sqrt((sunVectorX * sunVectorX) + (sunVectorY * sunVectorY) + (sunVectorZ * sunVectorZ))
uniform.vec3.worldSunDir = vec3(sunVectorX * sunVectorNorm, sunVectorY * sunVectorNorm, sunVectorZ * sunVectorNorm)
uniform.vec3.worldMoonDir = vec3(worldSunDir.x * -1, worldSunDir.y * -1, worldSunDir.z * -1)

#ifdef WORLD_THE_END
variable.float.shadowLightVectorX = gbufferModelViewInverse.0.0 * shadowLightPosition.x + gbufferModelViewInverse.1.0 * shadowLightPosition.y + gbufferModelViewInverse.2.0 * shadowLightPosition.z
variable.float.shadowLightVectorY = gbufferModelViewInverse.0.1 * shadowLightPosition.x + gbufferModelViewInverse.1.1 * shadowLightPosition.y + gbufferModelViewInverse.2.1 * shadowLightPosition.z
variable.float.shadowLightVectorZ = gbufferModelViewInverse.0.2 * shadowLightPosition.x + gbufferModelViewInverse.1.2 * shadowLightPosition.y + gbufferModelViewInverse.2.2 * shadowLightPosition.z
variable.float.shadowLightVectorNorm = 1.0 / sqrt((shadowLightVectorX * shadowLightVectorX) + (shadowLightVectorY * shadowLightVectorY) + (shadowLightVectorZ * shadowLightVectorZ))
uniform.vec3.worldLightDir = vec3(shadowLightVectorX * shadowLightVectorNorm, shadowLightVectorY * shadowLightVectorNorm, shadowLightVectorZ * shadowLightVectorNorm)
#else
uniform.vec3.worldLightDir = if(isDay, worldSunDir, worldMoonDir)
#endif

sliders = ROUGH_SSR_THRESHOLD

# !AUTOGENERATE
#if (defined VOLUMETRIC_CLOUDS)
program.world0/setup2.enabled = true
program.world-1/setup2.enabled = true
program.world1/setup2.enabled = true
#else
program.world0/setup2.enabled = false
program.world-1/setup2.enabled = false
program.world1/setup2.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS)
program.world0/setup3.enabled = true
program.world-1/setup3.enabled = true
program.world1/setup3.enabled = true
#else
program.world0/setup3.enabled = false
program.world-1/setup3.enabled = false
program.world1/setup3.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS)
program.world0/setup4.enabled = true
program.world-1/setup4.enabled = true
program.world1/setup4.enabled = true
#else
program.world0/setup4.enabled = false
program.world-1/setup4.enabled = false
program.world1/setup4.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS) || (defined PLANAR_CLOUDS)
program.world0/composite.enabled = true
program.world-1/composite.enabled = true
program.world1/composite.enabled = true
#else
program.world0/composite.enabled = false
program.world-1/composite.enabled = false
program.world1/composite.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS) || (defined PLANAR_CLOUDS)
program.world0/composite1.enabled = true
program.world-1/composite1.enabled = true
program.world1/composite1.enabled = true
#else
program.world0/composite1.enabled = false
program.world-1/composite1.enabled = false
program.world1/composite1.enabled = false
#endif
#if (defined VOLUMETRIC_FOG)
program.world0/composite2.enabled = true
program.world-1/composite2.enabled = true
program.world1/composite2.enabled = true
#else
program.world0/composite2.enabled = false
program.world-1/composite2.enabled = false
program.world1/composite2.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS) || (defined PLANAR_CLOUDS) || (defined VOLUMETRIC_FOG) || (defined ATMOSPHERIC_FOG)
program.world0/composite3.enabled = true
program.world-1/composite3.enabled = true
program.world1/composite3.enabled = true
#else
program.world0/composite3.enabled = false
program.world-1/composite3.enabled = false
program.world1/composite3.enabled = false
#endif
#if (defined VOLUMETRIC_CLOUDS) || (defined PLANAR_CLOUDS) || (defined VOLUMETRIC_FOG) || (defined ATMOSPHERIC_FOG)
program.world0/composite5.enabled = true
program.world-1/composite5.enabled = true
program.world1/composite5.enabled = true
#else
program.world0/composite5.enabled = false
program.world-1/composite5.enabled = false
program.world1/composite5.enabled = false
#endif
#if (defined WATER_BLUR)
program.world0/composite7.enabled = true
program.world-1/composite7.enabled = true
program.world1/composite7.enabled = true
#else
program.world0/composite7.enabled = false
program.world-1/composite7.enabled = false
program.world1/composite7.enabled = false
#endif
#if (defined WATER_BLUR)
program.world0/composite8.enabled = true
program.world-1/composite8.enabled = true
program.world1/composite8.enabled = true
#else
program.world0/composite8.enabled = false
program.world-1/composite8.enabled = false
program.world1/composite8.enabled = false
#endif
#if (defined DOF)
program.world0/composite14.enabled = true
program.world-1/composite14.enabled = true
program.world1/composite14.enabled = true
#else
program.world0/composite14.enabled = false
program.world-1/composite14.enabled = false
program.world1/composite14.enabled = false
#endif
#if (defined DOF)
program.world0/composite15.enabled = true
program.world-1/composite15.enabled = true
program.world1/composite15.enabled = true
#else
program.world0/composite15.enabled = false
program.world-1/composite15.enabled = false
program.world1/composite15.enabled = false
#endif
blend.composite24 = ONE ONE ZERO ZERO
blend.composite25 = ONE ONE ZERO ZERO
blend.composite26 = ONE ONE ZERO ZERO
blend.composite27 = ONE ONE ZERO ZERO
#if (defined LENS_FLARES)
program.world0/composite28.enabled = true
program.world-1/composite28.enabled = true
program.world1/composite28.enabled = true
#else
program.world0/composite28.enabled = false
program.world-1/composite28.enabled = false
program.world1/composite28.enabled = false
#endif
#if (defined LENS_FLARES)
program.world0/composite29.enabled = true
program.world-1/composite29.enabled = true
program.world1/composite29.enabled = true
#else
program.world0/composite29.enabled = false
program.world-1/composite29.enabled = false
program.world1/composite29.enabled = false
#endif
#if (defined LENS_FLARES)
program.world0/composite30.enabled = true
program.world-1/composite30.enabled = true
program.world1/composite30.enabled = true
#else
program.world0/composite30.enabled = false
program.world-1/composite30.enabled = false
program.world1/composite30.enabled = false
#endif
#if FLOODFILL
program.world0/deferred1.enabled = true
program.world-1/deferred1.enabled = true
program.world1/deferred1.enabled = true
#else
program.world0/deferred1.enabled = false
program.world-1/deferred1.enabled = false
program.world1/deferred1.enabled = false
#endif
#if AO > 0
program.world0/deferred2.enabled = true
program.world-1/deferred2.enabled = true
program.world1/deferred2.enabled = true
#else
program.world0/deferred2.enabled = false
program.world-1/deferred2.enabled = false
program.world1/deferred2.enabled = false
#endif
#if defined RSM
program.world0/deferred3.enabled = true
program.world-1/deferred3.enabled = true
program.world1/deferred3.enabled = true
#else
program.world0/deferred3.enabled = false
program.world-1/deferred3.enabled = false
program.world1/deferred3.enabled = false
#endif
#if defined RSM
program.world0/deferred4.enabled = true
program.world-1/deferred4.enabled = true
program.world1/deferred4.enabled = true
#else
program.world0/deferred4.enabled = false
program.world-1/deferred4.enabled = false
program.world1/deferred4.enabled = false
#endif
#if defined RSM
program.world0/deferred5.enabled = true
program.world-1/deferred5.enabled = true
program.world1/deferred5.enabled = true
#else
program.world0/deferred5.enabled = false
program.world-1/deferred5.enabled = false
program.world1/deferred5.enabled = false
#endif
#if defined RSM
program.world0/deferred6.enabled = true
program.world-1/deferred6.enabled = true
program.world1/deferred6.enabled = true
#else
program.world0/deferred6.enabled = false
program.world-1/deferred6.enabled = false
program.world1/deferred6.enabled = false
#endif
#if defined RSM
program.world0/deferred7.enabled = true
program.world-1/deferred7.enabled = true
program.world1/deferred7.enabled = true
#else
program.world0/deferred7.enabled = false
program.world-1/deferred7.enabled = false
program.world1/deferred7.enabled = false
#endif
#if defined RSM
program.world0/deferred8.enabled = true
program.world-1/deferred8.enabled = true
program.world1/deferred8.enabled = true
#else
program.world0/deferred8.enabled = false
program.world-1/deferred8.enabled = false
program.world1/deferred8.enabled = false
#endif
screen.Shadows = SHADOW_PCF_SAMPLES shadowDistance shadowMapResolution sunPathRotation PCSS_MIN_RADIUS PCSS_MAX_RADIUS PCSS_SEARCH_SAMPLES PCSS_SEARCH_RADIUS shadowNearPlane shadowFarPlane
screen.Ambient_Occlusion = AO AO_SAMPLES AO_RADIUS GTAO_DIRECTION_SAMPLE_COUNT GTAO_THICKNESS
screen.Reflections = SMOOTH_SSR_STEPS ROUGH_SSR_STEPS ROUGH_SSR_SAMPLES ROUGH_SSR_THRESHOLD METAL_REFLECTION_OVERRIDE
screen.Global_Illumination = RSM RSM_SAMPLES RSM_RADIUS RSM_BRIGHTNESS RSM_LIGHT_LEAK_FIX
screen.Blocklight = FLOODFILL EMISSIVE_STRENGTH BLOCKLIGHT_COLOR_R BLOCKLIGHT_COLOR_G BLOCKLIGHT_COLOR_B blocklightColor
screen.Sub-Surface_Scattering = SUBSURFACE_SCATTERING_STRENGTH SUBSURFACE_SCATTERING_SATURATION SUBSURFACE_SCATTERING_DENSITY
screen.Ambient_Lighting = AMBIENT_LIGHT_STRENGTH NETHER_AMBIENT_LIGHT_BOOST
screen.Lighting = [Shadows] [Ambient_Occlusion] [Reflections] [Global_Illumination] [Blocklight] [Sub-Surface_Scattering] [Ambient_Lighting]
screen.Integrated_PBR = INTEGRATED_SPECULAR
screen.Parallax_Occlusion_Mapping = PARALLAX PARALLAX_DISTANCE PARALLAX_SAMPLES PARALLAX_HEIGHT
screen.Refraction = ROUGH_REFRACTION REFRACTION_NORMAL_HACK NEWTON_REFRACTION NEWTON_REFRACTION_STEPS
screen.Materials = [Integrated_PBR] [Parallax_Occlusion_Mapping] MULTIPLICATIVE_TRANSLUCENTS [Refraction] ALBEDO_METAL_TINT
screen.Atmospheric_Fog = ATMOSPHERIC_FOG ATMOSPHERIC_FOG_STRENGTH
screen.Volumetric_Fog_Density = VOLUMETRIC_FOG_DENSITY_MORNING VOLUMETRIC_FOG_DENSITY_DAY VOLUMETRIC_FOG_DENSITY_EVENING VOLUMETRIC_FOG_DENSITY_NIGHT VOLUMETRIC_FOG_DENSITY_RAIN VOLUMETRIC_FOG_DENSITY_THUNDER
screen.Volumetric_Fog = VOLUMETRIC_FOG VOLUMETRIC_FOG_SAMPLES [Volumetric_Fog_Density] VOLUMETRIC_FOG_MULTIPLE_SCATTERING VOLUMETRIC_FOG_BOTTOM_PLANE VOLUMETRIC_FOG_MIDDLE_PLANE VOLUMETRIC_FOG_TOP_PLANE VOLUMETRIC_FOG_HEIGHT_FALLOFF
screen.Volumetric_Clouds = VOLUMETRIC_CLOUDS VOLUMETRIC_CLOUDS_PRIMARY_SAMPLES VOLUMETRIC_CLOUDS_SECONDARY_SAMPLES VOLUMETRIC_CLOUDS_DENSITY VOLUMETRIC_CLOUDS_BASE_ALTITUDE VOLUMETRIC_CLOUDS_TOP_ALTITUDE
screen.Planar_Clouds = PLANAR_CLOUDS PLANAR_CLOUDS_COVERAGE PLANAR_CLOUDS_DENSITY PLANAR_CLOUDS_HEIGHT PLANAR_CLOUDS_ALTITUDE PLANAR_CLOUDS_MULTIPLE_SCATTERING
screen.Atmospherics = [Atmospheric_Fog] [Volumetric_Fog] [Volumetric_Clouds] [Planar_Clouds]
screen.Caustics = REFRACTIVE_CAUSTICS REFLECTIVE_CAUSTICS REFLECTIVE_CAUSTICS_STEPS REFLECTIVE_CAUSTICS_RADIUS
screen.Water_Color = WATER_ABSORPTION_R WATER_ABSORPTION_G WATER_ABSORPTION_B WATER_ABSORPTION_MOD WATER_SCATTERING_R WATER_SCATTERING_G WATER_SCATTERING_B WATER_SCATTERING_MOD
screen.Water = [Caustics] VOLUMETRIC_WATER VOLUMETRIC_WATER_SAMPLES WATER_MULTIPLE_SCATTERING WATER_PARALLAX WATER_PARALLAX_SAMPLES WATER_ANISOTROPY [Water_Color]
screen.Anti-Aliasing = SMAA SMAA_THRESHOLD SMAA_SEARCH SMAA_SEARCH_DIAG SMAA_CORNER
screen.Auto_Exposure = AUTO_EXPOSURE MIN_EV100 MAX_EV100 EXPOSURE_ADAPTATION EXCLUDE_SUN_AUTO_EXPOSURE EXPOSURE_COMPENSATION
screen.Depth_Of_Field = DOF DOF_SAMPLES DOF_MAX_RADIUS
screen.Bloom = BLOOM_STRENGTH BLOOM_RADIUS
screen.Purkinje_Shift = PURKINJE PURKINJE_STRENGTH PURKINJE_R PURKINJE_G PURKINJE_B
screen.Camera = [Auto_Exposure] APERTURE ISO SHUTTER_TIME SENSOR_SIZE [Depth_Of_Field] [Bloom] LENS_FLARES [Purkinje_Shift] CAMERA_INFO
screen.Post-Processing = [Anti-Aliasing] [Camera] tonemap CONTRAST HUE SATURATION LIGHTNESS
screen.Miscellaneous =
screen.Debugging = WHITE_WORLD
screen =<profile>  [Lighting] [Materials] [Atmospherics] [Water] [Post-Processing] [Miscellaneous] DEBUG_ENABLE [Debugging]
profile.Low = SHADOW_PCF_SAMPLES:4 AO:0 ROUGH_SSR_THRESHOLD:0.0 !RSM !NEWTON_REFRACTION 
profile.Medium = SHADOW_PCF_SAMPLES:8 AO:1 ROUGH_SSR_THRESHOLD:0.0 !RSM !NEWTON_REFRACTION 
profile.High = SHADOW_PCF_SAMPLES:8 AO:2 ROUGH_SSR_THRESHOLD:0.2 RSM !NEWTON_REFRACTION 
profile.Ultra = SHADOW_PCF_SAMPLES:8 AO:2 ROUGH_SSR_THRESHOLD:0.5 RSM NEWTON_REFRACTION 
sliders = SHADOW_PCF_SAMPLES shadowDistance shadowMapResolution sunPathRotation PCSS_MIN_RADIUS PCSS_MAX_RADIUS PCSS_SEARCH_SAMPLES PCSS_SEARCH_RADIUS shadowNearPlane shadowFarPlane shadowRange AO AO_SAMPLES AO_RADIUS GTAO_DIRECTION_SAMPLE_COUNT GTAO_THICKNESS AO_MAX_FRAMES SMOOTH_SSR_STEPS ROUGH_SSR_STEPS ROUGH_SSR_SAMPLES ROUGH_SSR_THRESHOLD RSM_SAMPLES RSM_RADIUS RSM_BRIGHTNESS RSM_MAX_FRAMES VOXEL_MAP_SIZE voxelDistance EMISSIVE_STRENGTH BLOCKLIGHT_COLOR_R BLOCKLIGHT_COLOR_G BLOCKLIGHT_COLOR_B blocklightColor SUBSURFACE_SCATTERING_STRENGTH SUBSURFACE_SCATTERING_SATURATION SUBSURFACE_SCATTERING_DENSITY AMBIENT_LIGHT_STRENGTH NETHER_AMBIENT_LIGHT_BOOST PARALLAX_DISTANCE PARALLAX_DISTANCE_CURVE PARALLAX_SAMPLES PARALLAX_HEIGHT ROUGH_REFRACTION REFRACTION_NORMAL_HACK NEWTON_REFRACTION_STEPS ATMOSPHERIC_FOG_STRENGTH VOLUMETRIC_FOG_SAMPLES VOLUMETRIC_FOG_DENSITY_MORNING VOLUMETRIC_FOG_DENSITY_DAY VOLUMETRIC_FOG_DENSITY_EVENING VOLUMETRIC_FOG_DENSITY_NIGHT VOLUMETRIC_FOG_DENSITY_RAIN VOLUMETRIC_FOG_DENSITY_THUNDER VOLUMETRIC_FOG_MULTIPLE_SCATTERING VOLUMETRIC_FOG_BOTTOM_PLANE VOLUMETRIC_FOG_MIDDLE_PLANE VOLUMETRIC_FOG_TOP_PLANE VOLUMETRIC_FOG_HEIGHT_FALLOFF VOLUMETRIC_CLOUDS_PRIMARY_SAMPLES VOLUMETRIC_CLOUDS_SECONDARY_SAMPLES VOLUMETRIC_CLOUDS_DENSITY VOLUMETRIC_CLOUDS_BASE_ALTITUDE VOLUMETRIC_CLOUDS_TOP_ALTITUDE PLANAR_CLOUDS_COVERAGE PLANAR_CLOUDS_DENSITY PLANAR_CLOUDS_HEIGHT PLANAR_CLOUDS_ALTITUDE PLANAR_CLOUDS_MULTIPLE_SCATTERING REFRACTIVE_CAUSTICS REFLECTIVE_CAUSTICS REFLECTIVE_CAUSTICS_STEPS REFLECTIVE_CAUSTICS_RADIUS VOLUMETRIC_WATER VOLUMETRIC_WATER_SAMPLES WATER_MULTIPLE_SCATTERING WATER_PARALLAX WATER_PARALLAX_SAMPLES WATER_ANISOTROPY WATER_ABSORPTION_R WATER_ABSORPTION_G WATER_ABSORPTION_B WATER_ABSORPTION_MOD waterAbsorption WATER_SCATTERING_R WATER_SCATTERING_G WATER_SCATTERING_B WATER_SCATTERING_MOD waterScattering waterExtinction SMAA_THRESHOLD SMAA_SEARCH SMAA_SEARCH_DIAG SMAA_CORNER MIN_EV100 MAX_EV100 EXPOSURE_ADAPTATION EXPOSURE_COMPENSATION APERTURE ISO SHUTTER_TIME SENSOR_SIZE DOF DOF_SAMPLES DOF_MAX_RADIUS BLOOM_STRENGTH BLOOM_RADIUS PURKINJE_STRENGTH PURKINJE_R PURKINJE_G PURKINJE_B CAMERA_INFO CONTRAST HUE SATURATION LIGHTNESS DEBUG_ENABLE WHITE_WORLD
