profile.Fast=!cloudVolumeEnabled cloudVolumeFastMultiscatter !godraysEnabled !customWaterNormals !customWaterColor !ssaoEnabled !reflectionsEnabled
profile.Default=profile.Fast cloudVolumeEnabled godraysEnabled
profile.Fancy=profile.Default customWaterNormals customWaterColor ssaoEnabled reflectionsEnabled


screen=INFO <profile> colorPreset <empty> [ATMOS] [LIGHTING] [TERRAIN] [CAMERA] [POST]
screen.columns=1

screen.ATMOS=sunPathRotation <empty> [COLORS] <empty> [CLOUDS] [FOG] [GODRAYS] [WATER]
screen.ATMOS.columns=1

    screen.COLORS=[SUNLIGHT] [SKYLIGHT] [SKY] [FOGCOL] [BLOCKLIGHT] <empty> AmbientL
    screen.COLORS.columns=1
        screen.SUNLIGHT=sunlightSunriseR sunlightNoonR sunlightSunriseG sunlightNoonG sunlightSunriseB sunlightNoonB sunlightSunriseL sunlightNoonL <empty> <empty> sunlightSunsetR sunlightNightR sunlightSunsetG sunlightNightG sunlightSunsetB sunlightNightB sunlightSunsetL sunlightNightL

        screen.SKYLIGHT=skylightSunriseR skylightNoonR skylightSunriseG skylightNoonG skylightSunriseB skylightNoonB skylightSunriseL skylightNoonL <empty> <empty> skylightSunsetR skylightNightR skylightSunsetG skylightNightG skylightSunsetB skylightNightB skylightSunsetL skylightNightL

        screen.FOGCOL=fogcolSunriseR fogcolNoonR fogcolSunriseG fogcolNoonG fogcolSunriseB fogcolNoonB fogcolSunriseL fogcolNoonL <empty> <empty> fogcolSunsetR fogcolNightR fogcolSunsetG fogcolNightG fogcolSunsetB fogcolNightB fogcolSunsetL fogcolNightL

        screen.SKY=skycolSunriseR skycolNoonR skycolSunriseG skycolNoonG skycolSunriseB skycolNoonB skycolSunriseL skycolNoonL <empty> <empty> skycolSunsetR skycolNightR skycolSunsetG skycolNightG skycolSunsetB skycolNightB skycolSunsetL skycolNightL

        screen.BLOCKLIGHT=BlocklightR BlocklightG BlocklightB BlocklightL
        screen.BLOCKLIGHT.columns=1


    screen.CLOUDS=cloudVolumeEnabled cloudVolumeStoryMode cloudVolumeRounding cloudVolumeSamples cloudVolumeAlt cloudVolumeDepth cloudVolumeClip

    screen.FOG=fogEnabled <empty> fogStart fogFalloff
    screen.FOG.columns=1

    screen.GODRAYS=godraysEnabled godraySamples godrayIntensity godraySize
    screen.GODRAYS.columns=1

    screen.WATER=customWaterNormals customWaterColor waterRed waterGreen waterBlue waterAlpha <empty> <empty> waterFogEnabled waterFogFalloff waterFogVanillaColor <empty> waterFogRed waterFogGreen waterFogBlue
    screen.WATER.columns=2

screen.LIGHTING=shadowMapResolution shadowFilterIterations shadowFilterSize disableFoliageShadows <empty> ssaoEnabled UseLightleakPrevention
screen.LIGHTING.columns=1

screen.TERRAIN=[REFLECTIONS] <empty> normalmapEnabled normalmapFormat <empty> windEffectsEnabled windIntensity
screen.TERRAIN.columns=1

    screen.REFLECTIONS=reflectionsEnabled resourcepackReflectionsEnabled specularHighlightsEnabled <empty> <empty> <empty> roughReflectionsEnabled roughReflectionSamples <empty> <empty> screenspaceReflectionsEnabled reflectionCaptureEnabled <empty> <empty> roughnessThreshold skyOcclusionThreshold
    screen.REFLECTIONS.columns=2

screen.CAMERA=camSensorWidth camFStops anamorphStretch <empty> [BLOOM] [DOF] [EXPOSURE] [FLARE] [MBLUR] [VIGNETTE]
screen.CAMERA.columns=1

    screen.BLOOM=bloomEnabled bloomIntensity
    screen.BLOOM.columns=1

    screen.DOF=DoFToggle DoFQuality DoFChromaDispersion chromaOffsetScale <empty> camFocus camManFocDis showFocusPlane
    screen.DOF.columns=1

    screen.EXPOSURE=exposureDecay exposureBias exposureDarkClamp exposureBrightClamp <empty> <empty> manualExposureEnabled manualExposureValue

    screen.FLARE=legacyFlareToggle legacyFlareIntensity
    screen.FLARE.columns=1

    screen.MBLUR=motionblurToggle <empty> motionblurSamples motionblurScale
    screen.MBLUR.columns=1

    screen.VIGNETTE=vignetteEnabled <empty> vignetteStart vignetteEnd vignetteIntensity vignetteExponent
    screen.VIGNETTE.columns=1


screen.POST=taaEnabled screenBitdepth VIEWPORT_GAMUT imageSharpenEnabled <empty> [CGRADE] [FTOOL]
screen.POST.columns=1

    screen.CGRADE=doColorgrading <empty> <empty> <empty> vibranceInt saturationInt gammaCurve brightnessInt constrastInt <empty> colorlumR colorlumG colorlumB

    screen.FTOOL=framingToolEnabled framingThirdsHor framingToAspect framingAspectX framingAspectY framingToAspectCenter
    screen.FTOOL.columns=1

sliders=sunlightSunriseR sunlightNoonR sunlightSunriseG sunlightNoonG sunlightSunriseB sunlightNoonB sunlightSunriseL sunlightNoonL sunlightSunsetR sunlightNightR sunlightSunsetG sunlightNightG sunlightSunsetB sunlightNightB sunlightSunsetL sunlightNightL \
 skylightSunriseR skylightNoonR skylightSunriseG skylightNoonG skylightSunriseB skylightNoonB skylightSunriseL skylightNoonL skylightSunsetR skylightNightR skylightSunsetG skylightNightG skylightSunsetB skylightNightB skylightSunsetL skylightNightL \
 fogcolSunriseR fogcolNoonR fogcolSunriseG fogcolNoonG fogcolSunriseB fogcolNoonB fogcolSunriseL fogcolNoonL fogcolSunsetR fogcolNightR fogcolSunsetG fogcolNightG fogcolSunsetB fogcolNightB fogcolSunsetL fogcolNightL \
 skycolSunriseR skycolNoonR skycolSunriseG skycolNoonG skycolSunriseB skycolNoonB skycolSunriseL skycolNoonL skycolSunsetR skycolNightR skycolSunsetG skycolNightG skycolSunsetB skycolNightB skycolSunsetL skycolNightL \
 BlocklightR BlocklightG skycolSunriseG BlocklightB BlocklightL AmbientL \
 sunPathRotation cloudVolumeRounding cloudVolumeSamples cloudVolumeAlt cloudVolumeDepth cloudVolumeClip \
 fogStart fogFalloff godraySamples godrayIntensity godraySize waterFogFalloff waterFogRed waterFogGreen waterFogBlue \
 waterRed waterGreen waterBlue waterAlpha \
 shadowMapResolution shadowFilterIterations shadowFilterSize \
 windIntensity roughnessThreshold skyOcclusionThreshold \
 camSensorWidth camFStops anamorphStretch DoFQuality chromaOffsetScale legacyFlareIntensity motionblurSamples motionblurScale \
 exposureDecay exposureBias exposureDarkClamp exposureBrightClamp bloomIntensity manualExposureValue \
 vibranceInt saturationInt gammaCurve brightnessInt constrastInt colorlumR colorlumG colorlumB \
 framingAspectX framingAspectY framingToAspectCenter camFocus camManFocDis \
 vignetteStart vignetteEnd vignetteIntensity vignetteExponent


version.1.16.5=G8
version.1.16.4=G8

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

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=SRC_ALPHA ONE ZERO ONE
#blend.gbuffers_textured_lit=off
blend.gbuffers_clouds=off
blend.gbuffers_weather=off
blend.deferred=off
blend.prepare=off

blend.gbuffers_water.colortex1=off
blend.gbuffers_water.colortex2=off

blend.gbuffers_hand_water.colortex1=off
blend.gbuffers_hand_water.colortex2=off

blend.gbuffers_entities.colortex1=off
blend.gbuffers_entities.colortex2=off


size.buffer.colortex3=256 256
size.buffer.colortex9=1024 512
size.buffer.colortex10=1024 512

texture.noise=img/noise2D.png
texture.prepare.colortex8=minecraft:textures/environment/clouds.png
texture.composite.colortex8=minecraft:textures/environment/clouds.png

program.world0/composite.enabled=reflectionCaptureEnabled && reflectionsEnabled
program.world-1/composite.enabled=reflectionCaptureEnabled && reflectionsEnabled
program.world1/composite.enabled=reflectionCaptureEnabled && reflectionsEnabled

program.world0/composite10.enabled=DoFToggle
program.world0/composite11.enabled=motionblurToggle || legacyFlareToggle
program.world-1/composite10.enabled=DoFToggle
program.world-1/composite11.enabled=motionblurToggle || legacyFlareToggle
program.world1/composite10.enabled=DoFToggle
program.world1/composite11.enabled=motionblurToggle || legacyFlareToggle

#
#       UNIFORMS
#

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

#       TAA OFFSET
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)

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

#       DIRECTIONS
variable.float.upDirNorm    = 1.0 / sqrt((upPosition.x*upPosition.x) + (upPosition.y*upPosition.y) + (upPosition.z*upPosition.z))
uniform.vec3.upDirView      = vec3(upPosition.x*upDirNorm, upPosition.y*upDirNorm, upPosition.z*upDirNorm)
uniform.vec3.upDir          = vec3(0.0, 1.0, 0.0)

variable.float.sunDirNorm   = 1.0 / sqrt((sunPosition.x * sunPosition.x) + (sunPosition.y * sunPosition.y) + (sunPosition.z * sunPosition.z))
variable.float.svecX        = sunPosition.x * sunDirNorm
variable.float.svecY        = sunPosition.y * sunDirNorm
variable.float.svecZ        = sunPosition.z * sunDirNorm
uniform.vec3.sunDirView     = vec3(svecX, svecY, svecZ)
variable.float.sunDirX      = gbufferModelViewInverse.0.0 * sunPosition.x + gbufferModelViewInverse.1.0 * sunPosition.y + gbufferModelViewInverse.2.0 * sunPosition.z
variable.float.sunDirY      = gbufferModelViewInverse.0.1 * sunPosition.x + gbufferModelViewInverse.1.1 * sunPosition.y + gbufferModelViewInverse.2.1 * sunPosition.z
variable.float.sunDirZ      = gbufferModelViewInverse.0.2 * sunPosition.x + gbufferModelViewInverse.1.2 * sunPosition.y + gbufferModelViewInverse.2.2 * sunPosition.z
uniform.vec3.sunDir         = vec3(sunDirX * sunDirNorm, sunDirY * sunDirNorm, sunDirZ * sunDirNorm)

variable.float.moonDirNorm  = 1.0 / sqrt((moonPosition.x * moonPosition.x) + (moonPosition.y * moonPosition.y) + (moonPosition.z * moonPosition.z))
variable.float.mvecX        = moonPosition.x * moonDirNorm
variable.float.mvecY        = moonPosition.y * moonDirNorm
variable.float.mvecZ        = moonPosition.z * moonDirNorm
uniform.vec3.moonDirView    = vec3(mvecX, mvecY, mvecZ)
variable.float.moonDirX     = gbufferModelViewInverse.0.0 * moonPosition.x + gbufferModelViewInverse.1.0 * moonPosition.y + gbufferModelViewInverse.2.0 * moonPosition.z
variable.float.moonDirY     = gbufferModelViewInverse.0.1 * moonPosition.x + gbufferModelViewInverse.1.1 * moonPosition.y + gbufferModelViewInverse.2.1 * moonPosition.z
variable.float.moonDirZ     = gbufferModelViewInverse.0.2 * moonPosition.x + gbufferModelViewInverse.1.2 * moonPosition.y + gbufferModelViewInverse.2.2 * moonPosition.z
uniform.vec3.moonDir        = vec3(moonDirX * moonDirNorm, moonDirY * moonDirNorm, moonDirZ * moonDirNorm)

variable.float.shadowmapLightDirX = shadowModelViewInverse.2.0 * 1.0
variable.float.shadowmapLightDirY = shadowModelViewInverse.2.1 * 1.0
variable.float.shadowmapLightDirZ = shadowModelViewInverse.2.2 * 1.0
uniform.vec3.lightDir = vec3(shadowmapLightDirX, shadowmapLightDirY, shadowmapLightDirZ)
variable.float.shadowmapLightDirViewX = gbufferModelView.0.0 * shadowmapLightDirX + gbufferModelView.1.0 * shadowmapLightDirY + gbufferModelView.2.0 * shadowmapLightDirZ
variable.float.shadowmapLightDirViewY = gbufferModelView.0.1 * shadowmapLightDirX + gbufferModelView.1.1 * shadowmapLightDirY + gbufferModelView.2.1 * shadowmapLightDirZ
variable.float.shadowmapLightDirViewZ = gbufferModelView.0.2 * shadowmapLightDirX + gbufferModelView.1.2 * shadowmapLightDirY + gbufferModelView.2.2 * shadowmapLightDirZ
uniform.vec3.lightDirView = vec3(shadowmapLightDirViewX, shadowmapLightDirViewY, shadowmapLightDirViewZ)

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     = ((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, timeSunset, timeNight)

variable.float.sunY         = sunDirY * sunDirNorm
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)


variable.bool.isCloudSunlit     = (worldTime>23000 || worldTime<12900)
uniform.vec3.cloudLightDir      = vec3(if(isCloudSunlit, sunDirX, moonDirX)*sunDirNorm, if(isCloudSunlit, sunDirY, moonDirY)*sunDirNorm, if(isCloudSunlit, sunDirZ, moonDirZ)*sunDirNorm)
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.cloudLightFlip1 = ((clamp(worldTime, 22600.0, 22900.0) - 22600.0) / 300.0) - ((clamp(worldTime, 23000.00, 23200.0) - 23000.0) / 200.0)
variable.float.cloudLightFlip2 = ((clamp(worldTime, 12600.0, 12900.0) - 12600.0) / 300.0) - ((clamp(worldTime, 12900.00, 13200.0) - 12900.0) / 300.0)
uniform.float.cloudLightFlip   = clamp(1.0 - (cloudLightFlip1 + cloudLightFlip2), 0.0, 1.0)

variable.float.MoonPhase_LightStrength = (abs(moonPhase - 4.0) / 4.0) * 0.9 + 0.2
variable.float.MoonPhase_Smoothed = smooth(MoonPhase_LightStrength, 10.0, 10.0)
uniform.float.RMoonPhaseOcclusion = MoonPhase_Smoothed