From 7823ba6067f685eed73e140435847d5e61fd81b8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 20:16:33 +0000 Subject: [PATCH 1/4] Initial plan From f38c689f8e2b145d3dc6acfc35775de84c56f190 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 20:23:54 +0000 Subject: [PATCH 2/4] Add Screen-Space Global Illumination (SSGI) ray/path tracing feature - New lib/lighting/screenSpaceGI.glsl with SSGI implementation - New RT_SUNLIGHT_TRACING option (OFF/Low/Medium/High quality) - New RT_GI_STRENGTH and RT_GI_RADIUS configurable settings - Integrated into deferred1.glsl after SSAO pass - Added RT_LIGHTING_SETTINGS submenu to Lighting Settings - Added language strings for all new options - Profile defaults: OFF for Potato-High, Low for VeryHigh, Medium for Ultra Co-authored-by: Noa3 <8495084+Noa3@users.noreply.github.com> --- shaders/lang/en_US.lang | 16 +++++ shaders/lib/common.glsl | 8 +++ shaders/lib/lighting/screenSpaceGI.glsl | 95 +++++++++++++++++++++++++ shaders/program/deferred1.glsl | 23 ++++++ shaders/shaders.properties | 19 ++--- 5 files changed, 152 insertions(+), 9 deletions(-) create mode 100644 shaders/lib/lighting/screenSpaceGI.glsl diff --git a/shaders/lang/en_US.lang b/shaders/lang/en_US.lang index fe044213..91e06b7b 100644 --- a/shaders/lang/en_US.lang +++ b/shaders/lang/en_US.lang @@ -310,6 +310,22 @@ option.VANILLAAO_I=Edge Shadow Intensity (Vanilla) option.VANILLAAO_I.comment=Determines the strength of Minecraft's ambient occlusion which adds extra ambient shadowing to the edges of the scene. value.VANILLAAO_I.0=OFF +screen.RT_LIGHTING_SETTINGS=Ray-Traced Lighting §c[-]§r +screen.RT_LIGHTING_SETTINGS.comment=Settings for screen-space ray-traced indirect lighting (SSGI). Approximates path-traced global illumination by tracing rays in screen space to gather indirect light bounces from nearby surfaces. §c[-]§r These settings can significantly impact performance. + +option.RT_SUNLIGHT_TRACING=SSGI Quality +option.RT_SUNLIGHT_TRACING.comment=Enables Screen-Space Global Illumination, a path tracing approximation that adds indirect diffuse lighting bounces using screen-space ray marching. Higher quality uses more rays and steps for smoother, more accurate results. §c[-]§r This effect can impact performance, especially at higher quality levels. +value.RT_SUNLIGHT_TRACING.0=§aOFF +value.RT_SUNLIGHT_TRACING.1=§eLow +value.RT_SUNLIGHT_TRACING.2=§cMedium +value.RT_SUNLIGHT_TRACING.3=§4§lHigh + +option.RT_GI_STRENGTH=SSGI Strength +option.RT_GI_STRENGTH.comment=Adjusts the intensity of the screen-space global illumination effect. Higher values produce more visible indirect light bounces. + +option.RT_GI_RADIUS=SSGI Radius +option.RT_GI_RADIUS.comment=Controls how far rays are traced for indirect lighting. Larger radii capture light bouncing from more distant surfaces but may introduce noise. + option.BORDER_FOG=Border Fog option.BORDER_FOG.comment=Intense fog on the edges of the loaded world to hide chunk borders. §e[*]§r It's recommended to disable Border Fog when playing with less than 8 chunks of render distance. diff --git a/shaders/lib/common.glsl b/shaders/lib/common.glsl index 4569a0f1..c9ca011a 100644 --- a/shaders/lib/common.glsl +++ b/shaders/lib/common.glsl @@ -85,6 +85,10 @@ #define SSAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] #define VANILLAAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define RT_SUNLIGHT_TRACING 0 //[0 1 2 3] + #define RT_GI_STRENGTH 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + #define RT_GI_RADIUS 3.0 //[1.0 1.5 2.0 2.5 3.0 3.5 4.0 5.0 6.0 8.0] + #define AURORA_STYLE_DEFINE -1 //[-1 0 1 2] #define AURORA_CONDITION 3 //[0 1 2 3 4] #define NIGHT_NEBULAE -1 //[-1 1] @@ -485,6 +489,10 @@ #else #define SSAO_QUALI 0 #endif + #if RT_SUNLIGHT_TRACING > 0 + #define RT_SUNLIGHT_QUALITY RT_SUNLIGHT_TRACING + #define SSGI_ENABLED + #endif #if LIGHTSHAFT_BEHAVIOUR > 0 #define LIGHTSHAFT_QUALI LIGHTSHAFT_QUALI_DEFINE #else diff --git a/shaders/lib/lighting/screenSpaceGI.glsl b/shaders/lib/lighting/screenSpaceGI.glsl new file mode 100644 index 00000000..7d21e619 --- /dev/null +++ b/shaders/lib/lighting/screenSpaceGI.glsl @@ -0,0 +1,95 @@ +/* + Screen-Space Global Illumination (SSGI) / Ray-Traced Indirect Lighting + Approximates path-traced indirect diffuse lighting using screen-space ray marching. + Traces rays from each fragment in random hemisphere directions to gather + indirect light bounces from nearby surfaces visible on screen. +*/ + +vec3 CosWeightedHemisphereDir(vec3 normal, float xi1, float xi2) { + float r = sqrt(xi1); + float phi = 6.28318530718 * xi2; + + vec3 sampleDir = vec3( + r * cos(phi), + r * sin(phi), + sqrt(max(1.0 - xi1, 0.0)) + ); + + vec3 up = abs(normal.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, normal)); + vec3 bitangent = cross(normal, tangent); + + return tangent * sampleDir.x + bitangent * sampleDir.y + normal * sampleDir.z; +} + +float DoScreenSpaceGlobalIllumination( + vec3 viewPos, vec3 normalM, float z0, float linearZ0, float dither, + out vec3 giColor +) { + giColor = vec3(0.0); + + if (z0 < 0.56 || z0 > 0.9999) return 0.0; + + #if RT_SUNLIGHT_QUALITY == 1 + const int samples = 2; + const int steps = 6; + #elif RT_SUNLIGHT_QUALITY == 2 + const int samples = 3; + const int steps = 8; + #else + const int samples = 4; + const int steps = 12; + #endif + + float radius = RT_GI_RADIUS; + float invSteps = 1.0 / float(steps); + float thicknessThreshold = radius * 0.15 * invSteps; + float totalWeight = 0.0; + vec3 totalGI = vec3(0.0); + + for (int i = 0; i < samples; i++) { + float xi1 = fract(dither + float(i) * 0.618033988); + float xi2 = fract(dither * 1.414 + float(i) * 0.381966); + + vec3 sampleDir = CosWeightedHemisphereDir(normalM, xi1, xi2); + vec3 viewDir = mat3(gbufferModelView) * sampleDir; + float viewDirLen = length(viewDir); + if (viewDirLen < 0.001) continue; + viewDir /= viewDirLen; + + vec3 rayStep = viewDir * (radius * invSteps); + vec3 rayPos = viewPos + rayStep; + + for (int j = 1; j <= steps; j++) { + vec4 projPos = gbufferProjection * vec4(rayPos, 1.0); + vec3 screenPos = projPos.xyz / projPos.w * 0.5 + 0.5; + + if (clamp(screenPos.xy, vec2(0.0), vec2(1.0)) != screenPos.xy) break; + + float sampleDepth = texelFetch(depthtex0, ivec2(screenPos.xy * vec2(viewWidth, viewHeight)), 0).r; + float sampleLinear = (2.0 * near) / (far + near - sampleDepth * farMinusNear); + float rayLinear = (2.0 * near) / (far + near - screenPos.z * farMinusNear); + + float depthDiff = rayLinear - sampleLinear; + + if (depthDiff > 0.0 && depthDiff < thicknessThreshold) { + vec3 hitColor = texelFetch(colortex0, ivec2(screenPos.xy * vec2(viewWidth, viewHeight)), 0).rgb; + float dist = float(j) * invSteps; + float falloff = 1.0 - dist * dist; + totalGI += hitColor * falloff; + totalWeight += falloff; + break; + } + + rayPos += rayStep; + } + } + + if (totalWeight > 0.0) { + giColor = totalGI / totalWeight; + giColor = min(giColor, vec3(2.0)); + return 1.0; + } + + return 0.0; +} diff --git a/shaders/program/deferred1.glsl b/shaders/program/deferred1.glsl index 402ae645..5d4a1449 100644 --- a/shaders/program/deferred1.glsl +++ b/shaders/program/deferred1.glsl @@ -144,6 +144,10 @@ float GetLinearDepth(float depth) { #include "/lib/misc/distantLightBokeh.glsl" #endif +#ifdef SSGI_ENABLED + #include "/lib/lighting/screenSpaceGI.glsl" +#endif + //Program// void main() { vec4 color = vec4(texelFetch(colortex0, texelCoord, 0).rgb, 1.0); @@ -191,6 +195,7 @@ void main() { #if SSAO_QUALI > 0 || defined WORLD_OUTLINE float linearZ0 = GetLinearDepth(z0); + #define SSGI_LINEAR_Z0_DEFINED #endif #if SSAO_QUALI > 0 @@ -221,6 +226,24 @@ void main() { color.rgb *= ssao; + #ifdef SSGI_ENABLED + #ifndef SSGI_LINEAR_Z0_DEFINED + float linearZ0SSGI = GetLinearDepth(z0); + #else + float linearZ0SSGI = linearZ0; + #endif + vec3 ssgiNormal = texelFetch(colortex4, texelCoord, 0).rgb; + ssgiNormal = mat3(gbufferModelView) * ssgiNormal; + vec3 giColor; + float giHit = DoScreenSpaceGlobalIllumination( + viewPos.xyz, ssgiNormal, z0, linearZ0SSGI, dither, giColor + ); + if (giHit > 0.0) { + float giStrength = RT_GI_STRENGTH * 0.01; + color.rgb += giColor * giStrength * 0.15; + } + #endif + #ifdef PBR_REFLECTIONS vec3 texture4 = texelFetch(colortex4, texelCoord, 0).rgb; normalM = mat3(gbufferModelView) * texture4; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 52baacd3..4f900f14 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,11 +1,11 @@ # Profiles - profile.POTATO = SHADOW_QUALITY=-1 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.VERYLOW = SHADOW_QUALITY=0 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.LOW = SHADOW_QUALITY=0 shadowDistance=96.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.MEDIUM = SHADOW_QUALITY=1 shadowDistance=128.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=1 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.HIGH = SHADOW_QUALITY=2 shadowDistance=192.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 - profile.VERYHIGH = SHADOW_QUALITY=3 shadowDistance=224.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=256 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 - profile.ULTRA = SHADOW_QUALITY=4 shadowDistance=256.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=3 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=512 WORLD_SPACE_REFLECTIONS=1 ENTITY_SHADOW=1 + profile.POTATO = SHADOW_QUALITY=-1 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.VERYLOW = SHADOW_QUALITY=0 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.LOW = SHADOW_QUALITY=0 shadowDistance=96.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.MEDIUM = SHADOW_QUALITY=1 shadowDistance=128.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=1 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.HIGH = SHADOW_QUALITY=2 shadowDistance=192.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=0 + profile.VERYHIGH = SHADOW_QUALITY=3 shadowDistance=224.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=256 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=1 + profile.ULTRA = SHADOW_QUALITY=4 shadowDistance=256.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=3 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=512 WORLD_SPACE_REFLECTIONS=1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=2 # Screen Setup screen= [INFORMATION] SHADER_STYLE RP_MODE [PERFORMANCE_SETTINGS] [CAMERA_SETTINGS] [LIGHTING_SETTINGS] [ATMOSPHERE_SETTINGS] [MATERIAL_SETTINGS] [OTHER_SETTINGS] @@ -46,7 +46,8 @@ screen.RAIN_ATM_MULTS= ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I screen.NETHER_ATM_MULTS= ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I screen.END_ATM_MULTS= ATM_END_R ATM_END_G ATM_END_B ATM_END_I - screen.LIGHTING_SETTINGS= [LIGHT_COLOR_SETTINGS] AMBIENT_MULT [BLOCKLIGHT_SETTINGS] SHADOW_SMOOTHING [PIXELATED_LIGHTING_SETTINGS] CAVE_LIGHTING SSAO_I VANILLAAO_I PLAYER_SHADOW + screen.LIGHTING_SETTINGS= [LIGHT_COLOR_SETTINGS] AMBIENT_MULT [BLOCKLIGHT_SETTINGS] SHADOW_SMOOTHING [PIXELATED_LIGHTING_SETTINGS] CAVE_LIGHTING SSAO_I VANILLAAO_I PLAYER_SHADOW [RT_LIGHTING_SETTINGS] + screen.RT_LIGHTING_SETTINGS= RT_SUNLIGHT_TRACING RT_GI_STRENGTH RT_GI_RADIUS screen.LIGHT_COLOR_SETTINGS= LIGHT_COLOR_MULTS [MORNING_LIGHT_MULTS] [NOON_LIGHT_MULTS] [NIGHT_LIGHT_MULTS] [RAIN_LIGHT_MULTS] [NETHER_LIGHT_MULTS] [END_LIGHT_MULTS] screen.MORNING_LIGHT_MULTS= LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I screen.NOON_LIGHT_MULTS= LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I @@ -63,7 +64,7 @@ screen.ACT_FEATURES_SETTINGS= COLORED_LIGHT_SATURATION COLORED_LIGHT_FOG COLORED_LIGHT_FOG_I WORLD_SPACE_REFLECTIONS WORLD_SPACE_REF_MODE WORLD_SPACE_PLAYER_REF CONNECTED_GLASS_EFFECT PORTAL_EDGE_EFFECT PUDDLE_VOXELIZATION COLORED_CANDLE_LIGHT # Set Sliders - sliders=shadowDistance BLOOM_STRENGTH CLOUD_ALT1 CLOUD_ALT2 TM_EXPOSURE TM_CONTRAST T_SATURATION T_VIBRANCE MOTION_BLURRING_STRENGTH NORMAL_MAP_STRENGTH CUSTOM_EMISSION_INTENSITY IMAGE_SHARPENING SUN_ANGLE ATM_FOG_MULT ATM_FOG_DISTANCE ATM_FOG_ALTITUDE CAVE_LIGHTING GR_RR GR_RG GR_RB GR_RC GR_GR GR_GG GR_GB GR_GC GR_BR GR_BG GR_BB GR_BC POM_DEPTH POM_QUALITY POM_DISTANCE WATER_BUMPINESS WATER_BUMP_SMALL WATER_BUMP_MED WATER_BUMP_BIG WATER_SPEED_MULT WATER_SIZE_MULT WATER_REFRACTION_INTENSITY SELECT_OUTLINE_I SELECT_OUTLINE_R SELECT_OUTLINE_G SELECT_OUTLINE_B LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I ATM_NOON_R ATM_NOON_G ATM_NOON_B ATM_NOON_I LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I ATM_MORNING_R ATM_MORNING_G ATM_MORNING_B ATM_MORNING_I LIGHT_NIGHT_R LIGHT_NIGHT_G LIGHT_NIGHT_B LIGHT_NIGHT_I ATM_NIGHT_R ATM_NIGHT_G ATM_NIGHT_B ATM_NIGHT_I LIGHT_RAIN_R LIGHT_RAIN_G LIGHT_RAIN_B LIGHT_RAIN_I ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I LIGHT_NETHER_R LIGHT_NETHER_G LIGHT_NETHER_B LIGHT_NETHER_I ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I LIGHT_END_R LIGHT_END_G LIGHT_END_B LIGHT_END_I ATM_END_R ATM_END_G ATM_END_B ATM_END_I WORLD_OUTLINE_I AMBIENT_MULT GENERATED_NORMAL_MULT COATED_TEXTURE_MULT LIGHTSHAFT_DAY_I LIGHTSHAFT_NIGHT_I LIGHTSHAFT_RAIN_I WATERCOLOR_R WATERCOLOR_G WATERCOLOR_B WATER_FOAM_I WATER_ALPHA_MULT WATER_FOG_MULT UNDERWATERCOLOR_R UNDERWATERCOLOR_G UNDERWATERCOLOR_B GLOWING_ORE_MULT SSAO_I VANILLAAO_I CHROMA_ABERRATION XLIGHT_R XLIGHT_G XLIGHT_B NIGHT_NEBULA_I WEATHER_TEX_OPACITY NETHER_STORM_LOWER_ALT NETHER_STORM_HEIGHT NETHER_STORM_I CLOUD_UNBOUND_AMOUNT CLOUD_UNBOUND_SIZE_MULT CLOUD_UNBOUND_RAIN_ADD CLOUD_SPEED_MULT WB_DOF_I WB_DOF_FOCUS WB_DB_DAY_I WB_DB_NIGHT_I WB_DB_RAIN_I WB_DB_WATER_I WB_DB_NETHER_I WB_DB_END_I WAVING_SPEED WAVING_I MOON_PHASE_FULL MOON_PHASE_PARTIAL MOON_PHASE_DARK LENSFLARE_I SHADOW_SMOOTHING BLOCKLIGHT_FLICKERING NETHER_VIEW_LIMIT CLOUD_R CLOUD_G CLOUD_B WAVING_I_RAIN_MULT COLORED_LIGHT_FOG_I XLIGHT_I COLORED_LIGHT_SATURATION PIXEL_SCALE TM_DARK_DESATURATION TM_WHITE_PATH NIGHT_STAR_AMOUNT FXAA_TAA_INTERACTION FXAA_STRENGTH LIGHTSHAFT_SUNSET_SATURATION XLIGHT_CURVE + sliders=shadowDistance BLOOM_STRENGTH CLOUD_ALT1 CLOUD_ALT2 TM_EXPOSURE TM_CONTRAST T_SATURATION T_VIBRANCE MOTION_BLURRING_STRENGTH NORMAL_MAP_STRENGTH CUSTOM_EMISSION_INTENSITY IMAGE_SHARPENING SUN_ANGLE ATM_FOG_MULT ATM_FOG_DISTANCE ATM_FOG_ALTITUDE CAVE_LIGHTING GR_RR GR_RG GR_RB GR_RC GR_GR GR_GG GR_GB GR_GC GR_BR GR_BG GR_BB GR_BC POM_DEPTH POM_QUALITY POM_DISTANCE WATER_BUMPINESS WATER_BUMP_SMALL WATER_BUMP_MED WATER_BUMP_BIG WATER_SPEED_MULT WATER_SIZE_MULT WATER_REFRACTION_INTENSITY SELECT_OUTLINE_I SELECT_OUTLINE_R SELECT_OUTLINE_G SELECT_OUTLINE_B LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I ATM_NOON_R ATM_NOON_G ATM_NOON_B ATM_NOON_I LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I ATM_MORNING_R ATM_MORNING_G ATM_MORNING_B ATM_MORNING_I LIGHT_NIGHT_R LIGHT_NIGHT_G LIGHT_NIGHT_B LIGHT_NIGHT_I ATM_NIGHT_R ATM_NIGHT_G ATM_NIGHT_B ATM_NIGHT_I LIGHT_RAIN_R LIGHT_RAIN_G LIGHT_RAIN_B LIGHT_RAIN_I ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I LIGHT_NETHER_R LIGHT_NETHER_G LIGHT_NETHER_B LIGHT_NETHER_I ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I LIGHT_END_R LIGHT_END_G LIGHT_END_B LIGHT_END_I ATM_END_R ATM_END_G ATM_END_B ATM_END_I WORLD_OUTLINE_I AMBIENT_MULT GENERATED_NORMAL_MULT COATED_TEXTURE_MULT LIGHTSHAFT_DAY_I LIGHTSHAFT_NIGHT_I LIGHTSHAFT_RAIN_I WATERCOLOR_R WATERCOLOR_G WATERCOLOR_B WATER_FOAM_I WATER_ALPHA_MULT WATER_FOG_MULT UNDERWATERCOLOR_R UNDERWATERCOLOR_G UNDERWATERCOLOR_B GLOWING_ORE_MULT SSAO_I VANILLAAO_I CHROMA_ABERRATION XLIGHT_R XLIGHT_G XLIGHT_B NIGHT_NEBULA_I WEATHER_TEX_OPACITY NETHER_STORM_LOWER_ALT NETHER_STORM_HEIGHT NETHER_STORM_I CLOUD_UNBOUND_AMOUNT CLOUD_UNBOUND_SIZE_MULT CLOUD_UNBOUND_RAIN_ADD CLOUD_SPEED_MULT WB_DOF_I WB_DOF_FOCUS WB_DB_DAY_I WB_DB_NIGHT_I WB_DB_RAIN_I WB_DB_WATER_I WB_DB_NETHER_I WB_DB_END_I WAVING_SPEED WAVING_I MOON_PHASE_FULL MOON_PHASE_PARTIAL MOON_PHASE_DARK LENSFLARE_I SHADOW_SMOOTHING BLOCKLIGHT_FLICKERING NETHER_VIEW_LIMIT CLOUD_R CLOUD_G CLOUD_B WAVING_I_RAIN_MULT COLORED_LIGHT_FOG_I XLIGHT_I COLORED_LIGHT_SATURATION PIXEL_SCALE TM_DARK_DESATURATION TM_WHITE_PATH NIGHT_STAR_AMOUNT FXAA_TAA_INTERACTION FXAA_STRENGTH LIGHTSHAFT_SUNSET_SATURATION XLIGHT_CURVE RT_GI_STRENGTH RT_GI_RADIUS # Special Define Handling # Needed to disable colored lighting related code in shaders.properties From f364113e3acdf66cda49a16ba9f6ad67642ec841 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 20:25:26 +0000 Subject: [PATCH 3/4] Address code review: improve naming, add comments for magic numbers Co-authored-by: Noa3 <8495084+Noa3@users.noreply.github.com> --- shaders/lib/lighting/screenSpaceGI.glsl | 2 +- shaders/lib/lighting/shadowSampling.glsl | 2 +- shaders/program/deferred1.glsl | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/shaders/lib/lighting/screenSpaceGI.glsl b/shaders/lib/lighting/screenSpaceGI.glsl index 7d21e619..52846507 100644 --- a/shaders/lib/lighting/screenSpaceGI.glsl +++ b/shaders/lib/lighting/screenSpaceGI.glsl @@ -28,7 +28,7 @@ float DoScreenSpaceGlobalIllumination( ) { giColor = vec3(0.0); - if (z0 < 0.56 || z0 > 0.9999) return 0.0; + if (z0 < 0.56 || z0 > 0.9999) return 0.0; // 0.56 = hand/entity depth cutoff used throughout the pack #if RT_SUNLIGHT_QUALITY == 1 const int samples = 2; diff --git a/shaders/lib/lighting/shadowSampling.glsl b/shaders/lib/lighting/shadowSampling.glsl index e8dcdc95..0607178b 100644 --- a/shaders/lib/lighting/shadowSampling.glsl +++ b/shaders/lib/lighting/shadowSampling.glsl @@ -1,6 +1,6 @@ vec3 GetShadowPos(vec3 playerPos) { vec3 shadowPos = PlayerToShadow(playerPos); - float distb = sqrt(shadowPos.x * shadowPos.x + shadowPos.y * shadowPos.y); + float distb = length(shadowPos.xy); float distortFactor = distb * shadowMapBias + (1.0 - shadowMapBias); shadowPos.xy /= distortFactor; shadowPos.z *= 0.2; diff --git a/shaders/program/deferred1.glsl b/shaders/program/deferred1.glsl index 5d4a1449..84f6611c 100644 --- a/shaders/program/deferred1.glsl +++ b/shaders/program/deferred1.glsl @@ -232,15 +232,16 @@ void main() { #else float linearZ0SSGI = linearZ0; #endif - vec3 ssgiNormal = texelFetch(colortex4, texelCoord, 0).rgb; - ssgiNormal = mat3(gbufferModelView) * ssgiNormal; + vec3 ssgiWorldNormal = texelFetch(colortex4, texelCoord, 0).rgb; + vec3 ssgiViewNormal = mat3(gbufferModelView) * ssgiWorldNormal; vec3 giColor; float giHit = DoScreenSpaceGlobalIllumination( - viewPos.xyz, ssgiNormal, z0, linearZ0SSGI, dither, giColor + viewPos.xyz, ssgiViewNormal, z0, linearZ0SSGI, dither, giColor ); if (giHit > 0.0) { + #define SSGI_INTENSITY_SCALE 0.15 float giStrength = RT_GI_STRENGTH * 0.01; - color.rgb += giColor * giStrength * 0.15; + color.rgb += giColor * giStrength * SSGI_INTENSITY_SCALE; } #endif From 964efed0bc1767ce1a8a08762c433b1b0277acc1 Mon Sep 17 00:00:00 2001 From: Noa3 Date: Fri, 13 Feb 2026 22:31:37 +0100 Subject: [PATCH 4/4] InitioalNoaBranch --- shaders/lang/en_US.lang | 16 ++++ shaders/lib/common.glsl | 8 ++ shaders/lib/lighting/screenSpaceGI.glsl | 95 ++++++++++++++++++++++++ shaders/lib/lighting/shadowSampling.glsl | 2 +- shaders/program/deferred1.glsl | 24 ++++++ shaders/shaders.properties | 19 ++--- 6 files changed, 154 insertions(+), 10 deletions(-) create mode 100644 shaders/lib/lighting/screenSpaceGI.glsl diff --git a/shaders/lang/en_US.lang b/shaders/lang/en_US.lang index fe044213..91e06b7b 100644 --- a/shaders/lang/en_US.lang +++ b/shaders/lang/en_US.lang @@ -310,6 +310,22 @@ option.VANILLAAO_I=Edge Shadow Intensity (Vanilla) option.VANILLAAO_I.comment=Determines the strength of Minecraft's ambient occlusion which adds extra ambient shadowing to the edges of the scene. value.VANILLAAO_I.0=OFF +screen.RT_LIGHTING_SETTINGS=Ray-Traced Lighting §c[-]§r +screen.RT_LIGHTING_SETTINGS.comment=Settings for screen-space ray-traced indirect lighting (SSGI). Approximates path-traced global illumination by tracing rays in screen space to gather indirect light bounces from nearby surfaces. §c[-]§r These settings can significantly impact performance. + +option.RT_SUNLIGHT_TRACING=SSGI Quality +option.RT_SUNLIGHT_TRACING.comment=Enables Screen-Space Global Illumination, a path tracing approximation that adds indirect diffuse lighting bounces using screen-space ray marching. Higher quality uses more rays and steps for smoother, more accurate results. §c[-]§r This effect can impact performance, especially at higher quality levels. +value.RT_SUNLIGHT_TRACING.0=§aOFF +value.RT_SUNLIGHT_TRACING.1=§eLow +value.RT_SUNLIGHT_TRACING.2=§cMedium +value.RT_SUNLIGHT_TRACING.3=§4§lHigh + +option.RT_GI_STRENGTH=SSGI Strength +option.RT_GI_STRENGTH.comment=Adjusts the intensity of the screen-space global illumination effect. Higher values produce more visible indirect light bounces. + +option.RT_GI_RADIUS=SSGI Radius +option.RT_GI_RADIUS.comment=Controls how far rays are traced for indirect lighting. Larger radii capture light bouncing from more distant surfaces but may introduce noise. + option.BORDER_FOG=Border Fog option.BORDER_FOG.comment=Intense fog on the edges of the loaded world to hide chunk borders. §e[*]§r It's recommended to disable Border Fog when playing with less than 8 chunks of render distance. diff --git a/shaders/lib/common.glsl b/shaders/lib/common.glsl index 4569a0f1..c9ca011a 100644 --- a/shaders/lib/common.glsl +++ b/shaders/lib/common.glsl @@ -85,6 +85,10 @@ #define SSAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] #define VANILLAAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define RT_SUNLIGHT_TRACING 0 //[0 1 2 3] + #define RT_GI_STRENGTH 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + #define RT_GI_RADIUS 3.0 //[1.0 1.5 2.0 2.5 3.0 3.5 4.0 5.0 6.0 8.0] + #define AURORA_STYLE_DEFINE -1 //[-1 0 1 2] #define AURORA_CONDITION 3 //[0 1 2 3 4] #define NIGHT_NEBULAE -1 //[-1 1] @@ -485,6 +489,10 @@ #else #define SSAO_QUALI 0 #endif + #if RT_SUNLIGHT_TRACING > 0 + #define RT_SUNLIGHT_QUALITY RT_SUNLIGHT_TRACING + #define SSGI_ENABLED + #endif #if LIGHTSHAFT_BEHAVIOUR > 0 #define LIGHTSHAFT_QUALI LIGHTSHAFT_QUALI_DEFINE #else diff --git a/shaders/lib/lighting/screenSpaceGI.glsl b/shaders/lib/lighting/screenSpaceGI.glsl new file mode 100644 index 00000000..52846507 --- /dev/null +++ b/shaders/lib/lighting/screenSpaceGI.glsl @@ -0,0 +1,95 @@ +/* + Screen-Space Global Illumination (SSGI) / Ray-Traced Indirect Lighting + Approximates path-traced indirect diffuse lighting using screen-space ray marching. + Traces rays from each fragment in random hemisphere directions to gather + indirect light bounces from nearby surfaces visible on screen. +*/ + +vec3 CosWeightedHemisphereDir(vec3 normal, float xi1, float xi2) { + float r = sqrt(xi1); + float phi = 6.28318530718 * xi2; + + vec3 sampleDir = vec3( + r * cos(phi), + r * sin(phi), + sqrt(max(1.0 - xi1, 0.0)) + ); + + vec3 up = abs(normal.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, normal)); + vec3 bitangent = cross(normal, tangent); + + return tangent * sampleDir.x + bitangent * sampleDir.y + normal * sampleDir.z; +} + +float DoScreenSpaceGlobalIllumination( + vec3 viewPos, vec3 normalM, float z0, float linearZ0, float dither, + out vec3 giColor +) { + giColor = vec3(0.0); + + if (z0 < 0.56 || z0 > 0.9999) return 0.0; // 0.56 = hand/entity depth cutoff used throughout the pack + + #if RT_SUNLIGHT_QUALITY == 1 + const int samples = 2; + const int steps = 6; + #elif RT_SUNLIGHT_QUALITY == 2 + const int samples = 3; + const int steps = 8; + #else + const int samples = 4; + const int steps = 12; + #endif + + float radius = RT_GI_RADIUS; + float invSteps = 1.0 / float(steps); + float thicknessThreshold = radius * 0.15 * invSteps; + float totalWeight = 0.0; + vec3 totalGI = vec3(0.0); + + for (int i = 0; i < samples; i++) { + float xi1 = fract(dither + float(i) * 0.618033988); + float xi2 = fract(dither * 1.414 + float(i) * 0.381966); + + vec3 sampleDir = CosWeightedHemisphereDir(normalM, xi1, xi2); + vec3 viewDir = mat3(gbufferModelView) * sampleDir; + float viewDirLen = length(viewDir); + if (viewDirLen < 0.001) continue; + viewDir /= viewDirLen; + + vec3 rayStep = viewDir * (radius * invSteps); + vec3 rayPos = viewPos + rayStep; + + for (int j = 1; j <= steps; j++) { + vec4 projPos = gbufferProjection * vec4(rayPos, 1.0); + vec3 screenPos = projPos.xyz / projPos.w * 0.5 + 0.5; + + if (clamp(screenPos.xy, vec2(0.0), vec2(1.0)) != screenPos.xy) break; + + float sampleDepth = texelFetch(depthtex0, ivec2(screenPos.xy * vec2(viewWidth, viewHeight)), 0).r; + float sampleLinear = (2.0 * near) / (far + near - sampleDepth * farMinusNear); + float rayLinear = (2.0 * near) / (far + near - screenPos.z * farMinusNear); + + float depthDiff = rayLinear - sampleLinear; + + if (depthDiff > 0.0 && depthDiff < thicknessThreshold) { + vec3 hitColor = texelFetch(colortex0, ivec2(screenPos.xy * vec2(viewWidth, viewHeight)), 0).rgb; + float dist = float(j) * invSteps; + float falloff = 1.0 - dist * dist; + totalGI += hitColor * falloff; + totalWeight += falloff; + break; + } + + rayPos += rayStep; + } + } + + if (totalWeight > 0.0) { + giColor = totalGI / totalWeight; + giColor = min(giColor, vec3(2.0)); + return 1.0; + } + + return 0.0; +} diff --git a/shaders/lib/lighting/shadowSampling.glsl b/shaders/lib/lighting/shadowSampling.glsl index e8dcdc95..0607178b 100644 --- a/shaders/lib/lighting/shadowSampling.glsl +++ b/shaders/lib/lighting/shadowSampling.glsl @@ -1,6 +1,6 @@ vec3 GetShadowPos(vec3 playerPos) { vec3 shadowPos = PlayerToShadow(playerPos); - float distb = sqrt(shadowPos.x * shadowPos.x + shadowPos.y * shadowPos.y); + float distb = length(shadowPos.xy); float distortFactor = distb * shadowMapBias + (1.0 - shadowMapBias); shadowPos.xy /= distortFactor; shadowPos.z *= 0.2; diff --git a/shaders/program/deferred1.glsl b/shaders/program/deferred1.glsl index 402ae645..84f6611c 100644 --- a/shaders/program/deferred1.glsl +++ b/shaders/program/deferred1.glsl @@ -144,6 +144,10 @@ float GetLinearDepth(float depth) { #include "/lib/misc/distantLightBokeh.glsl" #endif +#ifdef SSGI_ENABLED + #include "/lib/lighting/screenSpaceGI.glsl" +#endif + //Program// void main() { vec4 color = vec4(texelFetch(colortex0, texelCoord, 0).rgb, 1.0); @@ -191,6 +195,7 @@ void main() { #if SSAO_QUALI > 0 || defined WORLD_OUTLINE float linearZ0 = GetLinearDepth(z0); + #define SSGI_LINEAR_Z0_DEFINED #endif #if SSAO_QUALI > 0 @@ -221,6 +226,25 @@ void main() { color.rgb *= ssao; + #ifdef SSGI_ENABLED + #ifndef SSGI_LINEAR_Z0_DEFINED + float linearZ0SSGI = GetLinearDepth(z0); + #else + float linearZ0SSGI = linearZ0; + #endif + vec3 ssgiWorldNormal = texelFetch(colortex4, texelCoord, 0).rgb; + vec3 ssgiViewNormal = mat3(gbufferModelView) * ssgiWorldNormal; + vec3 giColor; + float giHit = DoScreenSpaceGlobalIllumination( + viewPos.xyz, ssgiViewNormal, z0, linearZ0SSGI, dither, giColor + ); + if (giHit > 0.0) { + #define SSGI_INTENSITY_SCALE 0.15 + float giStrength = RT_GI_STRENGTH * 0.01; + color.rgb += giColor * giStrength * SSGI_INTENSITY_SCALE; + } + #endif + #ifdef PBR_REFLECTIONS vec3 texture4 = texelFetch(colortex4, texelCoord, 0).rgb; normalM = mat3(gbufferModelView) * texture4; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 52baacd3..4f900f14 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,11 +1,11 @@ # Profiles - profile.POTATO = SHADOW_QUALITY=-1 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.VERYLOW = SHADOW_QUALITY=0 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.LOW = SHADOW_QUALITY=0 shadowDistance=96.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.MEDIUM = SHADOW_QUALITY=1 shadowDistance=128.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=1 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 - profile.HIGH = SHADOW_QUALITY=2 shadowDistance=192.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 - profile.VERYHIGH = SHADOW_QUALITY=3 shadowDistance=224.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=256 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 - profile.ULTRA = SHADOW_QUALITY=4 shadowDistance=256.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=3 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=512 WORLD_SPACE_REFLECTIONS=1 ENTITY_SHADOW=1 + profile.POTATO = SHADOW_QUALITY=-1 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.VERYLOW = SHADOW_QUALITY=0 shadowDistance=64.0 WATER_REFLECT_QUALITY=1 BLOCK_REFLECT_QUALITY=0 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=0 CLOUD_QUALITY=1 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.LOW = SHADOW_QUALITY=0 shadowDistance=96.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=0 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=-1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.MEDIUM = SHADOW_QUALITY=1 shadowDistance=128.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=1 LIGHTSHAFT_QUALI_DEFINE=1 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=-1 RT_SUNLIGHT_TRACING=0 + profile.HIGH = SHADOW_QUALITY=2 shadowDistance=192.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=2 CLOUD_QUALITY=2 ANISOTROPIC_FILTER=0 COLORED_LIGHTING=0 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=0 + profile.VERYHIGH = SHADOW_QUALITY=3 shadowDistance=224.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=2 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=256 WORLD_SPACE_REFLECTIONS=-1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=1 + profile.ULTRA = SHADOW_QUALITY=4 shadowDistance=256.0 WATER_REFLECT_QUALITY=2 BLOCK_REFLECT_QUALITY=3 LIGHTSHAFT_QUALI_DEFINE=3 SSAO_QUALI_DEFINE=2 FXAA_DEFINE=1 DETAIL_QUALITY=3 CLOUD_QUALITY=3 ANISOTROPIC_FILTER=8 COLORED_LIGHTING=512 WORLD_SPACE_REFLECTIONS=1 ENTITY_SHADOW=1 RT_SUNLIGHT_TRACING=2 # Screen Setup screen= [INFORMATION] SHADER_STYLE RP_MODE [PERFORMANCE_SETTINGS] [CAMERA_SETTINGS] [LIGHTING_SETTINGS] [ATMOSPHERE_SETTINGS] [MATERIAL_SETTINGS] [OTHER_SETTINGS] @@ -46,7 +46,8 @@ screen.RAIN_ATM_MULTS= ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I screen.NETHER_ATM_MULTS= ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I screen.END_ATM_MULTS= ATM_END_R ATM_END_G ATM_END_B ATM_END_I - screen.LIGHTING_SETTINGS= [LIGHT_COLOR_SETTINGS] AMBIENT_MULT [BLOCKLIGHT_SETTINGS] SHADOW_SMOOTHING [PIXELATED_LIGHTING_SETTINGS] CAVE_LIGHTING SSAO_I VANILLAAO_I PLAYER_SHADOW + screen.LIGHTING_SETTINGS= [LIGHT_COLOR_SETTINGS] AMBIENT_MULT [BLOCKLIGHT_SETTINGS] SHADOW_SMOOTHING [PIXELATED_LIGHTING_SETTINGS] CAVE_LIGHTING SSAO_I VANILLAAO_I PLAYER_SHADOW [RT_LIGHTING_SETTINGS] + screen.RT_LIGHTING_SETTINGS= RT_SUNLIGHT_TRACING RT_GI_STRENGTH RT_GI_RADIUS screen.LIGHT_COLOR_SETTINGS= LIGHT_COLOR_MULTS [MORNING_LIGHT_MULTS] [NOON_LIGHT_MULTS] [NIGHT_LIGHT_MULTS] [RAIN_LIGHT_MULTS] [NETHER_LIGHT_MULTS] [END_LIGHT_MULTS] screen.MORNING_LIGHT_MULTS= LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I screen.NOON_LIGHT_MULTS= LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I @@ -63,7 +64,7 @@ screen.ACT_FEATURES_SETTINGS= COLORED_LIGHT_SATURATION COLORED_LIGHT_FOG COLORED_LIGHT_FOG_I WORLD_SPACE_REFLECTIONS WORLD_SPACE_REF_MODE WORLD_SPACE_PLAYER_REF CONNECTED_GLASS_EFFECT PORTAL_EDGE_EFFECT PUDDLE_VOXELIZATION COLORED_CANDLE_LIGHT # Set Sliders - sliders=shadowDistance BLOOM_STRENGTH CLOUD_ALT1 CLOUD_ALT2 TM_EXPOSURE TM_CONTRAST T_SATURATION T_VIBRANCE MOTION_BLURRING_STRENGTH NORMAL_MAP_STRENGTH CUSTOM_EMISSION_INTENSITY IMAGE_SHARPENING SUN_ANGLE ATM_FOG_MULT ATM_FOG_DISTANCE ATM_FOG_ALTITUDE CAVE_LIGHTING GR_RR GR_RG GR_RB GR_RC GR_GR GR_GG GR_GB GR_GC GR_BR GR_BG GR_BB GR_BC POM_DEPTH POM_QUALITY POM_DISTANCE WATER_BUMPINESS WATER_BUMP_SMALL WATER_BUMP_MED WATER_BUMP_BIG WATER_SPEED_MULT WATER_SIZE_MULT WATER_REFRACTION_INTENSITY SELECT_OUTLINE_I SELECT_OUTLINE_R SELECT_OUTLINE_G SELECT_OUTLINE_B LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I ATM_NOON_R ATM_NOON_G ATM_NOON_B ATM_NOON_I LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I ATM_MORNING_R ATM_MORNING_G ATM_MORNING_B ATM_MORNING_I LIGHT_NIGHT_R LIGHT_NIGHT_G LIGHT_NIGHT_B LIGHT_NIGHT_I ATM_NIGHT_R ATM_NIGHT_G ATM_NIGHT_B ATM_NIGHT_I LIGHT_RAIN_R LIGHT_RAIN_G LIGHT_RAIN_B LIGHT_RAIN_I ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I LIGHT_NETHER_R LIGHT_NETHER_G LIGHT_NETHER_B LIGHT_NETHER_I ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I LIGHT_END_R LIGHT_END_G LIGHT_END_B LIGHT_END_I ATM_END_R ATM_END_G ATM_END_B ATM_END_I WORLD_OUTLINE_I AMBIENT_MULT GENERATED_NORMAL_MULT COATED_TEXTURE_MULT LIGHTSHAFT_DAY_I LIGHTSHAFT_NIGHT_I LIGHTSHAFT_RAIN_I WATERCOLOR_R WATERCOLOR_G WATERCOLOR_B WATER_FOAM_I WATER_ALPHA_MULT WATER_FOG_MULT UNDERWATERCOLOR_R UNDERWATERCOLOR_G UNDERWATERCOLOR_B GLOWING_ORE_MULT SSAO_I VANILLAAO_I CHROMA_ABERRATION XLIGHT_R XLIGHT_G XLIGHT_B NIGHT_NEBULA_I WEATHER_TEX_OPACITY NETHER_STORM_LOWER_ALT NETHER_STORM_HEIGHT NETHER_STORM_I CLOUD_UNBOUND_AMOUNT CLOUD_UNBOUND_SIZE_MULT CLOUD_UNBOUND_RAIN_ADD CLOUD_SPEED_MULT WB_DOF_I WB_DOF_FOCUS WB_DB_DAY_I WB_DB_NIGHT_I WB_DB_RAIN_I WB_DB_WATER_I WB_DB_NETHER_I WB_DB_END_I WAVING_SPEED WAVING_I MOON_PHASE_FULL MOON_PHASE_PARTIAL MOON_PHASE_DARK LENSFLARE_I SHADOW_SMOOTHING BLOCKLIGHT_FLICKERING NETHER_VIEW_LIMIT CLOUD_R CLOUD_G CLOUD_B WAVING_I_RAIN_MULT COLORED_LIGHT_FOG_I XLIGHT_I COLORED_LIGHT_SATURATION PIXEL_SCALE TM_DARK_DESATURATION TM_WHITE_PATH NIGHT_STAR_AMOUNT FXAA_TAA_INTERACTION FXAA_STRENGTH LIGHTSHAFT_SUNSET_SATURATION XLIGHT_CURVE + sliders=shadowDistance BLOOM_STRENGTH CLOUD_ALT1 CLOUD_ALT2 TM_EXPOSURE TM_CONTRAST T_SATURATION T_VIBRANCE MOTION_BLURRING_STRENGTH NORMAL_MAP_STRENGTH CUSTOM_EMISSION_INTENSITY IMAGE_SHARPENING SUN_ANGLE ATM_FOG_MULT ATM_FOG_DISTANCE ATM_FOG_ALTITUDE CAVE_LIGHTING GR_RR GR_RG GR_RB GR_RC GR_GR GR_GG GR_GB GR_GC GR_BR GR_BG GR_BB GR_BC POM_DEPTH POM_QUALITY POM_DISTANCE WATER_BUMPINESS WATER_BUMP_SMALL WATER_BUMP_MED WATER_BUMP_BIG WATER_SPEED_MULT WATER_SIZE_MULT WATER_REFRACTION_INTENSITY SELECT_OUTLINE_I SELECT_OUTLINE_R SELECT_OUTLINE_G SELECT_OUTLINE_B LIGHT_NOON_R LIGHT_NOON_G LIGHT_NOON_B LIGHT_NOON_I ATM_NOON_R ATM_NOON_G ATM_NOON_B ATM_NOON_I LIGHT_MORNING_R LIGHT_MORNING_G LIGHT_MORNING_B LIGHT_MORNING_I ATM_MORNING_R ATM_MORNING_G ATM_MORNING_B ATM_MORNING_I LIGHT_NIGHT_R LIGHT_NIGHT_G LIGHT_NIGHT_B LIGHT_NIGHT_I ATM_NIGHT_R ATM_NIGHT_G ATM_NIGHT_B ATM_NIGHT_I LIGHT_RAIN_R LIGHT_RAIN_G LIGHT_RAIN_B LIGHT_RAIN_I ATM_RAIN_R ATM_RAIN_G ATM_RAIN_B ATM_RAIN_I LIGHT_NETHER_R LIGHT_NETHER_G LIGHT_NETHER_B LIGHT_NETHER_I ATM_NETHER_R ATM_NETHER_G ATM_NETHER_B ATM_NETHER_I LIGHT_END_R LIGHT_END_G LIGHT_END_B LIGHT_END_I ATM_END_R ATM_END_G ATM_END_B ATM_END_I WORLD_OUTLINE_I AMBIENT_MULT GENERATED_NORMAL_MULT COATED_TEXTURE_MULT LIGHTSHAFT_DAY_I LIGHTSHAFT_NIGHT_I LIGHTSHAFT_RAIN_I WATERCOLOR_R WATERCOLOR_G WATERCOLOR_B WATER_FOAM_I WATER_ALPHA_MULT WATER_FOG_MULT UNDERWATERCOLOR_R UNDERWATERCOLOR_G UNDERWATERCOLOR_B GLOWING_ORE_MULT SSAO_I VANILLAAO_I CHROMA_ABERRATION XLIGHT_R XLIGHT_G XLIGHT_B NIGHT_NEBULA_I WEATHER_TEX_OPACITY NETHER_STORM_LOWER_ALT NETHER_STORM_HEIGHT NETHER_STORM_I CLOUD_UNBOUND_AMOUNT CLOUD_UNBOUND_SIZE_MULT CLOUD_UNBOUND_RAIN_ADD CLOUD_SPEED_MULT WB_DOF_I WB_DOF_FOCUS WB_DB_DAY_I WB_DB_NIGHT_I WB_DB_RAIN_I WB_DB_WATER_I WB_DB_NETHER_I WB_DB_END_I WAVING_SPEED WAVING_I MOON_PHASE_FULL MOON_PHASE_PARTIAL MOON_PHASE_DARK LENSFLARE_I SHADOW_SMOOTHING BLOCKLIGHT_FLICKERING NETHER_VIEW_LIMIT CLOUD_R CLOUD_G CLOUD_B WAVING_I_RAIN_MULT COLORED_LIGHT_FOG_I XLIGHT_I COLORED_LIGHT_SATURATION PIXEL_SCALE TM_DARK_DESATURATION TM_WHITE_PATH NIGHT_STAR_AMOUNT FXAA_TAA_INTERACTION FXAA_STRENGTH LIGHTSHAFT_SUNSET_SATURATION XLIGHT_CURVE RT_GI_STRENGTH RT_GI_RADIUS # Special Define Handling # Needed to disable colored lighting related code in shaders.properties