oldLighting=false
oldHandLight=false
vignette=false
separateAo=true
underwaterOverlay=false
sun=false
moon=true
fog=off
rain.depth=false
clouds=off

version.1.16.1=G2
version.1.15.2=G1
version.1.14.4=F5
version.1.13.2=F5
version.1.12.2=F5
version.1.11.2=F5
version.1.10.2=H5
version.1.9.4=H5
version.1.8.9=L5

sliders=sunPathRotation shadowMapResolution sunlightIllum skylightIllum blocklightIllum minLightLuma \
 vibranceInt saturationInt gammaCurve brightnessInt constrastInt colorlumR colorlumG colorlumB \
 exposureMinlum exposureSpeed manualExposureValue emitterRecoloring rtaoSPP rtaoSteps rtaoLength cloudVolumeSamples \
 vignetteStart vignetteEnd vignetteIntensity vignetteExponent framingAspectX framingAspectY framingToAspectCenter \
 airRayleighMult airMieMult airOzoneMult airMistMult fogAdaptiveSteps fogClipDist waterVolAdaptiveSteps waterVolClipDist \
 fogDensityMult mistMieAnisotropy cloudCumulusCoverageBias cloudCumulusAlt cloudCumulusDepth cloudCumulusScaleMult \
 netherSmokeEmissionMult cloudCirrusAlt cloudCirrusDepth cloudCirrusCoverageBias motionblurSamples motionblurScale \
 windIntensity roughReflectionSamples rsmRange ssrtRange indirectResReduction ssrtSPP rsmExtraSamples lensFlareThreshold \
 lensFlareIntensity camSensorWidth camFStops DoFQuality lensFlareGhostCount lensFlareGhostSpace lensFlareHaloRad lensFlareHaloDepth \
 pomSamples pomShadowSamples pomDepth waterDensity roughSSR_maxR roughReflectionsThreshold fogSeaLevel fogMistAltitude skyOcclusionThreshold \
 blocklightBaseTemp CLOUD_RENDER_LOD waterCoeffRed waterCoeffGreen waterCoeffBlue waterCoeffScatter acesRRTExposureBias acesRRTGammaLift \
 acesRRTGlowGainOffset acesRRTSatOffset acesODTSatOffset atmosAnimOffset shadowFilterIterations screenBitdepth fogMistLightingSteps \
 fogMistFalloff airScatterIterations airmassIterations moonlightIllum shadowmapTextureMipBias taaBlendWeight taaMotionRejection taaAntiGhosting \
 taaAntiFlicker taaLumaRejection taaHueRejection waterNormalOctaves exposureBias skyIlluminanceMult skyMultiscatterMult

profile.Low=shadowMapResolution=1536 !fogMistAdvanced CLOUD_RENDER_LOD=5.0 !cloudVolumeEnabled !waterVolumeEnabled !shadowVPSEnabled !contactShadowsEnabled indirectResReduction=3 !rtaoEnabled !ssgiToggle !ssrtEmissionToggle !rsmBounce
profile.Medium=profile.Low shadowMapResolution=2048 cloudVolumeEnabled shadowVPSEnabled contactShadowsEnabled ssgiToggle ssrtEmissionToggle rtaoEnabled
profile.High=profile.Medium shadowMapResolution=3072 CLOUD_RENDER_LOD=4.0 cloudVolumeEnabled fogVolumeEnabled waterVolumeEnabled indirectResReduction=2
profile.Ultra=profile.High shadowMapResolution=4096 rsmBounce
profile.Extreme=profile.Ultra CLOUD_RENDER_LOD=3.0 fogMistAdvanced indirectResReduction=1 ssrtSPP=6 ACES_RRT

screen=INFO <profile> <empty> [Atmosphere] [Lighting] [Terrain] [Camera] [Post] [Misc]
    screen.Atmosphere=[Air] [Clouds] [Dimensions] [Sky] [Water] <empty> sunPathRotation rainbowsEnabled volumeWorldTimeAnim
        screen.Air=airRayleighMult airMieMult airOzoneMult airMistMult fogSeaLevel fogMistAltitude fogMistFalloff <epmty> <empty> <empty> fogVolumeEnabled fogMistAdvanced fogAdaptiveSteps fogClipDist fogDensityMult mistMieAnisotropy fogMistLightingSteps
        screen.Clouds=CLOUD_RENDER_LOD cloudReflectionsToggle <empty> <empty> cloudVolumeEnabled cloudVolumeSamples cloudVolumeSunlightDither cloudVolumeSkylightDither cloudCumulusAlt cloudCumulusDepth cloudCumulusScaleMult cloudCumulusCoverageBias <empty> <empty> cloudCirrusEnabled cloudCirrusAlt cloudCirrusDepth cloudCirrusCoverageBias
        screen.Sky=airScatterIterations airmassIterations <empty> skyIlluminanceMult skyMultiscatterMult <empty> airTransmittanceHQ alternateOzoneDistribution
        screen.Water=waterVolumeEnabled waterDensity waterVolAdaptiveSteps waterVolClipDist <empty> <empty> waterCoeffRed waterCoeffGreen waterCoeffBlue waterCoeffScatter <empty> <empty> waveMode waterNormalOctaves <empty> <empty> customIceEnabled
        screen.Dimensions=netherSmokeEnabled netherSmokeEmission netherSmokeEmissionMult <empty> endSmokeEnabled
    screen.Lighting=[Shadows] [Effects] [Lights] <empty> lightleakWorkaroundToggle directionalLMEnabled
        screen.Shadows=shadowMapResolution shadowmapTextureMipBias shadowFilterIterations shadowVPSEnabled contactShadowsEnabled diffuseModel
        screen.Effects=indirectResReduction subsurfaceScatteringEnabled <empty> <empty> rtaoEnabled rtaoSPP rtaoSteps rtaoLength <empty> <empty> ssgiToggle ssrtEmissionToggle ssrtSPP ssrtRange rsmBounce rsmExtraSamples rsmRange
        screen.Lights=sunlightIllum moonlightIllum skylightIllum minLightLuma <empty> blocklightIllum blocklightBaseTemp emitterRecoloring emitterBoostEnabled
    screen.Terrain=[Reflections] <empty> normalmapEnabled normalmapFormat <empty> [POM] <empty> windEffectsEnabled windIntensity
        screen.Reflections=specularBRDFEnabled <empty> resourcepackReflectionsEnabled roughReflectionsEnabled roughReflectionSamples roughReflectionsThreshold roughSSR_maxR skyOcclusionThreshold
        screen.POM=pomEnabled <empty> pomSamples pomShadowSamples pomDepth
    screen.Camera=bloomEnabled camSensorWidth camFStops <empty> [DepthOfField] [Exposure] [LensFlare] [Motionblur] [Vignette]
        screen.DepthOfField=DoFToggle DoFQuality DoFChromaDispersion
        screen.Exposure=exposureMinlum exposureSpeed exposureBias <empty> manualExposureEnabled manualExposureValue
        screen.LensFlare=lensFlareToggle lensFlareHaloToggle lensFlareIntensity lensFlareThreshold <empty> <empty> lensFlareGhostCount lensFlareGhostSpace lensFlareHaloRad lensFlareHaloDepth
        screen.Motionblur=motionblurToggle <empty> motionblurSamples motionblurScale
        screen.Vignette=vignetteEnabled <empty> vignetteStart vignetteEnd vignetteIntensity vignetteExponent
    screen.Post=[AntiAliasing] <empty> imageSharpenEnabled screenBitdepth <empty> tonemapOperator [ACES] [colorgrade] [FramingTool]
        screen.AntiAliasing=taaEnabled <empty> taaBlendWeight taaMotionRejection taaAntiGhosting taaAntiFlicker taaLumaRejection taaHueRejection
        screen.ACES=acesRRTExposureBias acesRRTGammaLift acesRRTGlowGainOffset acesRRTSatOffset acesODTSatOffset
        screen.colorgrade=doColorgrading <empty> <empty> <empty> vibranceInt saturationInt gammaCurve brightnessInt constrastInt <empty> colorlumR colorlumG colorlumB
        screen.FramingTool=framingToolEnabled framingThirdsHor framingToAspect framingAspectX framingAspectY framingToAspectCenter
    screen.Misc=[Internal] DEBUG_VIEW <empty> <empty> freezeAtmosAnim atmosAnimOffset
        screen.Internal=*

screen.columns=1

screen.Atmosphere.columns=1
    screen.Air.columns=2
    screen.Sky.columns=1
    screen.Dimensions.columns=1
screen.Lighting.columns=1
    screen.Shadows.columns=1
    screen.Effects.columns=2
    screen.Lights.columns=1
screen.Terrain.columns=1
    screen.Reflections.columns=1
    screen.POM.columns=1
screen.Camera.columns=1
    screen.DepthOfField.columns=1
    screen.Exposure.columns=1
    screen.LensFlare.columns=2
    screen.Motionblur.columns=1
    screen.Vignette.columns=1
screen.Post.columns=1
    screen.AntiAliasing.columns=1
    screen.ACES.columns=1
    screen.colorgrade.columns=2

#
#       PROGRAM DISABLING
#

program.world0/composite7.enabled=bloomEnabled
program.world0/composite8.enabled=bloomEnabled
program.world0/composite9.enabled=bloomEnabled
program.world0/composite10.enabled=bloomEnabled
program.world0/composite11.enabled=bloomEnabled

program.world-1/composite7.enabled=bloomEnabled
program.world-1/composite8.enabled=bloomEnabled
program.world-1/composite9.enabled=bloomEnabled
program.world-1/composite10.enabled=bloomEnabled
program.world-1/composite11.enabled=bloomEnabled

program.world1/composite7.enabled=bloomEnabled
program.world1/composite8.enabled=bloomEnabled
program.world1/composite9.enabled=bloomEnabled
program.world1/composite10.enabled=bloomEnabled
program.world1/composite11.enabled=bloomEnabled

#
#       GBUFFERS BLENDING
#

blend.gbuffers_basic=off
blend.gbuffers_block=off
blend.gbuffers_terrain=off
blend.gbuffers_entities=off
blend.gbuffers_hand=off
blend.gbuffers_spidereyes=SRC_ALPHA ONE ZERO ONE
blend.gbuffers_armor_glint=SRC_ALPHA ONE ZERO ONE
blend.gbuffers_textured=off
blend.gbuffers_skybasic=off
blend.gbuffers_skytextured=off
blend.gbuffers_textured_lit=off
blend.gbuffers_clouds=off
blend.gbuffers_weather=off
#blend.gbuffers_water=off
blend.deferred=off

texture.noise=tex/noise2D.png
texture.deferred.depthtex1=tex/curl3D.dat TEXTURE_3D RGB8 64 64 64 RGB UNSIGNED_BYTE
texture.deferred.colortex1=tex/noiseShapePacked.dat TEXTURE_3D R8 128 128 128 RED UNSIGNED_BYTE
texture.deferred.colortex2=tex/noiseErosionPacked.dat TEXTURE_3D R8 32 32 32 RED UNSIGNED_BYTE
#texture.composite.depthtex2=tex/curl3D.dat TEXTURE_3D RGB8 64 64 64 RGB UNSIGNED_BYTE
#texture.deferred.colortex2=tex/bluenoise.dat TEXTURE_3D RGB16 256 256 8 RGB UNSIGNED_BYTE
#texture.composite.colortex6=tex/bluenoise.dat TEXTURE_3D RGB16 256 256 8 RGB UNSIGNED_BYTE

uniform.vec2.viewSize = vec2(viewWidth, viewHeight)
uniform.vec2.pixelSize = vec2(1.0 / viewWidth, 1.0 / viewHeight)

variable.float.skyCaptureYres = min(300.0, viewHeight / 2.5)
variable.float.skyCaptureXres = skyCaptureYres * 2.0
uniform.vec2.skyCaptureResolution = vec2(viewWidth / skyCaptureXres, viewHeight / skyCaptureYres)

variable.int.fmod8 = frameCounter % 8
uniform.vec2.taaOffset = vec2((if( \
    fmod8 == 0,  0.125, \
    fmod8 == 1, -0.125, \
    fmod8 == 2,  0.625, \
    fmod8 == 3,  0.375, \
    fmod8 == 4, -0.625, \
    fmod8 == 5, -0.875, \
    fmod8 == 6,  0.375, \
    fmod8 == 7,  0.875, \
    0.0)*0.6) / viewWidth, \
    (if( \
    fmod8 == 0, -0.375, \
    fmod8 == 1,  0.375, \
    fmod8 == 2,  0.125, \
    fmod8 == 3, -0.625, \
    fmod8 == 4,  0.625, \
    fmod8 == 5, -0.125, \
    fmod8 == 6, -0.875, \
    fmod8 == 7,  0.875, \
    0.0)*0.6) / viewHeight)

uniform.float.worldAnimTime = worldDay % 48 + worldTime / 24000.0

variable.float.upvecNorm    = 1.0 / sqrt((upPosition.x*upPosition.x) + (upPosition.y*upPosition.y) + (upPosition.z*upPosition.z))
uniform.vec3.upvecView      = vec3(upPosition.x*upvecNorm, upPosition.y*upvecNorm, upPosition.z*upvecNorm)
uniform.vec3.upvec          = vec3(0.0, 1.0, 0.0)

variable.float.sunvecNorm   = 1.0 / sqrt((sunPosition.x * sunPosition.x) + (sunPosition.y * sunPosition.y) + (sunPosition.z * sunPosition.z))
variable.float.svecX        = sunPosition.x * sunvecNorm
variable.float.svecY        = sunPosition.y * sunvecNorm
variable.float.svecZ        = sunPosition.z * sunvecNorm
uniform.vec3.sunvecView     = vec3(svecX, svecY, svecZ)
variable.float.sunvecX      = gbufferModelViewInverse.0.0 * sunPosition.x + gbufferModelViewInverse.1.0 * sunPosition.y + gbufferModelViewInverse.2.0 * sunPosition.z
variable.float.sunvecY      = gbufferModelViewInverse.0.1 * sunPosition.x + gbufferModelViewInverse.1.1 * sunPosition.y + gbufferModelViewInverse.2.1 * sunPosition.z
variable.float.sunvecZ      = gbufferModelViewInverse.0.2 * sunPosition.x + gbufferModelViewInverse.1.2 * sunPosition.y + gbufferModelViewInverse.2.2 * sunPosition.z
uniform.vec3.sunvec         = vec3(sunvecX * sunvecNorm, sunvecY * sunvecNorm, sunvecZ * sunvecNorm)

variable.float.moonvecNorm  = 1.0 / sqrt((moonPosition.x * moonPosition.x) + (moonPosition.y * moonPosition.y) + (moonPosition.z * moonPosition.z))
variable.float.mvecX        = moonPosition.x * moonvecNorm
variable.float.mvecY        = moonPosition.y * moonvecNorm
variable.float.mvecZ        = moonPosition.z * moonvecNorm
uniform.vec3.moonvecView    = vec3(mvecX, mvecY, mvecZ)
variable.float.moonvecX     = gbufferModelViewInverse.0.0 * moonPosition.x + gbufferModelViewInverse.1.0 * moonPosition.y + gbufferModelViewInverse.2.0 * moonPosition.z
variable.float.moonvecY     = gbufferModelViewInverse.0.1 * moonPosition.x + gbufferModelViewInverse.1.1 * moonPosition.y + gbufferModelViewInverse.2.1 * moonPosition.z
variable.float.moonvecZ     = gbufferModelViewInverse.0.2 * moonPosition.x + gbufferModelViewInverse.1.2 * moonPosition.y + gbufferModelViewInverse.2.2 * moonPosition.z
uniform.vec3.moonvec        = vec3(moonvecX * moonvecNorm, moonvecY * moonvecNorm, moonvecZ * moonvecNorm)

variable.float.lightvecNorm = 1.0 / sqrt((shadowLightPosition.x * shadowLightPosition.x) + (shadowLightPosition.y * shadowLightPosition.y) + (shadowLightPosition.z * shadowLightPosition.z))
uniform.vec3.lightvecView   = vec3(shadowLightPosition.x * lightvecNorm, shadowLightPosition.y * lightvecNorm, shadowLightPosition.z * lightvecNorm)
variable.float.lightvecX    = gbufferModelViewInverse.0.0 * shadowLightPosition.x + gbufferModelViewInverse.1.0 * shadowLightPosition.y + gbufferModelViewInverse.2.0 * shadowLightPosition.z
variable.float.lightvecY    = gbufferModelViewInverse.0.1 * shadowLightPosition.x + gbufferModelViewInverse.1.1 * shadowLightPosition.y + gbufferModelViewInverse.2.1 * shadowLightPosition.z
variable.float.lightvecZ    = gbufferModelViewInverse.0.2 * shadowLightPosition.x + gbufferModelViewInverse.1.2 * shadowLightPosition.y + gbufferModelViewInverse.2.2 * shadowLightPosition.z
uniform.vec3.lightvec       = vec3(lightvecX * lightvecNorm, lightvecY * lightvecNorm, lightvecZ * lightvecNorm)

variable.float.bloomYres    = min(1080.0, viewHeight)
variable.float.bloomXres    = bloomYres * aspectRatio
uniform.vec2.bloomResolution = vec2(bloomXres, bloomYres)

variable.float.timeSunrise  = ((clamp(sunAngle, 0.97, 1.00) - 0.97) / 0.03) + (1.0 - (clamp(sunAngle, 0.01, 0.10) - 0.01) / 0.09)
variable.float.timeNoon_0   = ((clamp(sunAngle, 0.01, 0.10) - 0.01) / 0.09) - ((clamp(sunAngle, 0.40, 0.49) - 0.40) / 0.09)
variable.float.timeSunset   = ((clamp(sunAngle, 0.40, 0.49) - 0.40) / 0.09) - ((clamp(sunAngle, 0.50, 0.53) - 0.50) / 0.03)
variable.float.timeNight    = ((clamp(sunAngle, 0.50, 0.53) - 0.50) / 0.03) - ((clamp(sunAngle, 0.97, 1.00) - 0.97) / 0.03)
uniform.vec4.daytime        = vec4(timeSunrise, timeNoon_0, timeSunset, timeNight)

variable.float.sunY         = sunvecY * sunvecNorm
variable.float.lf1          = (1.0 - ((clamp(-sunY, 0.002, 0.04) - 0.002) / 0.038)) * (1.0 - ((clamp(sunY, 0.002, 0.04) - 0.002) / 0.038))
uniform.float.lightFlip     = clamp(1.0 - lf1, 0.0, 1.0)


#
#           DETAILED TIME DEPENDENT STUFF
#

variable.float.timeMorning      = ((clamp(worldTime, 22600.0, 23600.0) - 22600.0) / 1000.0)  + (1.0-((clamp(worldTime, 200.0, 1000.0) - 200.0) / 800.0))
variable.float.timeForenoon     = ((clamp(worldTime,   200.0,  1000.0) -   200.0) /  800.0)  - ((clamp(worldTime,  3500.0,  5500.0) -  3500.0) / 2000.0)
variable.float.timeNoon         = ((clamp(worldTime,  3500.0,  5500.0) -  3500.0) / 2000.0)  - ((clamp(worldTime,  6500.0,  8500.0) -  6500.0) / 2000.0)
variable.float.timeAfternoon    = ((clamp(worldTime,  6500.0,  8500.0) -  6500.0) / 2000.0)  - ((clamp(worldTime, 11000.0, 11800.0) - 11000.0) /  800.0)
variable.float.timeEvening      = ((clamp(worldTime, 11000.0, 11800.0) - 11000.0) /  800.0)  - ((clamp(worldTime, 13000.0, 13600.0) - 13000.0) /  600.0)
variable.float.timeDusk         = ((clamp(worldTime, 13000.0, 13600.0) - 13000.0) /  600.0)  - ((clamp(worldTime, 17000.0, 19000.0) - 17000.0) / 2000.0)
variable.float.timeDawn         = ((clamp(worldTime, 17000.0, 19000.0) - 17000.0) / 2000.0)  - ((clamp(worldTime, 22600.0, 23600.0) - 22600.0) / 1000.0)

variable.float.ctimeForenoon    = ((clamp(worldTime,   200.0,  1000.0) -   200.0) /  800.0)  - ((clamp(worldTime,  4500.0,  7000.0) -  4500.0) / 2500.0)
variable.float.ctimeAfternoon   = ((clamp(worldTime,  4500.0,  7000.0) -  4500.0) / 2500.0)  - ((clamp(worldTime, 11000.0, 11800.0) - 11000.0) /  800.0)


#
#           ATMOSPHERE CONCENTRATION DYNAMICS
#

variable.float.atmosRayleigh   = timeMorning * 0.9 + timeForenoon * 1.0 + timeNoon * 1.08 + timeAfternoon * 1.13 + timeEvening * 1.2 + timeDusk * 1.14 + timeDawn * 1.0 + wetness
variable.float.atmosMie        = timeMorning * 0.75 + timeForenoon * 0.9 + timeNoon * 1.0 + timeAfternoon * 1.2 + timeEvening * 1.35 + timeDusk * 1.15 + timeDawn * 0.9 + wetness * 16.0
variable.float.atmosOzone      = timeMorning * 1.3 + timeForenoon * 1.0 + timeNoon * 1.1 + timeAfternoon * 1.15 + timeEvening * 1.45 + timeDusk * 1.4 + timeDawn * 1.3
uniform.vec3.airDensityCoeff = vec3(atmosRayleigh, atmosMie, atmosOzone)


#
#           CLOUD DYNAMICS
#

variable.bool.isCloudSunlit     = (worldTime>23000 || worldTime<12900)
uniform.vec3.cloudLightDir      = vec3(if(isCloudSunlit, sunvecX, moonvecX)*sunvecNorm, if(isCloudSunlit, sunvecY, moonvecY)*sunvecNorm, if(isCloudSunlit, sunvecZ, moonvecZ)*sunvecNorm)
uniform.vec3.cloudLightDirView  = vec3(if(isCloudSunlit, svecX, mvecX), if(isCloudSunlit, svecY, mvecY), if(isCloudSunlit, svecZ, mvecZ))
variable.float.cloudBackscatterInt = ((clamp(worldTime, 12550.0, 12800.0) - 12550.0) / 250.0) - ((clamp(worldTime, 23250.0, 23600.0) - 23250.0) / 350.0)

variable.float.cloudVolumeCov   = 0.045*timeSunrise + 0.03*timeSunset + 0.035*timeNight - wetness * 0.25
variable.float.cloudVolumeDensity = timeMorning * 0.6 + timeForenoon * 0.9 + timeNoon * 1.0 + timeAfternoon * 1.0 + timeEvening * 0.7 + timeDusk * 0.6 + timeDawn * 0.7

uniform.vec3.volumeCloudData = vec3(cloudVolumeCov, cloudVolumeDensity, if(isCloudSunlit, 1.0-cloudBackscatterInt*0.75, 1.0))

variable.float.cloudCirrusCov   = 0.07*timeSunrise + 0.05 * timeForenoon - 0.035*timeSunset - 0.02*timeNight
variable.float.cloudCirrusDensity = timeMorning * 0.9 + timeForenoon * 1.0 + timeNoon * 1.0 + timeAfternoon * 1.0 + timeEvening * 0.66 + timeDusk * 0.7 + timeDawn * 0.7
uniform.vec2.volumeCirrusData = vec2(cloudCirrusCov, cloudCirrusDensity)


#
#           FOG DYNAMICS
#

variable.float.fogRayleigh  = 0.7 * timeMorning + 0.52 * timeForenoon + 0.5 * timeNoon + 0.46 * timeAfternoon + 0.39 * timeEvening + 0.36 * timeDusk + 0.45 * timeDawn + wetness
variable.float.fogMie       = 1.0 * timeMorning + 0.6 * timeForenoon + 0.55 * timeNoon + 0.45 * timeAfternoon + 0.55 * timeEvening + 0.52 * timeDusk + 0.65 * timeDawn + wetness * 2.5
variable.float.fogMist      = 1.0 * timeMorning + 0.06 * timeForenoon + timeDawn * 0.35 + wetness * 2.0

uniform.vec3.fogDensityCoeff = vec3(fogRayleigh, fogMie, fogMist)