From 25802c29d278dd1e289f0251bafd7f9351e3e36a Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Sat, 13 Dec 2025 21:10:37 +0100 Subject: [PATCH] Add chunk fade in for 1.21.11, add BoP trims to emissive trims, some fixes and lots of internal restructuring, fix https://github.com/Merlin1809/Eclipse-Shader/issues/54 --- shaders/dimensions/DH_translucent.fsh | 10 +- shaders/dimensions/DH_translucent.vsh | 23 +- shaders/dimensions/all_particles.fsh | 28 +- shaders/dimensions/all_particles.vsh | 12 +- shaders/dimensions/all_solid.fsh | 84 +++-- shaders/dimensions/all_solid.gsh | 17 + shaders/dimensions/all_solid.tcs | 15 +- shaders/dimensions/all_solid.tes | 12 + shaders/dimensions/all_solid.vsh | 49 +-- shaders/dimensions/all_translucent.fsh | 46 ++- shaders/dimensions/all_translucent.vsh | 62 ++-- shaders/dimensions/all_vanilla_emissives.fsh | 2 +- shaders/dimensions/begin.csh | 311 ++++++++++++++++- shaders/dimensions/composite.fsh | 10 +- shaders/dimensions/composite.vsh | 4 +- shaders/dimensions/composite1.fsh | 33 +- shaders/dimensions/composite1.vsh | 27 +- shaders/dimensions/composite10.fsh | 16 +- shaders/dimensions/composite10.vsh | 10 - shaders/dimensions/composite2.fsh | 54 ++- shaders/dimensions/composite2.vsh | 41 +-- shaders/dimensions/composite3.fsh | 18 +- shaders/dimensions/composite3.vsh | 15 +- shaders/dimensions/composite5.fsh | 4 +- shaders/dimensions/composite7.vsh | 2 +- shaders/dimensions/composite9.vsh | 1 - shaders/dimensions/deferred.csh | 82 +++++ shaders/dimensions/deferred.vsh | 326 ------------------ shaders/dimensions/final.fsh | 11 +- shaders/dimensions/prepare.csh | 8 +- .../dimensions/{deferred.fsh => prepare4.fsh} | 132 +------ shaders/dimensions/prepare4.vsh | 9 + shaders/dimensions/voxy.json | 34 +- shaders/dimensions/voxy_solid.glsl | 31 +- shaders/dimensions/voxy_translucent.glsl | 21 +- shaders/entity.properties | 9 +- shaders/item.properties | 2 +- shaders/lang/en_us.lang | 9 +- shaders/lang/zh_cn.lang | 3 +- shaders/lib/ROBOBO_sky.glsl | 2 +- shaders/lib/SSBOs.glsl | 34 +- shaders/lib/bokeh.glsl | 2 +- shaders/lib/end_fog.glsl | 2 +- shaders/lib/entities.glsl | 3 +- shaders/lib/nether_fog.glsl | 2 +- shaders/lib/overworld_fog.glsl | 20 +- shaders/lib/scene_controller.glsl | 50 +-- shaders/lib/settings.glsl | 26 +- shaders/lib/specular.glsl | 88 ++--- shaders/lib/volumetricClouds.glsl | 36 +- shaders/lib/voxel_write.glsl | 2 +- shaders/shaders.properties | 36 +- shaders/world-1/begin.csh | 5 + shaders/world-1/deferred.csh | 5 + shaders/world-1/prepare4.fsh | 2 +- shaders/world-1/prepare4.vsh | 2 +- shaders/world0/clrwl_shadow.vsh | 12 +- shaders/world0/deferred.csh | 5 + shaders/world0/prepare4.fsh | 2 +- shaders/world0/prepare4.vsh | 2 +- shaders/world0/shadow.fsh | 8 +- shaders/world0/shadow.vsh | 12 +- shaders/world0_with_aether_flag/deferred.csh | 5 + shaders/world0_with_aether_flag/prepare4.fsh | 2 +- shaders/world0_with_aether_flag/prepare4.vsh | 2 +- shaders/world0_with_aether_flag/shadow.fsh | 6 +- shaders/world0_with_aether_flag/shadow.vsh | 12 +- .../deferred.csh | 5 + .../prepare4.fsh | 2 +- .../prepare4.vsh | 2 +- .../shadow.fsh | 6 +- .../shadow.vsh | 12 +- shaders/world1/composite11.vsh | 2 +- shaders/world1/deferred.csh | 5 + shaders/world1/gbuffers_weather.fsh | 1 - shaders/world1/prepare4.fsh | 2 +- shaders/world1/prepare4.vsh | 2 +- shaders/world1/shadow.fsh | 6 +- 78 files changed, 1005 insertions(+), 1008 deletions(-) create mode 100644 shaders/dimensions/deferred.csh delete mode 100644 shaders/dimensions/deferred.vsh rename shaders/dimensions/{deferred.fsh => prepare4.fsh} (67%) create mode 100644 shaders/dimensions/prepare4.vsh create mode 100644 shaders/world-1/begin.csh create mode 100644 shaders/world-1/deferred.csh create mode 100644 shaders/world0/deferred.csh create mode 100644 shaders/world0_with_aether_flag/deferred.csh create mode 100644 shaders/world0_with_twilight_forest_flag/deferred.csh create mode 100644 shaders/world1/deferred.csh diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index aae0abb..ba7f45b 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -1,8 +1,6 @@ #include "/lib/settings.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #include "/lib/util.glsl" #include "/lib/res_params.glsl" @@ -68,8 +66,6 @@ uniform int frameCounter; // uniform sampler2D colortex4; -flat varying vec3 averageSkyCol_Clouds; -flat varying vec4 lightCol; flat varying vec3 WsunVec; flat varying vec3 WsunVec2; @@ -368,7 +364,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/2400.0; + vec3 DirectLightColor = lightSourceColorSSBO/2400.0; float NdotL = clamp(dot(worldSpaceNormals, WsunVec),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); @@ -406,7 +402,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/900.0 ; + vec3 AmbientLightColor = averageSkyCol_CloudsSSBO/900.0 ; vec3 indirectNormal = worldSpaceNormals.xyz / dot(abs(worldSpaceNormals.xyz), vec3(1.0)); float SkylightDir = clamp(indirectNormal.y*0.7+0.3,0.0,1.0); diff --git a/shaders/dimensions/DH_translucent.vsh b/shaders/dimensions/DH_translucent.vsh index 396188f..66da9cc 100644 --- a/shaders/dimensions/DH_translucent.vsh +++ b/shaders/dimensions/DH_translucent.vsh @@ -1,9 +1,7 @@ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" varying vec4 pos; varying vec4 gcolor; @@ -14,8 +12,6 @@ flat varying int isWater; uniform sampler2D colortex4; -flat varying vec3 averageSkyCol_Clouds; -flat varying vec4 lightCol; #ifdef OVERWORLD_SHADER #include "/lib/scene_controller.glsl" @@ -99,15 +95,6 @@ void main() { gcolor = gl_Color; lightmapCoords = gl_MultiTexCoord1.xy; - - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; - - averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - - #ifdef OVERWORLD_SHADER - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - #endif - #ifdef CUSTOM_MOON_ROTATION vec3 WmoonVec = customMoonVecSSBO; @@ -121,13 +108,13 @@ void main() { WsunVec = mix(WmoonVec, WsunVec, float(sunElevation > 1e-5)); WsunVec2 = mix(normalize(mat3(gbufferModelView)*WmoonVec), WsunVec2, float(sunElevation > 1e-5)); #else - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; + float lightSourceCheck = float(sunElevation > 1e-5)*2.0 - 1.0; #ifdef SMOOTH_SUN_ROTATION - WsunVec = lightCol.a * WsunVecSmooth; + WsunVec = lightSourceCheck * WsunVecSmooth; #else - WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); + WsunVec = lightSourceCheck * normalize(mat3(gbufferModelViewInverse) * sunPosition); #endif - WsunVec2 = lightCol.a * normalize(sunPosition); + WsunVec2 = lightSourceCheck * normalize(sunPosition); #endif #ifdef TAA_UPSCALING diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 30066c1..b27dc07 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -14,9 +14,7 @@ #include "/lib/settings.glsl" -#if defined CUSTOM_MOON_ROTATION || defined END_ISLAND_LIGHT - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" // #if defined END_SHADER || defined NETHER_SHADER // #undef IS_LPV_ENABLED @@ -42,9 +40,6 @@ varying vec4 color; #endif flat varying vec3 WsunVec; - - flat varying vec3 averageSkyCol_Clouds; - flat varying vec4 lightCol; #endif uniform int renderStage; @@ -402,7 +397,8 @@ void main() { vec2 tempOffset = offsets[framemod8]; vec3 viewPos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; - vec3 feetPlayerPos_normalized = normalize(feetPlayerPos); + vec3 worldPos = feetPlayerPos + cameraPosition; + // vec3 feetPlayerPos_normalized = normalize(feetPlayerPos); vec4 TEXTURE = texture2D(gtexture, lmtexcoord.xy)*color; @@ -421,13 +417,13 @@ void main() { #if defined Hand_Held_lights && !defined LPV_ENABLED #ifdef IS_IRIS - vec3 playerCamPos = cameraPosition - relativeEyePosition; + vec3 playerCamPos = relativeEyePosition; #else - vec3 playerCamPos = cameraPosition; + vec3 playerCamPos = vec3(0.0); #endif // lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); if(heldItemId > 999 || heldItemId2 > 999){ - float pointLight = clamp(1.0-(length((feetPlayerPos+cameraPosition)-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0); + float pointLight = clamp(1.0-(length(feetPlayerPos-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0); lightmap.x = mix(lightmap.x, 0.9, pointLight*pointLight); } @@ -464,8 +460,8 @@ void main() { if(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS; #ifdef OVERWORLD_SHADER - directLightColor = lightCol.rgb/2400.0; - AmbientLightColor = averageSkyCol_Clouds / 900.0; + directLightColor = lightSourceColorSSBO/2400.0; + AmbientLightColor = averageSkyCol_CloudsSSBO / 900.0; #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS directLightColor = luma(directLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); @@ -486,10 +482,10 @@ void main() { Shadows *= mix(LM_shadowMapFallback, 1.0, shadowMapFalloff2); - Shadows *= GetCloudShadow(feetPlayerPos+cameraPosition, WsunVec); + Shadows *= GetCloudShadow(worldPos, WsunVec); if(isEyeInWater == 1){ - float distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ; + float distanceFromWaterSurface = max(-(worldPos.y - waterEnteredAltitude),0.0) ; directLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * distanceFromWaterSurface); } Direct_lighting = directLightColor * Shadows; @@ -531,9 +527,9 @@ void main() { #if RAINBOW_SELECT_BOX > 0 #if RAINBOW_SELECT_BOX == 1 - float selectBoxHue = length(sin(mod(1.4*(feetPlayerPos+cameraPosition), 3.14159))); + float selectBoxHue = length(sin(mod(1.4*worldPos, 3.14159))); #else - float selectBoxHue = length(sin(mod(1.4*(feetPlayerPos+cameraPosition)+0.7*frameTimeCounter, 3.14159))); + float selectBoxHue = length(sin(mod(1.4*worldPos+0.7*frameTimeCounter, 3.14159))); #endif vec3 selectBoxColor = HsvToRgb(vec3(selectBoxHue, 1.0, 1.0)); diff --git a/shaders/dimensions/all_particles.vsh b/shaders/dimensions/all_particles.vsh index 88725fb..7cd0829 100644 --- a/shaders/dimensions/all_particles.vsh +++ b/shaders/dimensions/all_particles.vsh @@ -20,8 +20,6 @@ uniform sampler2D colortex4; #endif #ifdef OVERWORLD_SHADER - flat varying vec3 averageSkyCol_Clouds; - flat varying vec4 lightCol; flat varying vec3 WsunVec; #include "/lib/scene_controller.glsl" @@ -123,18 +121,12 @@ void main() { if(dot(color.rgb,vec3(0.33333)) < 0.00001) SELECTION_BOX = 1; #endif - #ifdef OVERWORLD_SHADER - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; - averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - + #ifdef OVERWORLD_SHADER #ifdef SMOOTH_SUN_ROTATION WsunVec = WsunVecSmooth; #else - WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); + WsunVec = float(sunElevation > 1e-5)*2.0 - 1.0 * normalize(mat3(gbufferModelViewInverse) * sunPosition); #endif - - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); #endif diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index 565f2b6..21d93eb 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -24,6 +24,10 @@ in DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -329,9 +333,9 @@ float getTrimEmission(vec3 Albedo) { return sqrt(hsv.z); } -#if defined HAND || (defined WORLD && !defined ENTITIES && !defined BLOCKENTITIES) - uniform float alphaTestRef; -#endif +// #if defined HAND || (defined WORLD && !defined ENTITIES && !defined BLOCKENTITIES) +// uniform float alphaTestRef; +// #endif //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -386,6 +390,7 @@ void main() { #endif float BN = blueNoise(); + float R2 = R2_dither(); vec2 tempOffset = offsets[framemod8]; @@ -481,7 +486,7 @@ void main() { #ifndef HAND #ifdef WORLD if(data_in.blockID == BLOCK_GROUND_WAVING_VERTICAL || data_in.blockID == BLOCK_GRASS_SHORT || data_in.blockID == BLOCK_GRASS_TALL_LOWER || data_in.blockID == BLOCK_GRASS_TALL_UPPER ) opaqueMasks = 0.60; - if(data_in.blockID == BLOCK_AIR_WAVING) opaqueMasks = 0.55; + else if(data_in.blockID == BLOCK_AIR_WAVING) opaqueMasks = 0.55; #endif #if defined ENTITIES @@ -492,7 +497,7 @@ void main() { #ifdef INCLUDE_UNLISTED_ENTITIES opaqueMasks = 0.45; #else - if(data_in.blockID == ENTITY_BOAT || data_in.blockID == ENTITY_SMALLSHIPS || data_in.blockID == ENTITY_SSS_MEDIUM || data_in.blockID == ENTITY_SSS_WEAK || data_in.blockID == ENTITY_PLAYER || data_in.blockID == ENTITY_CURRENT_PLAYER || data_in.blockID == 2468) opaqueMasks = 0.45; + if(data_in.blockID == ENTITY_SSS_NONE || data_in.blockID == ENTITY_BOAT || data_in.blockID == ENTITY_SMALLSHIPS || data_in.blockID == ENTITY_SSS_MEDIUM || data_in.blockID == ENTITY_SSS_WEAK || data_in.blockID == ENTITY_PLAYER || data_in.blockID == ENTITY_CURRENT_PLAYER) opaqueMasks = 0.45; #endif #endif @@ -548,19 +553,27 @@ void main() { float viewDist = length(playerpos); float ditherFade = smoothstep(0.98 * far, 1.03 * far, viewDist); - if(step(ditherFade, R2_dither()) == 0.0) discard; + if(step(ditherFade, R2) == 0.0) discard; #endif #if defined HAND || (defined WORLD && !defined ENTITIES && !defined BLOCKENTITIES) - if (Albedo.a < alphaTestRef) discard; + if (Albedo.a < 0.1) discard; + #endif + + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + #ifdef TAA + if(sqrt(data_in.chunkFade) < BN) discard; + #else + if(sqrt(data_in.chunkFade) < R2) discard; + #endif #endif #if (defined BLOCKENTITIES || defined ENTITIES || defined HAND) && !defined TRANSLUCENT_ENTITIES && defined TRANSLUCENT_ENTITIES_DITHER_FALLBACK - float entitiyAlbedo = clamp((Albedo.a - 0.1) * 10.0 / 9.0, 0.0, 1.0); + float entityAlbedo = clamp((Albedo.a - 0.1) * 10.0 / 9.0, 0.0, 1.0); #ifdef TAA - if(step(1.0-entitiyAlbedo, BN) == 0.0) discard; + if(entityAlbedo < BN) discard; #else - if(step(1.0-entitiyAlbedo, R2_dither()) == 0.0) discard; + if(entityAlbedo < R2) discard; #endif #endif @@ -749,19 +762,18 @@ void main() { /////// ----- SSS ON BLOCKS ----- /////// // strong - if ( - data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_SAPLING || data_in.blockID == BLOCK_AIR_WAVING + else if ( + data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_AIR_WAVING ) { SSSAMOUNT = 1.0; } - // medium - if ( + else if ( data_in.blockID == BLOCK_GROUND_WAVING || data_in.blockID == BLOCK_GROUND_WAVING_VERTICAL || data_in.blockID == BLOCK_GRASS_SHORT || data_in.blockID == BLOCK_GRASS_TALL_UPPER || data_in.blockID == BLOCK_GRASS_TALL_LOWER ) { SSSAMOUNT = 0.5; - } + } else if ( data_in.blockID == BLOCK_SSS_WEAK || data_in.blockID == BLOCK_SSS_WEAK_2 || data_in.blockID == BLOCK_GLOW_LICHEN || data_in.blockID == BLOCK_SNOW_LAYERS || data_in.blockID == BLOCK_CARPET || @@ -773,7 +785,7 @@ void main() { // low #ifdef MISC_BLOCK_SSS - if( + else if( data_in.blockID == BLOCK_SSS_WEIRD || data_in.blockID == BLOCK_GRASS ){ SSSAMOUNT = 0.5; @@ -782,14 +794,14 @@ void main() { #ifdef ENTITIES #ifdef MOB_SSS - /////// ----- SSS ON MOBS----- /////// - // strong - if(data_in.blockID == ENTITY_SSS_MEDIUM) SSSAMOUNT = 0.75; - - // medium - - // low - if(data_in.blockID == ENTITY_SSS_WEAK || data_in.blockID == ENTITY_PLAYER || data_in.blockID == ENTITY_CURRENT_PLAYER) SSSAMOUNT = 0.4; + /////// ----- SSS ON MOBS----- /////// + // strong + else if(data_in.blockID == ENTITY_SSS_MEDIUM) SSSAMOUNT = 0.75; + + // medium + + // low + else if(data_in.blockID == ENTITY_SSS_WEAK || data_in.blockID == ENTITY_PLAYER || data_in.blockID == ENTITY_CURRENT_PLAYER) SSSAMOUNT = 0.4; #endif #endif @@ -798,7 +810,7 @@ void main() { // strong // medium - if(data_in.blockID == BLOCK_SSS_WEAK_3) SSSAMOUNT = 0.4; + else if(data_in.blockID == BLOCK_SSS_WEAK_3) SSSAMOUNT = 0.4; // low @@ -819,24 +831,24 @@ void main() { // normal block lightsources if(data_in.blockID >= 100 && data_in.blockID < 300) EMISSIVE = 0.5; - if(data_in.blockID == 266 || data_in.blockID == 497) EMISSIVE = 0.2; // sculk stuff + else if(data_in.blockID == 266 || data_in.blockID == 497) EMISSIVE = 0.2; // sculk stuff - if(data_in.blockID == 195) EMISSIVE = 2.3; // glow lichen + else if(data_in.blockID == 195) EMISSIVE = 2.3; // glow lichen - if(data_in.blockID == 185) EMISSIVE = 1.5; // crying obsidian + else if(data_in.blockID == 185) EMISSIVE = 1.5; // crying obsidian - if(data_in.blockID == 105) EMISSIVE = 2.0; // brewing stand + else if(data_in.blockID == 105) EMISSIVE = 2.0; // brewing stand - if(data_in.blockID == 236) EMISSIVE = 1.0; // respawn anchor + else if(data_in.blockID == 236) EMISSIVE = 1.0; // respawn anchor - if(data_in.blockID == 101) EMISSIVE = 0.7; // large amethyst bud + else if(data_in.blockID == 101) EMISSIVE = 0.7; // large amethyst bud - if(data_in.blockID == 103) EMISSIVE = 1.0; // amethyst cluster + else if(data_in.blockID == 103) EMISSIVE = 1.0; // amethyst cluster - if(data_in.blockID == 244) EMISSIVE = 1.5; // soul fire + else if(data_in.blockID == 244) EMISSIVE = 1.5; // soul fire #if EMISSIVE_ORES > 0 - if(data_in.blockID == 502) { + else if(data_in.blockID == 502) { EMISSIVE = EMISSIVE_ORES_STRENGTH; #ifndef HARDCODED_EMISSIVES_APPROX @@ -905,13 +917,13 @@ void main() { #endif #if EMISSIVE_TYPE == 1 - EMISSIVE = clamp(EMISSIVE, 0.0, 1.0); + EMISSIVE = clamp(EMISSIVE, 0.0, 0.99); gl_FragData[1].a = EMISSIVE; #endif #if EMISSIVE_TYPE == 2 gl_FragData[1].a = SpecularTex.a; - EMISSIVE = clamp(EMISSIVE, 0.0, 1.0); + EMISSIVE = clamp(EMISSIVE, 0.0, 0.99); if(emissionCheck) gl_FragData[1].a = EMISSIVE; #endif diff --git a/shaders/dimensions/all_solid.gsh b/shaders/dimensions/all_solid.gsh index f46f559..7870a78 100644 --- a/shaders/dimensions/all_solid.gsh +++ b/shaders/dimensions/all_solid.gsh @@ -22,6 +22,10 @@ in DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -40,6 +44,10 @@ in DATA { out DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -176,6 +184,11 @@ void main() { gl_Position = vertex; data_out.color = data_in[i].color; + + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + data_out.chunkFade = data_in[i].chunkFade; + #endif + data_out.lmtexcoord = data_in[i].lmtexcoord; data_out.normalMat = data_in[i].normalMat; @@ -387,6 +400,10 @@ void main() { if (data_in[i].color.rgb == vec3(1.0)) data_out.color.rgb = vec3(0.22,0.32,0.11)*heightfade; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + data_out.chunkFade = data_in[i].chunkFade; + #endif + data_out.lmtexcoord = data_in[i].lmtexcoord; #ifdef MC_NORMAL_MAP diff --git a/shaders/dimensions/all_solid.tcs b/shaders/dimensions/all_solid.tcs index da485a7..211963b 100644 --- a/shaders/dimensions/all_solid.tcs +++ b/shaders/dimensions/all_solid.tcs @@ -6,11 +6,14 @@ in DATA { #if !defined ENTITIES && !defined HAND && defined SHADER_GRASS && !defined BLOCKENTITIES vec4 grassSideCheck; vec3 centerPosition; - int discardGrass; #endif vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -34,6 +37,10 @@ out DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -73,6 +80,10 @@ void main() { data_out[gl_InvocationID].texcoord = data_in[gl_InvocationID].texcoord; #endif + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + data_out[gl_InvocationID].chunkFade = data_in[gl_InvocationID].chunkFade; + #endif + #ifdef MC_NORMAL_MAP data_out[gl_InvocationID].tangent = data_in[gl_InvocationID].tangent; #endif @@ -148,7 +159,7 @@ void main() { } #if REPLACE_SHORT_GRASS > 0 - if(data_in[gl_InvocationID].discardGrass == 1){ + if(data_in[gl_InvocationID].blockID == -10){ gl_TessLevelOuter[0] = 0; gl_TessLevelOuter[1] = 0; gl_TessLevelOuter[2] = 0; diff --git a/shaders/dimensions/all_solid.tes b/shaders/dimensions/all_solid.tes index 7260c30..a418dd6 100644 --- a/shaders/dimensions/all_solid.tes +++ b/shaders/dimensions/all_solid.tes @@ -10,6 +10,10 @@ in DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -33,6 +37,10 @@ out DATA { vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -64,6 +72,10 @@ void main() { data_out.texcoord = calcTessellation(data_in[0].texcoord, data_in[1].texcoord, data_in[2].texcoord); #endif + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + data_out.chunkFade = calcTessellation(data_in[0].chunkFade, data_in[1].chunkFade, data_in[2].chunkFade); + #endif + #ifdef MC_NORMAL_MAP data_out.tangent = calcTessellation(data_in[0].tangent, data_in[1].tangent, data_in[2].tangent); #endif diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 115d450..dd8a800 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -33,11 +33,14 @@ out DATA { #if !defined ENTITIES && !defined HAND && defined SHADER_GRASS && !defined BLOCKENTITIES vec4 grassSideCheck; vec3 centerPosition; - int discardGrass; #endif vec4 color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + float chunkFade; + #endif + vec4 lmtexcoord; vec3 normalMat; @@ -222,6 +225,10 @@ vec3 viewToWorld(vec3 viewPos) { pos = gbufferModelViewInverse * pos; return pos.xyz; } +#if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 1 && !defined HAND + uniform float caveDetection; +#endif + //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -242,6 +249,10 @@ void main() { /////// ----- COLOR STUFF ----- /////// data_out.color = gl_Color; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + data_out.chunkFade = abs(mc_chunkFade); + #endif + /////// ----- RANDOM STUFF ----- /////// // gl_TextureMatrix[0] for animated things like charged creepers @@ -255,22 +266,14 @@ void main() { data_out.texcoord.xy = sign(texcoordminusmid)*0.5+0.5; #endif - - vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0; - data_out.lmtexcoord.zw = lmcoord; - - + data_out.lmtexcoord.zw = gl_MultiTexCoord1.xy / 240.0; #ifdef MC_NORMAL_MAP - vec3 alterTangent = at_tangent.rgb; - - data_out.tangent = vec4(normalize(gl_NormalMatrix * alterTangent.rgb), at_tangent.w); + data_out.tangent = vec4(normalize(gl_NormalMatrix * at_tangent.rgb), at_tangent.w); #endif data_out.normalMat = normalize(gl_NormalMatrix * gl_Normal); - vec3 vFlatNormals = data_out.normalMat; - #ifdef ENTITIES data_out.blockID = int(entityId); #elif defined BLOCKENTITIES @@ -299,7 +302,7 @@ void main() { vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - vec3 worldNormals = viewToWorld(vFlatNormals); + vec3 worldNormals = viewToWorld(data_out.normalMat); #if !defined ENTITIES && !defined HAND && defined SHADER_GRASS && (defined GRASS_DETECT_FALLOFF || defined GRASS_DETECT_INV_FALLOFF || REPLACE_SHORT_GRASS > 0) && !defined BLOCKENTITIES @@ -362,7 +365,6 @@ void main() { } } - data_out.discardGrass = 0; #if REPLACE_SHORT_GRASS > 0 #if GRASS_DENSITY == 3 float maxShortGrassRange = 28.0; @@ -378,7 +380,7 @@ void main() { data_out.centerPosition = worldpos + at_midBlock.xyz / 64.0; vec3 LPVpos = GetLpvPosition(data_out.centerPosition); uint blockBelow = GetVoxelBlock(ivec3(LPVpos.x, LPVpos.y - 0.6, LPVpos.z)); - if(blockBelow == 85) data_out.discardGrass = 1; + if(blockBelow == 85) data_out.blockID = -10; } #endif #endif @@ -400,23 +402,26 @@ void main() { ) && abs(position.z) < 64.0 ){ - vec3 UnalteredWorldpos = worldpos; - // vec3 offsetPos = UnalteredWorldpos+vec3(0.0, 1.0, 0.0)+relativeEyePosition; // float playerDist = smoothstep(0.5, 0.05, length(offsetPos.xz)) * smoothstep(1.0, 0.2, abs(offsetPos.y)); // vec2 dir2 = normalize(UnalteredWorldpos.xz+relativeEyePosition.xz); - // apply displacement for waving plant blocks - worldpos += calcMovePlants(worldpos + cameraPosition) * max(data_out.lmtexcoord.w,0.5); - // worldpos.xz += playerDist*dir2; - - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly - if(mc_Entity.x == BLOCK_AIR_WAVING) worldpos = UnalteredWorldpos + calcMoveLeaves(worldpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*data_out.lmtexcoord.w; + if(mc_Entity.x == BLOCK_AIR_WAVING) { + worldpos += calcMoveLeaves(worldpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*data_out.lmtexcoord.w; + } else { + // apply displacement for waving plant blocks + worldpos += calcMovePlants(worldpos + cameraPosition) * max(data_out.lmtexcoord.w,0.5); + // worldpos.xz += playerDist*dir2; + } } #endif + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 1 && !defined HAND + worldpos.y += -45.0*(1.0-data_out.chunkFade)*(1.0-caveDetection)*smoothstep(25.0, far, length(worldpos)); + #endif + // position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; #ifdef SHADER_GRASS diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index a8ab170..ce98acc 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -10,9 +10,7 @@ #include "/lib/settings.glsl" -#if defined CUSTOM_MOON_ROTATION || defined END_ISLAND_LIGHT || WATER_INTERACTION == 2 - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #undef FLASHLIGHT_BOUNCED_INDIRECT @@ -26,6 +24,10 @@ varying vec4 lmtexcoord; varying vec4 color; uniform vec4 entityColor; +#if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND +varying float chunkFade; +#endif + #if defined OVERWORLD_SHADER || (defined END_ISLAND_LIGHT && defined END_SHADER) const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; @@ -38,9 +40,6 @@ uniform vec4 entityColor; uniform float lightSign; flat varying vec3 WsunVec; - - flat varying vec3 averageSkyCol_Clouds; - flat varying vec4 lightCol; #endif @@ -330,8 +329,7 @@ float ld(float dist) { #ifdef RIPPLE_WATER #include "/lib/ripples.glsl" - - uniform int biome_precipitation; + uniform float rippleAmount; #endif // #undef BASIC_SHADOW_FILTER @@ -489,6 +487,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 FragCoord = gl_FragCoord.xyz; float mipmapBias = bias(); + float BN = blueNoise(); + #ifdef TAA vec2 tempOffset = offsets[framemod8]; vec3 viewPos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0)); @@ -542,6 +542,16 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) gl_FragData[0] = _color; #endif + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + gl_FragData[0].a *= sqrt(chunkFade); + + #ifdef TAA + if(sqrt(chunkFade) < BN && isWater) discard; + #else + if(sqrt(chunkFade) < R2_dither() && isWater) discard; + #endif + #endif + float UnchangedAlpha = gl_FragData[0].a; #ifdef WhiteWorld @@ -650,9 +660,9 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 flowDir = normalize(worldSpaceNormal*10.0) * frameTimeCounter * 2.0 * WATER_WAVE_SPEED; - vec2 newPos = playerPos.xy + cameraPosition.xy + abs(flowDir.xz); - newPos = mix(newPos, playerPos.zy + cameraPosition.zy + abs(flowDir.zx), clamp(abs(worldSpaceNormal.x),0.0,1.0)); - newPos = mix(newPos, playerPos.xz + cameraPosition.xz, clamp(abs(worldSpaceNormal.y),0.0,1.0)); + vec2 newPos = worldPos.xy + abs(flowDir.xz); + newPos = mix(newPos, worldPos.zy + abs(flowDir.zx), clamp(abs(worldSpaceNormal.x),0.0,1.0)); + newPos = mix(newPos, worldPos.xz, clamp(abs(worldSpaceNormal.y),0.0,1.0)); waterPos.xy = newPos; waterPos.xyz = getParallaxDisplacement(waterPos, playerPos); @@ -660,8 +670,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 bump = getWaveNormal(waterPos, playerPos); #ifdef RIPPLE_WATER - if(viewDist < 35 && rainStrength > 0.0 && biome_precipitation == 1 && abs(worldSpaceNormal.z) < 0.95 && abs(worldSpaceNormal.x) < 0.95) { - float effectStrength = smoothstep(0.85, 1.0, lightmap.y); + if(viewDist < 35 && rainStrength > 0.0 && rippleAmount > 0.01 && abs(worldSpaceNormal.z) < 0.95 && abs(worldSpaceNormal.x) < 0.95) { + float effectStrength = smoothstep(0.85, 1.0, lightmap.y) * smoothstep(0.0, 1.0, rippleAmount); rippleBump = ripples(worldPos.xz); bump += 0.6 * RIPPLE_STRENGTH * rippleBump * rainStrength * effectStrength * smoothstep(35.0, 10.0, viewDist); } @@ -802,8 +812,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/2400.0; - vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; + vec3 DirectLightColor = lightSourceColorSSBO/2400.0; + vec3 AmbientLightColor = averageSkyCol_CloudsSSBO/900.0; #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS DirectLightColor = luma(DirectLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); @@ -826,7 +836,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); - Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, blueNoise(), geoNormals); + Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, BN, geoNormals); // Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); Shadows *= mix(LM_shadowMapFallback,1.0,shadowMapFalloff2); @@ -882,7 +892,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); - Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, blueNoise(), geoNormals); + Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, BN, geoNormals); // Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); Shadows *= mix(LM_shadowMapFallback,1.0,shadowMapFalloff2); @@ -979,7 +989,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 DirectLightColor = WsunVec; float Shadows = 0.0; #endif - vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(blueNoise(), vec2(interleaved_gradientNoise_temporal())), worldSpaceNormal, roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows * Shadows, lightmap.y, isHand, isWater, reflectance, flashLightSpecularData); + vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(BN, vec2(interleaved_gradientNoise_temporal())), worldSpaceNormal, roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows * Shadows, lightmap.y, isHand, isWater, reflectance, flashLightSpecularData); gl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * reflectance; diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index 69392e4..5f6f014 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -3,9 +3,7 @@ #include "/lib/bokeh.glsl" #include "/lib/items.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #include "/lib/entities.glsl" @@ -26,12 +24,14 @@ Read the terms of modification and sharing before changing something below pleas varying vec4 lmtexcoord; varying vec4 color; +#if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND +varying float chunkFade; +#endif + uniform sampler2D colortex4; uniform sampler2D noisetex; #ifdef OVERWORLD_SHADER - flat varying vec3 averageSkyCol_Clouds; - flat varying vec4 lightCol; flat varying vec3 WsunVec; #include "/lib/scene_controller.glsl" @@ -113,6 +113,11 @@ vec3 getWaveNormal(vec3 posxz, float range){ return wave; } + +#if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 1 && !defined HAND + uniform float caveDetection; +#endif + //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -144,8 +149,7 @@ void main() { // lmtexcoord.xy = (gl_MultiTexCoord0).xy; lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; - vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0; - lmtexcoord.zw = lmcoord; + lmtexcoord.zw = gl_MultiTexCoord1.xy / 240.0; #if defined LARGE_WAVE_DISPLACEMENT && !defined PHYSICS_OCEAN if(isWater) { @@ -166,15 +170,25 @@ void main() { } #endif - - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - - #ifdef PLANET_CURVATURE - float curvature = length(worldpos) / (16*8); - worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - #endif - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 0 && !defined HAND + chunkFade = abs(mc_chunkFade); + #endif + + #if defined PLANET_CURVATURE || (defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 1 && !defined HAND) + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; + + #if defined IRIS_FEATURE_FADE_VARIABLE && VANILLA_CHUNK_FADING > 1 && !defined HAND + worldpos.y += -45.0*(1.0-chunkFade)*(1.0-caveDetection)*smoothstep(25.0, far, length(worldpos)); + #endif + + #ifdef PLANET_CURVATURE + float curvature = length(worldpos) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + #endif #if !defined ENTITIES && !defined HAND gl_Position = toClipSpace3(position); @@ -195,7 +209,7 @@ void main() { // translucent entities #if defined ENTITIES || defined BLOCKENTITIES mat = 0.9; - if (entityId == 1803) mat = 0.8; + if (entityId == 1804) mat = 0.8; #endif // translucent blocks @@ -227,21 +241,16 @@ void main() { } #endif flatnormal = normalMat.xyz; - viewVector = position.xyz; - viewVector = normalize(tbnMatrix * viewVector); + viewVector = position.xyz; + if(isWater) viewVector = normalize(tbnMatrix * viewVector); color = vec4(gl_Color.rgb, 1.0); #ifdef LIGHTNING color.a = gl_Color.a; #endif - #ifdef OVERWORLD_SHADER - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; - - averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - + #ifdef OVERWORLD_SHADER // WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); #ifdef SMOOTH_SUN_ROTATION @@ -262,10 +271,7 @@ void main() { vec3 WmoonVec = moonVec; - WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1)); - - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - + WsunVec = mix(WmoonVec, WsunVec, clamp(float(sunElevation > 1e-5)*2.0 - 1.0,0,1)); #endif LIGHTNING_BOLT = 0.0; diff --git a/shaders/dimensions/all_vanilla_emissives.fsh b/shaders/dimensions/all_vanilla_emissives.fsh index c8a925d..df99c45 100644 --- a/shaders/dimensions/all_vanilla_emissives.fsh +++ b/shaders/dimensions/all_vanilla_emissives.fsh @@ -67,7 +67,7 @@ void main() { vec3 GlintColor = vec3(0.0); Albedo.a = 0.0; #else - vec3 GlintColor = Albedo.rgb * 0.2 * Emissive_Brightness; + vec3 GlintColor = Albedo.rgb * 0.2 * Emissive_Brightness * ENCHANT_GLINT_BRIGHTNESS; #endif gl_FragData[0] = vec4(GlintColor*0.1, 0.000001); diff --git a/shaders/dimensions/begin.csh b/shaders/dimensions/begin.csh index 3de2ad7..c53ed38 100644 --- a/shaders/dimensions/begin.csh +++ b/shaders/dimensions/begin.csh @@ -1,20 +1,75 @@ #include "/lib/settings.glsl" +#include "/lib/SSBOs.glsl" layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const ivec3 workGroups = ivec3(1, 1, 1); +#include "/lib/scene_controller.glsl" + +uniform int worldDay; +uniform bool worldTimeChangeCheck; +uniform float frameTime; +uniform int frameCounter; +uniform sampler2D colortex1; +uniform sampler2D colortex4; +uniform float rainStrength; +uniform float thunderStrength; +uniform vec2 texelSize; +uniform float moonElevation; +uniform float sunElevation; +uniform float noPuddleAreas; +uniform float eyeAltitude; + +uniform mat4 gbufferModelViewInverse; +uniform vec3 moonPosition; +uniform vec3 sunPosition; + +uniform vec3 cameraPosition; + +float hash11(float p) +{ + p = fract(p * .1031); + p *= p + 33.33; + p *= p + p; + return fract(p); +} + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +vec3 rodSample(vec2 Xi) +{ + float r = sqrt(1.0f - Xi.x*Xi.y); + float phi = 2 * 3.14159265359 * Xi.y; + + return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +#define interpolateValue(old_value, new_value, mixhistory) clamp(mix(old_value, new_value, clamp(mixhistory,0.0,1.0)),0.0,65000.) + +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#include "/lib/util.glsl" + #ifdef CUSTOM_MOON_ROTATION - uniform float sunElevation; uniform mat4 shadowModelView; uniform int worldTime; uniform float worldTimeSmooth; - uniform int worldDay; // uniform float frameTimeCounter; uniform vec4 lightningBoltPosition; - - #include "/lib/util.glsl" - vec3 moonDirection(float worldTime, float latitude, float pathRotation) { float phi = radians(-latitude); float del = radians(pathRotation); @@ -41,9 +96,6 @@ const ivec3 workGroups = ivec3(1, 1, 1); #endif #if (defined CUSTOM_MOON_ROTATION && defined OVERWORLD_SHADER) || (defined END_ISLAND_LIGHT && defined END_SHADER) - #include "/lib/SSBOs.glsl" - uniform vec3 cameraPosition; - #if defined END_ISLAND_LIGHT && defined END_SHADER const float NEAR = 15.0; const float FAR = 256.0; @@ -107,12 +159,16 @@ const ivec3 workGroups = ivec3(1, 1, 1); } #endif -uniform mat4 gbufferModelViewInverse; -uniform vec3 moonPosition; -uniform vec3 sunPosition; - +#include "/lib/sky_gradient.glsl" +#include "/lib/ROBOBO_sky.glsl" void main() { + #if defined SMOOTH_SUN_ROTATION && (daySpeed < 1.0 || nightSpeed < 1.0) + vec3 WsunVec = WsunVecSmooth; + #else + vec3 WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); + #endif + #if defined CUSTOM_MOON_ROTATION && defined OVERWORLD_SHADER #ifdef CAELUM_SUPPORT @@ -145,12 +201,6 @@ void main() { } #endif - #if defined SMOOTH_SUN_ROTATION && (daySpeed < 1.0 || nightSpeed < 1.0) - vec3 WsunVec = WsunVecSmooth; - #else - vec3 WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); - #endif - #if defined CAELUM_SUPPORT || (defined SMOOTH_SUN_ROTATION && (daySpeed < 1.0 || nightSpeed < 1.0)) #if LIGHTNING_SHADOWS > 1 if (sunElevation > 0.0 && lightningBoltPosition.w == 0.0) @@ -171,4 +221,229 @@ void main() { customShadowMatrixSSBO = BuildShadowViewMatrix(normalize(END_LIGHT_POS)); customShadowPerspectiveSSBO = createPerspectiveMatrix(); #endif + + #ifdef OVERWORLD_SHADER + //////////////////////////////// + /// --- SCENE CONTROLLER --- /// + //////////////////////////////// + float mixhistory = 0.06; + if(worldTimeChangeCheck) mixhistory = 1.0; + + vec2 smallCumulus = vec2(CloudLayer0_coverage, CloudLayer0_density); + vec2 largeCumulus = vec2(CloudLayer1_coverage, CloudLayer1_density); + vec2 altostratus = vec2(CloudLayer2_coverage, CloudLayer2_density); + vec2 cirrus = vec2(CloudLayer3_coverage, CloudLayer3_density); + vec2 fog = vec2(1.0); + + #ifdef Daily_Weather + #ifdef CHOOSE_RANDOM_WEATHER_PROFILE + int dayCounter = int(clamp(hash11(float(mod(worldDay, 1000))) * 10.0, 0,10)); + #else + int dayCounter = int(mod(worldDay, 10)); + #endif + + //----------- cloud coverage + vec4 weatherProfile_cloudCoverage[10] = vec4[]( + vec4(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage, DAY0_l3_coverage), + vec4(DAY1_l0_coverage, DAY1_l1_coverage, DAY1_l2_coverage, DAY1_l3_coverage), + vec4(DAY2_l0_coverage, DAY2_l1_coverage, DAY2_l2_coverage, DAY2_l3_coverage), + vec4(DAY3_l0_coverage, DAY3_l1_coverage, DAY3_l2_coverage, DAY3_l3_coverage), + vec4(DAY4_l0_coverage, DAY4_l1_coverage, DAY4_l2_coverage, DAY4_l3_coverage), + vec4(DAY5_l0_coverage, DAY5_l1_coverage, DAY5_l2_coverage, DAY5_l3_coverage), + vec4(DAY6_l0_coverage, DAY6_l1_coverage, DAY6_l2_coverage, DAY6_l3_coverage), + vec4(DAY7_l0_coverage, DAY7_l1_coverage, DAY7_l2_coverage, DAY7_l3_coverage), + vec4(DAY8_l0_coverage, DAY8_l1_coverage, DAY8_l2_coverage, DAY8_l3_coverage), + vec4(DAY9_l0_coverage, DAY9_l1_coverage, DAY9_l2_coverage, DAY9_l3_coverage) + ); + + //----------- cloud density + vec4 weatherProfile_cloudDensity[10] = vec4[]( + vec4(DAY0_l0_density, DAY0_l1_density, DAY0_l2_density, DAY0_l3_density), + vec4(DAY1_l0_density, DAY1_l1_density, DAY1_l2_density, DAY1_l3_density), + vec4(DAY2_l0_density, DAY2_l1_density, DAY2_l2_density, DAY2_l3_density), + vec4(DAY3_l0_density, DAY3_l1_density, DAY3_l2_density, DAY3_l3_density), + vec4(DAY4_l0_density, DAY4_l1_density, DAY4_l2_density, DAY4_l3_density), + vec4(DAY5_l0_density, DAY5_l1_density, DAY5_l2_density, DAY5_l3_density), + vec4(DAY6_l0_density, DAY6_l1_density, DAY6_l2_density, DAY6_l3_density), + vec4(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density, DAY7_l3_density), + vec4(DAY8_l0_density, DAY8_l1_density, DAY8_l2_density, DAY8_l3_density), + vec4(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density, DAY9_l3_density) + ); + + vec4 getWeatherProfile_coverage = weatherProfile_cloudCoverage[dayCounter]; + vec4 getWeatherProfile_density = weatherProfile_cloudDensity[dayCounter]; + + smallCumulus = vec2(getWeatherProfile_coverage.r, getWeatherProfile_density.r); + largeCumulus = vec2(getWeatherProfile_coverage.g, getWeatherProfile_density.g); + altostratus = vec2(getWeatherProfile_coverage.b, getWeatherProfile_density.b); + cirrus = vec2(getWeatherProfile_coverage.a, getWeatherProfile_density.a); + + //----------- fog density + vec2 weatherProfile_fogDensity[10] = vec2[]( + vec2(DAY0_ufog_density, DAY0_cfog_density), + vec2(DAY1_ufog_density, DAY1_cfog_density), + vec2(DAY2_ufog_density, DAY2_cfog_density), + vec2(DAY3_ufog_density, DAY3_cfog_density), + vec2(DAY4_ufog_density, DAY4_cfog_density), + vec2(DAY5_ufog_density, DAY5_cfog_density), + vec2(DAY6_ufog_density, DAY6_cfog_density), + vec2(DAY7_ufog_density, DAY7_cfog_density), + vec2(DAY8_ufog_density, DAY8_cfog_density), + vec2(DAY9_ufog_density, DAY9_cfog_density) + ); + + fog = weatherProfile_fogDensity[dayCounter]; + #endif + + float SCmixhistory = 0.1*frameTime; + if(frameCounter < 4) SCmixhistory = 1.0; + SC_smallCumulus = interpolateValue(SC_smallCumulus, smallCumulus, SCmixhistory); + SC_largeCumulus = interpolateValue(SC_largeCumulus, largeCumulus, SCmixhistory); + SC_altostratus = interpolateValue(SC_altostratus, altostratus, SCmixhistory); + SC_cirrus = interpolateValue(SC_cirrus, cirrus, SCmixhistory); + SC_fog = interpolateValue(SC_fog, fog, SCmixhistory); + + /////////////////////////////////// + /// --- AMBIENT LIGHT STUFF --- /// + /////////////////////////////////// + + vec3 averageSkyCol_Clouds = vec3(0.0); + vec3 averageSkyCol = vec3(0.0); + + vec2 sample3x3[9] = vec2[]( + + vec2(-1.0, -0.3), + vec2( 0.0, 0.0), + vec2( 1.0, -0.3), + + vec2(-1.0, -0.5), + vec2( 0.0, -0.5), + vec2( 1.0, -0.5), + + vec2(-1.0, -1.0), + vec2( 0.0, -1.0), + vec2( 1.0, -1.0) + ); + + // sample in a 3x3 pattern to get a good area for average color + + // int maxIT = 9; + // for (int i = 0; i < maxIT; i++) { + // vec3 pos = vec3(0.0,1.0,0.0); + // pos.xy += normalize(sample3x3[i]) * vec2(0.3183,0.9000); + + // averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0; + // averageSkyCol += skyFromTex(pos,colortex4).rgb/maxIT/150.0; + // } + float maxIT = 20.0; + for (int i = 0; i < int(maxIT); i++) { + vec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) * vec2(1.0,0.9000); + vec3 pos = normalize(rodSample(ij)) * vec3(1.0,0.5,1.0) + vec3(0.0,0.5,0.0); + + averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0; + averageSkyCol += 1.5 * skyFromTex(pos,colortex4).rgb/maxIT/150.0; + } + + + // vec3 minimumlight = vec3(1.0) * 0.01 * MIN_LIGHT_AMOUNT + nightVision * 0.05; + + // luminance based reinhard is useful ouside of tonemapping too. + averageSkyCol_Clouds = averageSkyCol_Clouds / (1.0+luma(averageSkyCol_Clouds)*0.2); + + averageSkyCol = max(averageSkyCol, 0.0); // + minimumlight; + + #ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS + averageSkyCol = luma(averageSkyCol) * vec3(SKY_GROUND_R,SKY_GROUND_G,SKY_GROUND_B); + #endif + + averageSkyColSSBO = averageSkyCol; + + //////////////////////////////////////// + /// --- SUNLIGHT/MOONLIGHT STUFF --- /// + //////////////////////////////////////// + + vec2 planetSphere = vec2(0.0); + + float sunVis = clamp(sunElevation,0.0,0.04)/0.04*clamp(sunElevation,0.0,0.04)/0.04; + float moonVis = clamp(-moonElevation,0.0,0.04)/0.04*clamp(-moonElevation,0.0,0.04)/0.04; + + vec3 skyAbsorb = vec3(0.0); + vec3 sunColor = calculateAtmosphere(vec3(0.0), WsunVec, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, 25,0.0); + sunColor = sunColorBase/4000.0 * skyAbsorb; + vec3 moonColor = moonColorBase/4000.0; + + #ifdef CUSTOM_MOON_ROTATION + #if LIGHTNING_SHADOWS > 0 + vec3 WmoonVec = customMoonVec2SSBO; + #else + vec3 WmoonVec = customMoonVecSSBO; + #endif + + float moonPhase = 1.0 - 0.5 * (dot(WsunVec, WmoonVec) + 1.0); + moonVis = smoothstep(0.08, -0.03, -WmoonVec.y); + moonColor *= moonPhase; + + #endif + + // lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; + vec3 lightSourceColor = sunColor * sunVis + moonColor * moonVis; + #ifdef CUSTOM_MOON_ROTATION + lightSourceColor *= smoothstep(0.005, 0.09, length(WmoonVec - WsunVec)); + #endif + + #if defined TWILIGHT_FOREST_FLAG + vec3 lightSourceColor = vec3(0.0); + vec3 moonColor = vec3(0.0); + #endif + + ///////////////////////////////// + ///// --- STORE COLOR LUT --- /// + ///////////////////////////////// + + #ifdef SeparateAmbientColorRain + vec3 AmbientLightTint = mix(vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B), mix(vec3(AmbientLightRain_R, AmbientLightRain_G, AmbientLightRain_B), vec3(AmbientLightThunder_R, AmbientLightThunder_G, AmbientLightThunder_B), thunderStrength), rainStrength*noPuddleAreas); + #else + vec3 AmbientLightTint = vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B); + #endif + // --- the color of the atmosphere + the average color of the atmosphere. + vec3 skyGroundCol = skyFromTex(vec3(0, -1 ,0), colortex4).rgb * AmbientLightTint; + + + /// --- Save light values + averageSkyCol_CloudsSSBO = interpolateValue(averageSkyCol_CloudsSSBO, averageSkyCol_Clouds * AmbientLightTint * 150.0, mixhistory); + + skyGroundColSSBO = interpolateValue(skyGroundColSSBO, skyGroundCol, mixhistory); + + #ifdef ambientLight_only + lightSourceColorSSBO = vec3(0.0); + + sunColorSSBO = vec3(0.0); + + moonColorSSBO = vec3(0.0); + #else + lightSourceColorSSBO = interpolateValue(lightSourceColorSSBO, lightSourceColor*150.0, mixhistory); + + sunColorSSBO = interpolateValue(sunColorSSBO, sunColor*150.0, mixhistory); + + moonColorSSBO = interpolateValue(moonColorSSBO, moonColor*150.0, mixhistory); + #endif + #else + lightSourceColorSSBO = vec3(0.0); + + sunColorSSBO = vec3(0.0); + + moonColorSSBO = vec3(0.0); + #endif + + #if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT + // sample center pixel of albedo color, and interpolate it overtime. + + vec3 data = texelFetch(colortex1, ivec2(0.5/texelSize), 0).rgb; + vec3 decodeAlbedo = vec3(decodeVec2(data.x).x,decodeVec2(data.y).x, decodeVec2(data.z).x); + vec3 albedo = toLinear(decodeAlbedo); + + albedo = normalize(albedo + 1e-7) * (dot(albedo,vec3(0.21, 0.72, 0.07))*0.5+0.5); + + albedoSmoothSSBO = interpolateValue(albedoSmoothSSBO, albedo*150.0, 0.01); + #endif } diff --git a/shaders/dimensions/composite.fsh b/shaders/dimensions/composite.fsh index 83814d5..d21134d 100644 --- a/shaders/dimensions/composite.fsh +++ b/shaders/dimensions/composite.fsh @@ -1,8 +1,6 @@ #include "/lib/settings.glsl" -#if defined CUSTOM_MOON_ROTATION || defined END_ISLAND_LIGHT - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #ifndef END_SHADER flat varying vec3 WsunVec; @@ -379,7 +377,7 @@ float ld(float dist) { #include "/lib/sky_gradient.glsl" -/* RENDERTARGETS:3,14,12,10*/ +/* RENDERTARGETS:3,14,12*/ void main() { @@ -457,7 +455,7 @@ void main() { vec3 FlatNormals = normalize(texture2D(colortex15,texcoord).rgb * 2.0 - 1.0); - #if defined DENOISE_SSS_AND_SSAO && indirect_effect == SSAO_FILTERED || indirect_effect == SSAO_HQ + #if indirect_effect == SSAO_FILTERED || indirect_effect == SSAO_HQ if(z >= 1.0) FlatNormals = normal; @@ -474,7 +472,7 @@ void main() { /*------------- VOLUMETRICS BEHIND TRANSLUCENTS PASS-THROUGH -------------*/ // colortex10 is the history buffer used in reprojection of volumetrics, i can just hijack that. - gl_FragData[3] = texture2D(colortex10, texcoord); + // gl_FragData[3] = texture2D(colortex10, texcoord); // if(texture2D(colortex7,texcoord).a > 0.0) { // vec4 VL = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); diff --git a/shaders/dimensions/composite.vsh b/shaders/dimensions/composite.vsh index 43f63e1..5518e35 100644 --- a/shaders/dimensions/composite.vsh +++ b/shaders/dimensions/composite.vsh @@ -1,8 +1,6 @@ #include "/lib/settings.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" flat varying vec2 TAA_Offset; flat varying vec3 WsunVec; diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index db213a6..d249021 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1,11 +1,9 @@ #include "/lib/settings.glsl" -#if defined CUSTOM_MOON_ROTATION || defined END_ISLAND_LIGHT - #include "/lib/SSBOs.glsl +#include "/lib/SSBOs.glsl - #ifdef CUSTOM_MOON_ROTATION - uniform sampler2D CoronaTex; - #endif +#ifdef CUSTOM_MOON_ROTATION + uniform sampler2D CoronaTex; #endif // #if defined END_SHADER || defined NETHER_SHADER @@ -38,9 +36,6 @@ uniform float rainStrength; uniform sampler2DShadow shadowtex1; #endif - flat varying vec3 averageSkyCol_Clouds; - flat varying vec4 lightCol; - #if ShaderSnow > 0 uniform sampler2D snowTexA; uniform sampler2D snowTexN; @@ -51,8 +46,7 @@ uniform float rainStrength; #if defined RIPPLE_PUDDLES && PUDDLE_MODE > 0 #include "/lib/ripples.glsl" - - uniform int biome_precipitation; + uniform float rippleAmount; #endif #include "/lib/stars.glsl" @@ -62,12 +56,8 @@ uniform float rainStrength; #ifdef MOON_NORMALS uniform sampler2D moonN; #endif - #else - flat varying vec3 moonCol; #endif - flat varying vec3 sunCol; - #if SUN_SPECULAR_MULT != 0 #define LIGHTSOURCE_REFLECTION #endif @@ -174,7 +164,6 @@ uniform vec3 sunVec; flat varying vec3 unsigned_WsunVec; flat varying vec3 WmoonVec; flat varying float exposure; -flat varying vec3 albedoSmooth; #ifdef IS_LPV_ENABLED uniform int heldItemId; @@ -879,11 +868,11 @@ uniform float wetness; float viewDist = length(worldPos - cameraPosition); vec3 rippleNormal = flatNormals; - if(viewDist < 35 && rainStrength > 0.0 && biome_precipitation == 1 && snowAmount < 0.01) { + if(viewDist < 35 && rainStrength > 0.0 && rippleAmount > 0.01 && snowAmount < 0.01) { vec3 ripple = ripples(1.2 * worldPos.xz); ripple = ripple.xzy; - rippleNormal = mix(flatNormals, ripple, smoothstep(35., 10., viewDist) * rainStrength); + rippleNormal = mix(flatNormals, ripple, smoothstep(35., 10., viewDist) * rainStrength * smoothstep(0.0, 1.0, rippleAmount)); } normals = mix(normals, rippleNormal, puddles * effectStrength * clamp(flatNormals.y,0.0,1.0)); @@ -1140,8 +1129,8 @@ void main() { float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0); #ifdef OVERWORLD_SHADER - DirectLightColor = lightCol.rgb / 2400.0; - AmbientLightColor = averageSkyCol_Clouds / 900.0; + DirectLightColor = lightSourceColorSSBO / 2400.0; + AmbientLightColor = averageSkyCol_CloudsSSBO / 900.0; #if defined CUSTOM_MOON_ROTATION && LIGHTNING_SHADOWS > 0 #if LIGHTNING_SHADOWS < 2 @@ -1508,7 +1497,7 @@ void main() { const float flashlightshadows = 1.0; #endif - Indirect_lighting += flashlightshadows*calculateFlashlight(texcoord, viewPos, albedoSmooth, slopednormal, flashLightSpecularData, hand); + Indirect_lighting += flashlightshadows*calculateFlashlight(texcoord, viewPos, albedoSmoothSSBO, slopednormal, flashLightSpecularData, hand); #endif ///////////////////////////////////////////////////////////////////////////////////// @@ -1672,7 +1661,7 @@ void main() { vec3 sunVec = unsigned_WsunVec; #endif - Background += drawSun(dot(sunVec, feetPlayerPos_normalized), sunCol / 2400.0); + Background += drawSun(dot(sunVec, feetPlayerPos_normalized), sunColorSSBO / 2400.0); #ifdef REALMOON vec3 tangent = normalize(cross(WmoonVec, vec3(0.0, 1.0, 0.0))); @@ -1744,7 +1733,7 @@ void main() { vec3 moonLightCol = moonColorBase2; Background += pow(moonTex, vec3(3.2)) * 20.0 * drawRealMoon(feetPlayerPos_normalized, WmoonVec, moonLightCol, Background, moonSize); #else - vec3 moonLightCol = moonCol / 2400.0; + vec3 moonLightCol = moonColorSSBO / 2400.0; Background += drawMoon(feetPlayerPos_normalized, WmoonVec, moonLightCol, Background); #endif #endif diff --git a/shaders/dimensions/composite1.vsh b/shaders/dimensions/composite1.vsh index bab6df2..21d1dad 100644 --- a/shaders/dimensions/composite1.vsh +++ b/shaders/dimensions/composite1.vsh @@ -1,9 +1,7 @@ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #ifdef END_SHADER flat varying float Flashing; @@ -14,11 +12,6 @@ flat varying vec3 WsunVec; flat varying vec3 WmoonVec; flat varying vec3 unsigned_WsunVec; -flat varying vec3 averageSkyCol_Clouds; -flat varying vec4 lightCol; -flat varying vec3 sunCol; -flat varying vec3 moonCol; -flat varying vec3 albedoSmooth; flat varying float exposure; @@ -55,18 +48,6 @@ void main() { zMults = vec3(1.0/(far * near),far+near,far-near); - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; - - sunCol = texelFetch2D(colortex4,ivec2(8,37),0).rgb; - moonCol = texelFetch2D(colortex4,ivec2(9,37),0).rgb; - - #if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT - albedoSmooth = texelFetch2D(colortex4,ivec2(15.5,2.5),0).rgb; - #endif - - averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - #ifdef SMOOTH_SUN_ROTATION unsigned_WsunVec = WsunVecSmooth; #else @@ -86,16 +67,12 @@ void main() { WmoonVec = moonVec; - WsunVec = mix(WmoonVec, unsigned_WsunVec, clamp(lightCol.a,0,1)); + WsunVec = mix(WmoonVec, unsigned_WsunVec, clamp(float(sunElevation > 1e-5)*2.0 - 1.0,0,1)); #if defined CUSTOM_MOON_ROTATION && LIGHTNING_SHADOWS > 0 WmoonVec = customMoonVec2SSBO; #endif - // exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; - - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - #ifdef TAA TAA_Offset = offsets[framemod8]; #else diff --git a/shaders/dimensions/composite10.fsh b/shaders/dimensions/composite10.fsh index d035b92..230b6ac 100644 --- a/shaders/dimensions/composite10.fsh +++ b/shaders/dimensions/composite10.fsh @@ -2,9 +2,8 @@ #include "/lib/res_params.glsl" +#include "/lib/SSBOs.glsl" -flat varying vec4 exposure; -flat varying vec2 rodExposureDepth; varying vec2 texcoord; const bool colortex5MipmapEnabled = true; @@ -215,6 +214,12 @@ void main() { float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); vec3 col = texture2D(colortex5,texcoord).rgb; + vec2 rodExposureDepth = rodExposureDepthSSBO; + rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0); + + vec4 exposure = vec4(exposureSSBO); + + #if DOF_QUALITY >= 0 /*--------------------------------*/ float z = ld(texture2D(depthtex1, texcoord.st*RENDER_SCALE).r)*far; @@ -284,6 +289,9 @@ void main() { float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; + float bloomyFog_Mult = BLOOMY_FOG; + if(isEyeInWater == 1) bloomyFog_Mult = UNDERWATER_BLOOMY_FOG; + #if Purkinje_strength > 0 float pstrength = float(Purkinje_strength) / 100.0; @@ -293,7 +301,7 @@ void main() { float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1); #endif - VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength) * (1.0-purkinje*0.3),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); + VL_abs = clamp((1.0-VL_abs)*bloomyFog_Mult*0.75*(1.0+rainStrength) * (1.0-purkinje*0.3),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb; float lum = dot(col, vec3(0.15,0.3,0.55)); @@ -303,7 +311,7 @@ void main() { col = mix(lum * vec3(Purkinje_R, Purkinje_G, Purkinje_B) * Purkinje_Multiplier, col, rodCurve); #else - VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); + VL_abs = clamp((1.0-VL_abs)*bloomyFog_Mult*0.75*(1.0+rainStrength),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb; #endif diff --git a/shaders/dimensions/composite10.vsh b/shaders/dimensions/composite10.vsh index d07930f..4c89120 100644 --- a/shaders/dimensions/composite10.vsh +++ b/shaders/dimensions/composite10.vsh @@ -2,11 +2,6 @@ varying vec2 texcoord; -uniform sampler2D colortex4; - -flat varying vec4 exposure; -flat varying vec2 rodExposureDepth; - //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -14,11 +9,6 @@ flat varying vec2 rodExposureDepth; //////////////////////////////VOID MAIN////////////////////////////// void main() { - gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; - - exposure = vec4(vec3(texelFetch2D(colortex4,ivec2(10,37),0).r),texelFetch2D(colortex4,ivec2(10,37),0).r); - rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg; - rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0); } \ No newline at end of file diff --git a/shaders/dimensions/composite2.fsh b/shaders/dimensions/composite2.fsh index 158e3ad..1a0dc20 100644 --- a/shaders/dimensions/composite2.fsh +++ b/shaders/dimensions/composite2.fsh @@ -1,17 +1,9 @@ #include "/lib/settings.glsl" -#if defined CUSTOM_MOON_ROTATION || (defined END_SHADER && defined END_ISLAND_LIGHT) - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" #define EXCLUDE_WRITE_TO_LUT -flat varying vec4 lightCol; -flat varying vec3 sunlightCol; -flat varying vec3 moonlightCol; -flat varying vec3 averageSkyCol; -flat varying vec3 averageSkyCol_Clouds; - uniform float skyLightLevelSmooth; @@ -107,9 +99,6 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo #define IS_LPV_ENABLED #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED - - flat varying float exposure; - #ifdef IS_LPV_ENABLED #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable @@ -140,7 +129,10 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo return vec3(0.0); #endif - int SAMPLECOUNT = 8; + const int SAMPLECOUNT = 8; + const float density = 0.0001; + const float fadeLength = 10.0; // in blocks + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; vec3 LPVrayStartPos = playerPos - gbufferModelViewInverse[3].xyz; @@ -157,18 +149,17 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo vec3 LPVrayProgress = vec3(0.0); vec4 color = vec4(0.0,0.0,0.0,1.0); - float expFactor = 11.0; + const float expFactor = 11.0; for (int i = 0; i < SAMPLECOUNT; i++) { - float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); + float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1.0-1.0/expFactor); float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); LPVrayProgress = gbufferModelViewInverse[3].xyz + d*LPVrayStartPos; vec3 lpvPos = GetLpvPosition(LPVrayProgress); - float fadeLength = 10.0; // in blocks - vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0); + vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0); float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z; if(LpvFadeF < 0.01) break; @@ -180,13 +171,12 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo vec3 lighting = sampleColor * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 25. * exp(-5 * (1.0-luma(sampleColor))); #endif - float density = 0.0001; float volumeCoeff = exp(-dd*density*LPVRayLength); color.rgb += (lighting - lighting * volumeCoeff) * color.a; color.a *= volumeCoeff; } - return color.rgba; + return color; } #endif @@ -312,6 +302,7 @@ void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEn } uniform float waterEnteredAltitude; +float lightSourceCheck = float(sunElevation > 1e-5)*2.0 - 1.0; vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL, vec3 LPV){ int spCount = 8; @@ -382,7 +373,7 @@ vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, #endif } - sh *= GetCloudShadow(progressW, WsunVec * lightCol.a); + sh *= GetCloudShadow(progressW, WsunVec * lightSourceCheck); #endif @@ -679,16 +670,19 @@ void main() { vec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; - vec3 directLightColor = lightCol.rgb / 2400.0; - vec3 directSunlightColor = sunlightCol / 2400.0; - vec3 directMoonlightColor = moonlightCol / 2400.0; + vec3 directLightColor = lightSourceColorSSBO / 2400.0; + vec3 directSunlightColor = sunColorSSBO / 2400.0; + #ifdef CUSTOM_MOON_ROTATION + directSunlightColor *= smoothstep(0.005, 0.09, length(WmoonVec - WrealSunVec)); + #endif + vec3 directMoonlightColor = moonColorSSBO / 2400.0; #ifdef CUSTOM_MOON_ROTATION directMoonlightColor *= mix(0.0, 1.0, clamp(WmoonVec.y + 0.05, 0.0, 0.1)/0.1); #endif - vec3 indirectLightColor = averageSkyCol / 1200.0; - vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0; + vec3 indirectLightColor = skyGroundColSSBO / 1200.0; + vec3 indirectLightColor_dynamic = averageSkyCol_CloudsSSBO / 1200.0; // #if defined DISTANT_HORIZONS || defined VOXY // float godrays = godrayTest(viewPos0, normalize(WsunVec*mat3(gbufferModelViewInverse)),BN.x, z0); @@ -696,7 +690,7 @@ void main() { // float godrays = 1.0; // #endif - #if defined LPV_VL_FOG_ILLUMINATION + #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED vec4 LPV_ILLUMINATION = raymarchLPV(viewPos0, R2_dither()); #else vec4 LPV_ILLUMINATION = vec4(0.0,0.0,0.0,1.0); @@ -721,7 +715,7 @@ void main() { bool eyeInWater = isEyeInWater == 1; if (eyeInWater){ - vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0, length(viewPos0), vec2(noise_1), totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos0), normalize(sunVec * lightCol.a)), LPV_ILLUMINATION.rgb); + vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0, length(viewPos0), vec2(noise_1), totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos0), normalize(sunVec * lightSourceCheck)), LPV_ILLUMINATION.rgb); VolumetricFog = vec4(underWaterFog.rgb, 1.0); } else { #ifdef OVERWORLD_SHADER @@ -750,7 +744,7 @@ void main() { // vec3 sceneColor = texelFetch2D(colortex3,texcoord,0).rgb * VolumetricClouds.a + VolumetricClouds.rgb; VolumetricFog = GetVolumetricFog(viewPos0, WsunVec, BN, directLightColor, indirectLight_fog, indirectLightColor_dynamic, cloudPlaneDistance); - #if defined LPV_VL_FOG_ILLUMINATION + #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED VolumetricFog.a *= LPV_ILLUMINATION.a; VolumetricFog.rgb = VolumetricFog.rgb * LPV_ILLUMINATION.a + LPV_ILLUMINATION.rgb; #endif @@ -764,7 +758,7 @@ void main() { #if defined NETHER_SHADER || defined END_SHADER VolumetricFog = GetVolumetricFog(viewPos0, noise_1, noise_1); - #if defined LPV_VL_FOG_ILLUMINATION + #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED VolumetricFog.a *= LPV_ILLUMINATION.a; VolumetricFog.rgb = VolumetricFog.rgb * LPV_ILLUMINATION.a + LPV_ILLUMINATION.rgb; #endif @@ -819,7 +813,7 @@ void main() { directLightColor *= lightleakfix; - VolumetricFog = waterVolumetrics_alt(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLight, directLightColor, dot(normalize(viewPos0), normalize(sunVec*lightCol.a))); + VolumetricFog = waterVolumetrics_alt(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLight, directLightColor, dot(normalize(viewPos0), normalize(sunVec*lightSourceCheck))); } else { #if defined OVERWORLD_SHADER VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1), WrealSunVec, WmoonVec, directSunlightColor, directMoonlightColor, indirectLightColor, cloudPlaneDistance, cloudDistance); diff --git a/shaders/dimensions/composite2.vsh b/shaders/dimensions/composite2.vsh index eec0ce4..3cc90c3 100644 --- a/shaders/dimensions/composite2.vsh +++ b/shaders/dimensions/composite2.vsh @@ -6,16 +6,6 @@ #include "/lib/SSBOs.glsl" #endif -flat varying vec4 lightCol; -flat varying vec3 sunlightCol; -flat varying vec3 moonlightCol; -flat varying vec3 averageSkyCol; -flat varying vec3 averageSkyCol_Clouds; - -#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED - flat varying float exposure; -#endif - #include "/lib/scene_controller.glsl" @@ -54,31 +44,9 @@ void main() { gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_SCALE)*2.0-1.0; - - #ifdef OVERWORLD_SHADER - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; - sunlightCol = texelFetch2D(colortex4,ivec2(8,37),0).rgb; - moonlightCol = texelFetch2D(colortex4,ivec2(9,37),0).rgb; - averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; - averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - #endif - - #ifdef NETHER_SHADER - lightCol.rgb = vec3(0.0); - averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = vec3(0.0); - #endif - - #ifdef END_SHADER - lightCol.rgb = vec3(0.0); - averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = vec3(5.0); - #endif + float lightSourceCheck = float(sunElevation > 1e-5)*2.0 - 1.0; #ifdef OVERWORLD_SHADER - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; #ifdef SMOOTH_SUN_ROTATION WsunVec = WsunVecSmooth; #else @@ -91,7 +59,6 @@ void main() { #else vec3 moonVec = customMoonVecSSBO; #endif - sunlightCol *= smoothstep(0.005, 0.09, length(moonVec - WsunVec)); #else #ifdef SMOOTH_MOON_ROTATION vec3 moonVec = WmoonVecSmooth; @@ -104,17 +71,13 @@ void main() { WmoonVec = moonVec; WrealSunVec = WsunVec; - WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1)); + WsunVec = mix(WmoonVec, WsunVec, clamp(lightSourceCheck,0,1)); #else WmoonVec = vec3(0.0, 1.0, 0.0); WsunVec = vec3(0.0, 1.0, 0.0); WrealSunVec = vec3(0.0, 1.0, 0.0); #endif - #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED - exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; - #endif - #ifdef TAA TAA_Offset = offsets[framemod8]; #else diff --git a/shaders/dimensions/composite3.fsh b/shaders/dimensions/composite3.fsh index d301c3a..d837ae7 100644 --- a/shaders/dimensions/composite3.fsh +++ b/shaders/dimensions/composite3.fsh @@ -1,15 +1,13 @@ #include "/lib/settings.glsl" +#include "/lib/SSBOs.glsl" + flat varying vec3 zMults; flat varying vec2 TAA_Offset; flat varying vec3 WsunVec; flat varying vec3 WmoonVec; -#ifdef OVERWORLD_SHADER - flat varying vec3 skyGroundColor; -#endif - uniform sampler2D noisetex; uniform sampler2D depthtex0; uniform sampler2D depthtex1; @@ -526,14 +524,13 @@ float getBorderFogDensity(float linearDistance, vec3 playerPos, bool sky){ if(sky) return 0.0; #if defined DISTANT_HORIZONS || defined VOXY - float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / dhVoxyRenderDistance,0.0)*3.0,1.0) ); + float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / dhVoxyRenderDistance,0.0)*3.0/BorderFogIntensity,1.0) ); #else - float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / far,0.0)*3.0,1.0) ); + float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / far,0.0)*3.0/BorderFogIntensity,1.0) ); #endif borderFogDensity *= exp(-10.0 * pow(clamp(playerPos.y,0.0,1.0)*4.0,2.0)); borderFogDensity *= (1.0-caveDetection); - borderFogDensity *= BorderFogIntensity; return borderFogDensity; } @@ -839,12 +836,15 @@ void main() { // blend border fog. be sure to blend before and after forward rendered color blends. #if defined BorderFog && defined OVERWORLD_SHADER float borderFogDensity = getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, isSky); - vec4 borderFog = vec4(skyGroundColor, borderFogDensity); + vec4 borderFog; #if !defined SKY_GROUND borderFog.rgb = skyFromTex(playerPos_normalized, colortex4)/1200.0 * Sky_Brightness; + #else + borderFog.rgb = skyGroundColSSBO / 1200.0 * Sky_Brightness; #endif - borderFog *= BorderFogIntensity; + borderFog.a = borderFogDensity; + #if !defined DISTANT_HORIZONS && !defined VOXY if(!isWater) color = mix(color, borderFog.rgb, getBorderFogDensity(linearDistance_cylinder_alt, normalize(playerPos_alt), z2 >= 1.0 || TranslucentShader.a <= 0)); #endif diff --git a/shaders/dimensions/composite3.vsh b/shaders/dimensions/composite3.vsh index 6592032..0d58c4c 100644 --- a/shaders/dimensions/composite3.vsh +++ b/shaders/dimensions/composite3.vsh @@ -1,8 +1,6 @@ #include "/lib/settings.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" varying vec2 texcoord; flat varying vec3 zMults; @@ -12,10 +10,6 @@ flat varying vec3 zMults; #include "/lib/scene_controller.glsl" #endif -#ifdef BorderFog - flat varying vec3 skyGroundColor; -#endif - flat varying vec3 WsunVec; flat varying vec3 WmoonVec; @@ -41,9 +35,6 @@ uniform int framemod8; void main() { #ifdef OVERWORLD_SHADER - #ifdef BorderFog - skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness; - #endif #ifdef SMOOTH_SUN_ROTATION WsunVec = WsunVecSmooth; #else @@ -62,10 +53,6 @@ void main() { if(dot(-WmoonVec, WsunVec) < 0.9999) WmoonVec = -WmoonVec; #endif #endif - - #if defined CUMULONIMBUS_LIGHTNING && CUMULONIMBUS > 0 - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - #endif #endif #ifdef TAA diff --git a/shaders/dimensions/composite5.fsh b/shaders/dimensions/composite5.fsh index 50d94c5..055faab 100644 --- a/shaders/dimensions/composite5.fsh +++ b/shaders/dimensions/composite5.fsh @@ -1,9 +1,7 @@ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" /* const int colortex0Format = RGBA16F; // low res clouds (deferred->composite2) + low res VL (composite5->composite15) diff --git a/shaders/dimensions/composite7.vsh b/shaders/dimensions/composite7.vsh index c33e780..fc29d67 100644 --- a/shaders/dimensions/composite7.vsh +++ b/shaders/dimensions/composite7.vsh @@ -11,5 +11,5 @@ void main() { vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); gl_Position = ftransform(); //*0.51 to avoid errors when sampling outside since clearing is disabled - gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2-1.0; + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2.0-1.0; } diff --git a/shaders/dimensions/composite9.vsh b/shaders/dimensions/composite9.vsh index 366226a..cbc9838 100644 --- a/shaders/dimensions/composite9.vsh +++ b/shaders/dimensions/composite9.vsh @@ -15,5 +15,4 @@ void main() { //0-0.5 gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); - } diff --git a/shaders/dimensions/deferred.csh b/shaders/dimensions/deferred.csh new file mode 100644 index 0000000..c1aa67d --- /dev/null +++ b/shaders/dimensions/deferred.csh @@ -0,0 +1,82 @@ +#include "/lib/settings.glsl" +#include "/lib/SSBOs.glsl" +#include "/lib/res_params.glsl" +layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +const ivec3 workGroups = ivec3(1, 1, 1); + +uniform vec2 texelSize; +uniform sampler2D colortex6; +uniform float frameTime; +uniform float far; +uniform float near; +uniform int frameCounter; +uniform sampler2D depthtex2; + + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +float ld(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +void main() { + ////////////////////////////// + /// --- EXPOSURE STUFF --- /// + ////////////////////////////// + + vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); + float avgExp = 0.0; + float avgB = 0.0; + vec2 resScale = vec2(1920.,1080.)/clampedRes; + const int maxITexp = 50; + for (int i = 0; i < maxITexp; i++){ + vec2 ij = R2_samples((frameCounter%2000)*maxITexp+i); + vec2 tc = 0.5 + (ij-0.5) * 0.7; + vec3 sp = texture2D(colortex6, tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; + avgExp += log(sqrt(luma(sp))); + avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); + } + + avgExp = exp(avgExp/maxITexp); + avgB = exp(avgB/maxITexp); + + float avgBrightness = clamp(mix(avgExp,avgBrightnessSSBO,0.95),0.00003051757,65000.0); + + float L = max(avgBrightness,1e-8); + // float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); + // float expFunc = 0.5+0.5*tanh(log(L)); + + // float targetExposure = 1.0/log(L+1.05); + float targetExposure = (EXPOSURE_DARKENING * 0.35)/log(L+1.0 + EXPOSURE_BRIGHTENING * 0.05); + // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original + + float avgL2 = clamp(mix(avgB,avgL2SSBO,0.985),0.00003051757,65000.0); + float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; + + + float exposure = max(targetExposure*EXPOSURE_MULTIPLIER, 0.0); + + float currCenterDepth = ld(texture2D(depthtex2, vec2(0.5)*RENDER_SCALE).r); + float centerDepth = mix(sqrt(rodExposureDepthSSBO.y/65000.0), currCenterDepth, clamp(DoF_Adaptation_Speed*exp(-0.016/frameTime+1.0)/(6.0+currCenterDepth*far),0.0,1.0)); + centerDepth = centerDepth * centerDepth * 65000.0; + + float rodExposure = targetrodExposure; + + #ifndef AUTO_EXPOSURE + exposure = Manual_exposure_value; + rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); + #endif + + //Exposure values + exposureSSBO = exposure; + avgBrightnessSSBO = avgBrightness; + avgL2SSBO = avgL2; + rodExposureDepthSSBO = vec2(rodExposure, centerDepth); +} \ No newline at end of file diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh deleted file mode 100644 index 6f51816..0000000 --- a/shaders/dimensions/deferred.vsh +++ /dev/null @@ -1,326 +0,0 @@ -#include "/lib/settings.glsl" -#include "/lib/res_params.glsl" - -// uniform int dhVoxyRenderDistance; -uniform float frameTimeCounter; -#include "/lib/Shadow_Params.glsl" - - - -flat varying vec3 averageSkyCol_Clouds; -flat varying vec3 averageSkyCol; - -flat varying vec3 sunColor; -flat varying vec3 moonColor; -flat varying vec3 lightSourceColor; -flat varying vec3 zenithColor; - -flat varying vec2 tempOffsets; - -flat varying float exposure; -flat varying float avgBrightness; -flat varying float rodExposure; -flat varying float avgL2; -flat varying float centerDepth; - -uniform int hideGUI; - -uniform sampler2D colortex4; -uniform sampler2D colortex6; -uniform sampler2D depthtex0; -uniform sampler2D depthtex1; -uniform sampler2D depthtex2; - -uniform mat4 gbufferModelViewInverse; -uniform vec3 sunPosition; -uniform vec2 texelSize; -uniform float sunElevation; -uniform float moonElevation; -uniform float eyeAltitude; -uniform float rainStrength; -uniform float nightVision; -uniform float near; -// uniform float far; -uniform float frameTime; -uniform int frameCounter; -uniform vec3 cameraPosition; -uniform vec4 lightningBoltPosition; - -#ifdef SMOOTH_SUN_ROTATION - vec3 sunVec = WsunVecSmooth; -#else - vec3 sunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); -#endif - -#include "/lib/sky_gradient.glsl" -#include "/lib/util.glsl" -#include "/lib/ROBOBO_sky.glsl" - -float luma(vec3 color) { - return dot(color,vec3(0.21, 0.72, 0.07)); -} -vec3 rodSample(vec2 Xi) -{ - float r = sqrt(1.0f - Xi.x*Xi.y); - float phi = 2 * 3.14159265359 * Xi.y; - - return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; -} -//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ -vec2 R2_samples(int n){ - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha * n); -} -float tanh(float x){ - return (exp(x) - exp(-x))/(exp(x) + exp(-x)); -} -float ld(float depth) { - return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near -} -float hash11(float p) -{ - p = fract(p * .1031); - p *= p + 33.33; - p *= p + p; - return fract(p); -} - -#define USE_SCENE_CONTROLLER_SETTINGS -#include "/lib/scene_controller.glsl" - -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" - - #if LIGHTNING_SHADOWS > 0 - float lightningFlashTimer = floor(frameTimeCounter * 11.0); - float randomSeed = fract(sin(dot(vec2(lightningFlashTimer), vec2(12.9898,78.233))) * 43758.5453); - float lightningFlash = mix(0.1, 2.5, randomSeed); - #endif -#endif - - -void main() { - - gl_Position = ftransform()*0.5+0.5; - gl_Position.xy = gl_Position.xy*vec2(18.+258*2,258.)*texelSize; - gl_Position.xy = gl_Position.xy*2.-1.0; - -#ifdef OVERWORLD_SHADER - -/////////////////////////////////// -/// --- AMBIENT LIGHT STUFF --- /// -/////////////////////////////////// - - averageSkyCol_Clouds = vec3(0.0); - averageSkyCol = vec3(0.0); - - vec2 sample3x3[9] = vec2[]( - - vec2(-1.0, -0.3), - vec2( 0.0, 0.0), - vec2( 1.0, -0.3), - - vec2(-1.0, -0.5), - vec2( 0.0, -0.5), - vec2( 1.0, -0.5), - - vec2(-1.0, -1.0), - vec2( 0.0, -1.0), - vec2( 1.0, -1.0) - ); - - // sample in a 3x3 pattern to get a good area for average color - - // int maxIT = 9; - // for (int i = 0; i < maxIT; i++) { - // vec3 pos = vec3(0.0,1.0,0.0); - // pos.xy += normalize(sample3x3[i]) * vec2(0.3183,0.9000); - - // averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0; - // averageSkyCol += skyFromTex(pos,colortex4).rgb/maxIT/150.0; - // } - float maxIT = 20.0; - for (int i = 0; i < int(maxIT); i++) { - vec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) * vec2(1.0,0.9000); - vec3 pos = normalize(rodSample(ij)) * vec3(1.0,0.5,1.0) + vec3(0.0,0.5,0.0); - - averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0; - averageSkyCol += 1.5 * skyFromTex(pos,colortex4).rgb/maxIT/150.0; - } - - - // vec3 minimumlight = vec3(1.0) * 0.01 * MIN_LIGHT_AMOUNT + nightVision * 0.05; - - // luminance based reinhard is useful ouside of tonemapping too. - averageSkyCol_Clouds = averageSkyCol_Clouds / (1.0+luma(averageSkyCol_Clouds)*0.2); - - averageSkyCol = max(averageSkyCol, 0.0); // + minimumlight; - - #ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS - averageSkyCol = luma(averageSkyCol) * vec3(SKY_GROUND_R,SKY_GROUND_G,SKY_GROUND_B); - #endif - - -//////////////////////////////////////// -/// --- SUNLIGHT/MOONLIGHT STUFF --- /// -//////////////////////////////////////// - - vec2 planetSphere = vec2(0.0); - - float sunVis = clamp(sunElevation,0.0,0.04)/0.04*clamp(sunElevation,0.0,0.04)/0.04; - float moonVis = clamp(-moonElevation,0.0,0.04)/0.04*clamp(-moonElevation,0.0,0.04)/0.04; - - vec3 skyAbsorb = vec3(0.0); - sunColor = calculateAtmosphere(vec3(0.0), sunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,0.0); - sunColor = sunColorBase/4000.0 * skyAbsorb; - moonColor = moonColorBase/4000.0; - - #ifdef CUSTOM_MOON_ROTATION - #if LIGHTNING_SHADOWS > 0 - vec3 WmoonVec = customMoonVec2SSBO; - #else - vec3 WmoonVec = customMoonVecSSBO; - #endif - - float moonPhase = 1.0 - 0.5 * (dot(sunVec, WmoonVec) + 1.0); - moonVis = smoothstep(0.08, -0.03, -WmoonVec.y); - moonColor *= moonPhase; - - #endif - - // lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; - lightSourceColor = sunColor * sunVis + moonColor * moonVis; - #ifdef CUSTOM_MOON_ROTATION - lightSourceColor *= smoothstep(0.005, 0.09, length(WmoonVec - sunVec)); - #endif -#endif - -#if defined OVERWORLD_SHADER && defined TWILIGHT_FOREST_FLAG - lightSourceColor = vec3(0.0); - moonColor = vec3(0.0); -#endif - -/////////////////////////////////////////// -/// --- SCENE CONTROLLER PARAMETERS --- /// -/////////////////////////////////////////// - - // components are split for readability/user friendliness within this function - applySceneControllerParameters( - SC_parameters.smallCumulus.x, SC_parameters.smallCumulus.y, - SC_parameters.largeCumulus.x, SC_parameters.largeCumulus.y, - SC_parameters.altostratus.x, SC_parameters.altostratus.y, - SC_parameters.cirrus.x, SC_parameters.cirrus.y, - SC_parameters.fog.x, SC_parameters.fog.y - ); - -#ifdef Daily_Weather - #ifdef CHOOSE_RANDOM_WEATHER_PROFILE - int dayCounter = int(clamp(hash11(float(mod(worldDay, 1000))) * 10.0, 0,10)); - #else - int dayCounter = int(mod(worldDay, 10)); - #endif - - //----------- cloud coverage - vec4 weatherProfile_cloudCoverage[10] = vec4[]( - vec4(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage, DAY0_l3_coverage), - vec4(DAY1_l0_coverage, DAY1_l1_coverage, DAY1_l2_coverage, DAY1_l3_coverage), - vec4(DAY2_l0_coverage, DAY2_l1_coverage, DAY2_l2_coverage, DAY2_l3_coverage), - vec4(DAY3_l0_coverage, DAY3_l1_coverage, DAY3_l2_coverage, DAY3_l3_coverage), - vec4(DAY4_l0_coverage, DAY4_l1_coverage, DAY4_l2_coverage, DAY4_l3_coverage), - vec4(DAY5_l0_coverage, DAY5_l1_coverage, DAY5_l2_coverage, DAY5_l3_coverage), - vec4(DAY6_l0_coverage, DAY6_l1_coverage, DAY6_l2_coverage, DAY6_l3_coverage), - vec4(DAY7_l0_coverage, DAY7_l1_coverage, DAY7_l2_coverage, DAY7_l3_coverage), - vec4(DAY8_l0_coverage, DAY8_l1_coverage, DAY8_l2_coverage, DAY8_l3_coverage), - vec4(DAY9_l0_coverage, DAY9_l1_coverage, DAY9_l2_coverage, DAY9_l3_coverage) - ); - - //----------- cloud density - vec4 weatherProfile_cloudDensity[10] = vec4[]( - vec4(DAY0_l0_density, DAY0_l1_density, DAY0_l2_density, DAY0_l3_density), - vec4(DAY1_l0_density, DAY1_l1_density, DAY1_l2_density, DAY1_l3_density), - vec4(DAY2_l0_density, DAY2_l1_density, DAY2_l2_density, DAY2_l3_density), - vec4(DAY3_l0_density, DAY3_l1_density, DAY3_l2_density, DAY3_l3_density), - vec4(DAY4_l0_density, DAY4_l1_density, DAY4_l2_density, DAY4_l3_density), - vec4(DAY5_l0_density, DAY5_l1_density, DAY5_l2_density, DAY5_l3_density), - vec4(DAY6_l0_density, DAY6_l1_density, DAY6_l2_density, DAY6_l3_density), - vec4(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density, DAY7_l3_density), - vec4(DAY8_l0_density, DAY8_l1_density, DAY8_l2_density, DAY8_l3_density), - vec4(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density, DAY9_l3_density) - ); - - vec4 getWeatherProfile_coverage = weatherProfile_cloudCoverage[dayCounter]; - vec4 getWeatherProfile_density = weatherProfile_cloudDensity[dayCounter]; - - SC_parameters.smallCumulus = vec2(getWeatherProfile_coverage.r, getWeatherProfile_density.r); - SC_parameters.largeCumulus = vec2(getWeatherProfile_coverage.g, getWeatherProfile_density.g); - SC_parameters.altostratus = vec2(getWeatherProfile_coverage.b, getWeatherProfile_density.b); - SC_parameters.cirrus = vec2(getWeatherProfile_coverage.a, getWeatherProfile_density.a); - - //----------- fog density - vec2 weatherProfile_fogDensity[10] = vec2[]( - vec2(DAY0_ufog_density, DAY0_cfog_density), - vec2(DAY1_ufog_density, DAY1_cfog_density), - vec2(DAY2_ufog_density, DAY2_cfog_density), - vec2(DAY3_ufog_density, DAY3_cfog_density), - vec2(DAY4_ufog_density, DAY4_cfog_density), - vec2(DAY5_ufog_density, DAY5_cfog_density), - vec2(DAY6_ufog_density, DAY6_cfog_density), - vec2(DAY7_ufog_density, DAY7_cfog_density), - vec2(DAY8_ufog_density, DAY8_cfog_density), - vec2(DAY9_ufog_density, DAY9_cfog_density) - ); - - SC_parameters.fog = weatherProfile_fogDensity[dayCounter]; -#endif - -////////////////////////////// -/// --- EXPOSURE STUFF --- /// -////////////////////////////// - - float avgLuma = 0.0; - float m2 = 0.0; - int n=100; - vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); - float avgExp = 0.0; - float avgB = 0.0; - vec2 resScale = vec2(1920.,1080.)/clampedRes; - const int maxITexp = 50; - float w = 0.0; - for (int i = 0; i < maxITexp; i++){ - vec2 ij = R2_samples((frameCounter%2000)*maxITexp+i); - vec2 tc = 0.5 + (ij-0.5) * 0.7; - vec3 sp = texture2D(colortex6, tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; - avgExp += log(sqrt(luma(sp))); - avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); - } - - avgExp = exp(avgExp/maxITexp); - avgB = exp(avgB/maxITexp); - - avgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0); - - float L = max(avgBrightness,1e-8); - float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); - float expFunc = 0.5+0.5*tanh(log(L)); - - // float targetExposure = 1.0/log(L+1.05); - float targetExposure = (EXPOSURE_DARKENING * 0.35)/log(L+1.0 + EXPOSURE_BRIGHTENING * 0.05); - // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original - - avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); - float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; - - - exposure = max(targetExposure*EXPOSURE_MULTIPLIER, 0.0); - - float currCenterDepth = ld(texture2D(depthtex2, vec2(0.5)*RENDER_SCALE).r); - centerDepth = mix(sqrt(texelFetch2D(colortex4,ivec2(14,37),0).g/65000.0), currCenterDepth, clamp(DoF_Adaptation_Speed*exp(-0.016/frameTime+1.0)/(6.0+currCenterDepth*far),0.0,1.0)); - centerDepth = centerDepth * centerDepth * 65000.0; - - rodExposure = targetrodExposure; - - #ifndef AUTO_EXPOSURE - exposure = Manual_exposure_value; - rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); - #endif -} \ No newline at end of file diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index e60b016..ffc4faa 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -1,12 +1,11 @@ #include "/lib/settings.glsl" -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" uniform sampler2D colortex7; uniform sampler2D colortex5; uniform sampler2D colortex6; +uniform sampler2D colortex10; uniform sampler2D colortex14; uniform sampler2D depthtex0; uniform sampler2D depthtex1; @@ -150,6 +149,8 @@ float doVignette( in vec2 texcoord, in float noise){ layout (rgba16f) uniform image2D waveSim2; #endif +layout (RGBA8) uniform image2D cloudShadow; + void main() { float noise = blueNoise(); @@ -239,4 +240,8 @@ void main() { if (length(waveNormals.xy) > 0.0) gl_FragColor.rgb += waveNormals; } #endif + + // gl_FragColor.rgb = texture2D(colortex10, texcoord).rgb; + + //if(gl_FragCoord.x < 512 && gl_FragCoord.y < 512) gl_FragColor.rgb = vec3(imageLoad(cloudShadow, ivec2(gl_FragCoord.x,gl_FragCoord.y)*2).g); } diff --git a/shaders/dimensions/prepare.csh b/shaders/dimensions/prepare.csh index 84fc4c9..217f4e3 100644 --- a/shaders/dimensions/prepare.csh +++ b/shaders/dimensions/prepare.csh @@ -54,7 +54,7 @@ void main() { // Big shenanigans lol, don't ask, it just works - if(noSimOngoingCheck == true) { + if(noSimOngoingCheck) { noSimOngoing = true; } else { noSimOngoing = false; @@ -82,13 +82,13 @@ void main() { if(inShipCurrentFrame || inShipLastFrame || inShip2Frames) inShip = true; vec2 playerMovement = getPlayerMovementOffset(); - water_move_ompensation_counter_SSBO += playerMovement; + water_move_compensation_counter_SSBO += playerMovement; water_move_compensationSSBO = ivec2(0); - ivec2 offset = ivec2(trunc(water_move_ompensation_counter_SSBO)); + ivec2 offset = ivec2(trunc(water_move_compensation_counter_SSBO)); if (any(notEqual(offset, ivec2(0)))) { water_move_compensationSSBO = offset; - water_move_ompensation_counter_SSBO -= vec2(offset); + water_move_compensation_counter_SSBO -= vec2(offset); } } #endif diff --git a/shaders/dimensions/deferred.fsh b/shaders/dimensions/prepare4.fsh similarity index 67% rename from shaders/dimensions/deferred.fsh rename to shaders/dimensions/prepare4.fsh index 5cb0a02..bfa592b 100644 --- a/shaders/dimensions/deferred.fsh +++ b/shaders/dimensions/prepare4.fsh @@ -2,28 +2,8 @@ #define ReflectedFog -#ifdef CUSTOM_MOON_ROTATION - #include "/lib/SSBOs.glsl" -#endif +#include "/lib/SSBOs.glsl" -flat varying vec3 averageSkyCol_Clouds; -flat varying vec3 averageSkyCol; - -flat varying vec3 lightSourceColor; -flat varying vec3 sunColor; -flat varying vec3 moonColor; -// flat varying vec3 zenithColor; -// flat varying vec3 rayleighAborbance; - -// flat varying vec3 WsunVec; - -flat varying vec2 tempOffsets; - -flat varying float exposure; -flat varying float avgBrightness; -flat varying float rodExposure; -flat varying float avgL2; -flat varying float centerDepth; uniform float skyLightLevelSmooth; uniform float nightVision; @@ -234,89 +214,13 @@ float mixhistory = 0.06; #ifdef OVERWORLD_SHADER - - ////////////////////////////////////////////// - /// --- STORE DAILY WEATHER PARAMETERS --- /// - ////////////////////////////////////////////// - - // the idea is to store the 8 values, coverage + density of 3 cloud layers and 2 fog density values. - if (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 4){ - mixhistory = 10.0 * frameTime; - - gl_FragData[0].rgb = writeSceneControllerParameters(gl_FragCoord.xy, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - } - - /////////////////////////////// - /// --- STORE COLOR LUT --- /// - /////////////////////////////// - #ifdef SeparateAmbientColorRain - vec3 AmbientLightTint = mix(vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B), mix(vec3(AmbientLightRain_R, AmbientLightRain_G, AmbientLightRain_B), vec3(AmbientLightThunder_R, AmbientLightThunder_G, AmbientLightThunder_B), thunderStrength), rainStrength*noPuddleAreas); - #else - vec3 AmbientLightTint = vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B); - #endif - // --- the color of the atmosphere + the average color of the atmosphere. - vec3 skyGroundCol = skyFromTex(vec3(0, -1 ,0), colortex4).rgb * AmbientLightTint; - - - /// --- Save light values - if (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ){ - gl_FragData[0] = vec4(averageSkyCol_Clouds * AmbientLightTint,1.0); - if(worldTimeChangeCheck) mixhistory = 1.0; - } - - if (gl_FragCoord.x > 1. && gl_FragCoord.x < 2. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ){ - gl_FragData[0] = vec4(skyGroundCol/150.0,1.0); - if(worldTimeChangeCheck) mixhistory = 1.0; - } - - #ifdef ambientLight_only - if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) - gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); - - if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) - gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); - - if (gl_FragCoord.x > 13. && gl_FragCoord.x < 14. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) - gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); - #else - if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ){ - gl_FragData[0] = vec4(lightSourceColor,1.0); - if(worldTimeChangeCheck) mixhistory = 1.0; - } - - if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ){ - gl_FragData[0] = vec4(sunColor,1.0); - if(worldTimeChangeCheck) mixhistory = 1.0; - } - - if (gl_FragCoord.x > 9. && gl_FragCoord.x < 10. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ){ - gl_FragData[0] = vec4(moonColor,1.0); - if(worldTimeChangeCheck) mixhistory = 1.0; - } - #endif - - #if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT - // sample center pixel of albedo color, and interpolate it overtime. - if (gl_FragCoord.x > 15 && gl_FragCoord.x < 16 && gl_FragCoord.y > 2 && gl_FragCoord.y < 3){ - - mixhistory = 0.01; - - vec3 data = texelFetch2D(colortex1, ivec2(0.5/texelSize), 0).rgb; - vec3 decodeAlbedo = vec3(decodeVec2(data.x).x,decodeVec2(data.y).x, decodeVec2(data.z).x); - vec3 albedo = toLinear(decodeAlbedo); - - albedo = normalize(albedo + 1e-7) * (dot(albedo,vec3(0.21, 0.72, 0.07))*0.5+0.5); - - gl_FragData[0] = vec4(albedo,1.0); - } - #endif //////////////////////////////// /// --- ATMOSPHERE IMAGE --- /// //////////////////////////////// /// --- Sky only if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ - vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.,1.))/256.+tempOffsets/256.,0.0,1.0); + vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.,1.))/256.,0.0,1.0); vec3 viewVector = cartToSphere(p); vec2 planetSphere = vec2(0.0); @@ -340,11 +244,11 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ if(dot(-WmoonVec, WsunVec) < 0.9999) WmoonVec = -WmoonVec; #endif - sky = calculateAtmosphere((averageSkyCol*2000.0), viewVector, vec3(0.0,1.0,0.0), WsunVec, WmoonVec, planetSphere, skyAbsorb, 10, blueNoise()); + sky = calculateAtmosphere((averageSkyColSSBO*2000.0), viewVector, vec3(0.0,1.0,0.0), WsunVec, WmoonVec, planetSphere, skyAbsorb, 10, blueNoise()); // fade atmosphere conditions for rain away when you pass above the cloud plane. float heightRelativeToClouds = clamp(1.0 - max(eyeAltitude - CloudLayer0_height,0.0) / 200.0 ,0.0,1.0); - if(rainStrength > 0.0) sky = mix(sky, averageSkyCol*2000.0 * (skyAbsorb*0.7+0.3), clamp(1.0 - exp(pow(clamp(-viewVector.y+0.9,0.0,1.0),2) * -5.0),0.0,1.0) * heightRelativeToClouds * rainStrength); + if(rainStrength > 0.0) sky = mix(sky, averageSkyColSSBO*2000.0 * (skyAbsorb*0.7+0.3), clamp(1.0 - exp(pow(clamp(-viewVector.y+0.9,0.0,1.0),2) * -5.0),0.0,1.0) * heightRelativeToClouds * rainStrength); #ifdef AEROCHROME_MODE sky *= vec3(0.0, 0.18, 0.35); @@ -357,7 +261,7 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ /// --- Sky + clouds + fog if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+257.){ - vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0); + vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.,0.0,1.0); vec3 viewVector = cartToSphere(p); vec3 viewPos = mat3(gbufferModelView)*viewVector*1024.0; @@ -375,7 +279,7 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ #else WmoonVec = customMoonVecSSBO; #endif - vec3 moonColor2 = moonColor * mix(0.0, 1.0, clamp(WmoonVec.y + 0.05, 0.0, 0.1)/0.1); + vec3 moonColor2 = moonColorSSBO * mix(0.0, 1.0, clamp(WmoonVec.y + 0.05, 0.0, 0.1)/0.1); //suncol *= mix(0.0, 1.0, clamp(WmoonVec.y + 0.05, 0.0, 0.1)/0.1); #else #ifdef SMOOTH_MOON_ROTATION @@ -384,12 +288,12 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ WmoonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition + gbufferModelViewInverse[3].xyz); #endif if(dot(-WmoonVec, WsunVec) < 0.9999) WmoonVec = -WmoonVec; - vec3 moonColor2 = moonColor; + vec3 moonColor2 = moonColorSSBO; #endif vec3 sky = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy)-ivec2(257,0),0).rgb/150.0; - sky = mix(averageSkyCol_Clouds * AmbientLightTint * 0.25, sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5.0)); - vec3 suncol = lightSourceColor; + sky = mix(averageSkyCol_CloudsSSBO / 600.0, sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5.0)); + vec3 suncol = lightSourceColorSSBO; #ifdef ambientLight_only suncol = vec3(0.0); @@ -399,20 +303,20 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ vec2 cloudDistance = vec2(0.0); #ifdef CUSTOM_MOON_ROTATION - vec3 sunColor2 = sunColor * smoothstep(0.005, 0.09, length(WmoonVec - WsunVec)); + vec3 sunColor2 = sunColorSSBO * smoothstep(0.005, 0.09, length(WmoonVec - WsunVec)); #else - vec3 sunColor2 = sunColor; + vec3 sunColor2 = sunColorSSBO; #endif - vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, WmoonVec, sunColor2*2.5, moonColor2*2.5, skyGroundCol/30.0, cloudPlaneDistance, cloudDistance); + vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, WmoonVec, sunColor2*2.5/150.0, moonColor2*2.5/150.0, skyGroundColSSBO/30.0, cloudPlaneDistance, cloudDistance); WsunVec = mix(WmoonVec, WsunVec, clamp(float(sunElevation > 1e-5)*2.0-1.0 ,0,1)); float minimumLightAmount = 0.8*nightVision + 0.05 * mix(MIN_LIGHT_AMOUNT_INSIDE, MIN_LIGHT_AMOUNT, clamp(skyLightLevelSmooth, 0.0, 1.0)); - vec3 indirectLight_fog = skyGroundCol/30.0 + vec3(1.0) * minimumLightAmount; + vec3 indirectLight_fog = skyGroundColSSBO/30.0 + vec3(1.0) * minimumLightAmount; - vec4 volumetricFog = GetVolumetricFog(viewPos, WsunVec, vec2(noise, 1.0-noise), suncol*2.5, indirectLight_fog, averageSkyCol_Clouds*5.0, cloudPlaneDistance); + vec4 volumetricFog = GetVolumetricFog(viewPos, WsunVec, vec2(noise, 1.0-noise), suncol*2.5/150.0, indirectLight_fog, averageSkyCol_CloudsSSBO/30.0, cloudPlaneDistance); #if AURORA_LOCATION > 0 if (WsunVec.y < 0.0 && volumetricClouds.a > 0.01 @@ -447,7 +351,7 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ //Sky gradient with clouds if (gl_FragCoord.x > (fogPos.x - fogPos.x*0.22) && gl_FragCoord.y > 0.4 && gl_FragCoord.x < 535){ - vec2 p = clamp(floor(gl_FragCoord.xy-fogPos)/256.+tempOffsets/256.,-0.2,1.2); + vec2 p = clamp(floor(gl_FragCoord.xy-fogPos)/256.,-0.2,1.2); vec3 viewVector = cartToSphere(p); float noise = interleaved_gradientNoise_temporal(); @@ -517,10 +421,4 @@ vec3 currentFrame = gl_FragData[0].rgb*150.; gl_FragData[0].rgb = clamp(mix(frameHistory, currentFrame, clamp(mixhistory,0.0,1.0)),0.0,65000.); - -//Exposure values -if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) -gl_FragData[0] = vec4(exposure, avgBrightness, avgL2,1.0); -if (gl_FragCoord.x > 14. && gl_FragCoord.x < 15. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) -gl_FragData[0] = vec4(rodExposure, centerDepth,0.0, 1.0); } \ No newline at end of file diff --git a/shaders/dimensions/prepare4.vsh b/shaders/dimensions/prepare4.vsh new file mode 100644 index 0000000..7e9601f --- /dev/null +++ b/shaders/dimensions/prepare4.vsh @@ -0,0 +1,9 @@ +#include "/lib/settings.glsl" +#include "/lib/res_params.glsl" +uniform vec2 texelSize; + +void main() { + gl_Position = ftransform()*0.5+0.5; + gl_Position.xy = gl_Position.xy*vec2(18.+258*2,258.)*texelSize; + gl_Position.xy = gl_Position.xy*2.-1.0; +} \ No newline at end of file diff --git a/shaders/dimensions/voxy.json b/shaders/dimensions/voxy.json index 7cce4b9..63adc2a 100644 --- a/shaders/dimensions/voxy.json +++ b/shaders/dimensions/voxy.json @@ -59,7 +59,39 @@ ivec2 water_move_compensationSSBO; - vec2 water_move_ompensation_counter_SSBO; + vec2 water_move_compensation_counter_SSBO; + + vec2 SC_smallCumulus; + + vec2 SC_largeCumulus; + + vec2 SC_altostratus; + + vec2 SC_cirrus; + + vec2 SC_fog; + + vec3 sunColorSSBO; + + vec3 moonColorSSBO; + + vec3 lightSourceColorSSBO; + + vec3 averageSkyColSSBO; + + vec3 averageSkyCol_CloudsSSBO; + + vec3 skyGroundColSSBO; + + vec3 albedoSmoothSSBO; + + float avgBrightnessSSBO; + + float avgL2SSBO; + + float exposureSSBO; + + vec2 rodExposureDepthSSBO; }"}, "useViewportDims": true, diff --git a/shaders/dimensions/voxy_solid.glsl b/shaders/dimensions/voxy_solid.glsl index 2b3b398..873bbea 100644 --- a/shaders/dimensions/voxy_solid.glsl +++ b/shaders/dimensions/voxy_solid.glsl @@ -50,19 +50,18 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { /////// ----- SSS ON BLOCKS ----- /////// // strong if ( - blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SAPLING || blockID == BLOCK_AIR_WAVING + blockID == BLOCK_SSS_STRONG || blockID == BLOCK_AIR_WAVING ) { SSSAMOUNT = 1.0; } - // medium - if ( + else if ( blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_GROUND_WAVING_VERTICAL || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_UPPER || blockID == BLOCK_GRASS_TALL_LOWER ) { SSSAMOUNT = 0.5; } - if ( + else if ( blockID == BLOCK_SSS_WEAK || blockID == BLOCK_SSS_WEAK_2 || blockID == BLOCK_GLOW_LICHEN || blockID == BLOCK_SNOW_LAYERS || blockID == BLOCK_CARPET || blockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER || @@ -73,7 +72,7 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { // low #ifdef MISC_BLOCK_SSS - if( + else if( blockID == BLOCK_SSS_WEIRD || blockID == BLOCK_GRASS ){ SSSAMOUNT = 0.5; @@ -91,24 +90,24 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { // normal block lightsources if(blockID >= 100 && blockID < 300) EMISSIVE = 0.5; - if(blockID == 266 || blockID == 497) EMISSIVE = 0.2; // sculk stuff + else if(blockID == 266 || blockID == 497) EMISSIVE = 0.2; // sculk stuff - if(blockID == 195) EMISSIVE = 2.3; // glow lichen + else if(blockID == 195) EMISSIVE = 2.3; // glow lichen - if(blockID == 185) EMISSIVE = 1.5; // crying obsidian + else if(blockID == 185) EMISSIVE = 1.5; // crying obsidian - if(blockID == 105) EMISSIVE = 2.0; // brewing stand + else if(blockID == 105) EMISSIVE = 2.0; // brewing stand - if(blockID == 236) EMISSIVE = 1.0; // respawn anchor + else if(blockID == 236) EMISSIVE = 1.0; // respawn anchor - if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud + else if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud - if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster + else if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster - if(blockID == 244) EMISSIVE = 1.5; // soul fire + else if(blockID == 244) EMISSIVE = 1.5; // soul fire #if EMISSIVE_ORES > 0 - if(blockID == 502) EMISSIVE = EMISSIVE_ORES_STRENGTH; + else if(blockID == 502) EMISSIVE = EMISSIVE_ORES_STRENGTH; #endif #ifdef HARDCODED_EMISSIVES_APPROX @@ -117,8 +116,8 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { #endif Albedo.a = 1.0; - if(blockID == BLOCK_GROUND_WAVING_VERTICAL || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_LOWER || blockID == BLOCK_GRASS_TALL_UPPER ) Albedo.a = 0.60; - if(blockID == BLOCK_AIR_WAVING) Albedo.a = 0.55; + if(blockID == BLOCK_GROUND_WAVING_VERTICAL || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_LOWER || blockID == BLOCK_GRASS_TALL_UPPER) Albedo.a = 0.60; + else if(blockID == BLOCK_AIR_WAVING) Albedo.a = 0.55; vec3 normal = vec3(uint((parameters.face>>1)==2), uint((parameters.face>>1)==0), uint((parameters.face>>1)==1)) * (float(int(parameters.face)&1)*2-1); diff --git a/shaders/dimensions/voxy_translucent.glsl b/shaders/dimensions/voxy_translucent.glsl index e994005..adb5dfd 100644 --- a/shaders/dimensions/voxy_translucent.glsl +++ b/shaders/dimensions/voxy_translucent.glsl @@ -193,18 +193,9 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) if (normal.z<=-0.9) normal.xy = vec2(-0.0000000000001); - vec4 lightCol; vec3 WsunVec; vec3 WsunVec2; - lightCol.rgb = texelFetch(colortex4,ivec2(6,37),0).rgb; - - vec3 averageSkyCol_Clouds = texelFetch(colortex4,ivec2(0,37),0).rgb; - - #ifdef OVERWORLD_SHADER - readSceneControllerParameters(colortex4, SC_parameters.smallCumulus, SC_parameters.largeCumulus, SC_parameters.altostratus, SC_parameters.cirrus, SC_parameters.fog); - #endif - #ifdef CUSTOM_MOON_ROTATION vec3 WmoonVec = customMoonVecSSBO; @@ -218,13 +209,13 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) WsunVec = mix(WmoonVec, WsunVec, float(sunElevation > 1e-5)); WsunVec2 = mix(normalize(mat3(vxModelView)*WmoonVec), WsunVec2, float(sunElevation > 1e-5)); #else - lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; + float lightSourceCheck = float(sunElevation > 1e-5)*2.0 - 1.0; #ifdef SMOOTH_SUN_ROTATION - WsunVec = lightCol.a * WsunVecSmooth; + WsunVec = lightSourceCheck * WsunVecSmooth; #else - WsunVec = lightCol.a * normalize(mat3(vxModelViewInv) * sunPosition); + WsunVec = lightSourceCheck * normalize(mat3(vxModelViewInv) * sunPosition); #endif - WsunVec2 = lightCol.a * normalize(sunPosition); + WsunVec2 = lightSourceCheck * normalize(sunPosition); #endif // diffuse @@ -233,7 +224,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/2400.0; + vec3 DirectLightColor = lightSourceColorSSBO/2400.0; float NdotL = clamp(dot(normal, WsunVec),0.0,1.0); NdotL = clamp((-15.0 + NdotL*255.0) / 240.0 ,0.0,1.0); @@ -244,7 +235,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/900.0 ; + vec3 AmbientLightColor = averageSkyCol_CloudsSSBO/900.0 ; vec3 indirectNormal = normal.xyz / dot(abs(normal.xyz), vec3(1.0)); float SkylightDir = clamp(indirectNormal.y*0.7+0.3,0.0,1.0); diff --git a/shaders/entity.properties b/shaders/entity.properties index 3ef8dc0..931c94f 100644 --- a/shaders/entity.properties +++ b/shaders/entity.properties @@ -38,16 +38,19 @@ entity.1614=current_player ################################################ ## medium sss (same as strong sss for blocks) -entity.1801=giant ghast elder_guardian \ +entity.1801=giant ghast happy_ghast elder_guardian sniffer magma_cube \ naturalist:butterfly naturalist:firefly naturalist:caterpillar naturalist:dragonfly ## weak sss (same as weak sss for blocks) -entity.1802=furnace_minecart sheep frog chicken iron_golem snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin creeper drowned endermite evoker guardian hoglin husk phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager trader_llama \ +entity.1802=warden furnace_minecart sheep frog chicken iron_golem snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin creeper drowned endermite evoker guardian hoglin husk phantom piglin_brute pillager ravager silverfish vex vindicator witch zoglin zombie zombie_villager trader_llama nautilus zombie_nautilus camel_husk creaking bogged axolotl armadillo goat tadpole copper_golem \ naturalist:bear naturalist:snail naturalist:snake naturalist:coral_snake naturalist:rattlesnake naturalist:bluejay naturalist:cardinal naturalist:canary naturalist:robin naturalist:finch naturalist:sparrow naturalist:rhino naturalist:elephant naturalist:lion naturalist:zebra naturalist:giraffe naturalist:hippo naturalist:vulture naturalist:boar naturalist:catfish naturalist:alligator naturalist:bass naturalist:tortoise naturalist:duck #removed: player blaze magma_cube +## no sss +entity.1803=skeleton wither_skeleton skeleton_horse stray parched + ################################################ ###### REFLECTIVE TRANSLUCENTS ################################################ -entity.1803=slime \ No newline at end of file +entity.1804=slime \ No newline at end of file diff --git a/shaders/item.properties b/shaders/item.properties index c7c6eb1..a1dbc2e 100644 --- a/shaders/item.properties +++ b/shaders/item.properties @@ -56,7 +56,7 @@ item.1024=torch item.1025=copper_torch copper_lantern exposed_copper_lantern weathered_copper_lantern oxidized_copper_lantern waxed_copper_lantern waxed_exposed_copper_lantern waxed_weathered_copper_lantern waxed_oxidized_copper_lantern ## netherite trim is too dark and looks horrible when glowing -item.1026=trim_amethyst trim_emerald trim_diamond trim_resin trim_copper trim_gold trim_iron trim_quartz +item.1026=trim_amethyst trim_emerald trim_diamond trim_resin trim_copper trim_gold trim_iron trim_quartz trim_glowworm_silk trim_rose_quartz ## darker trims item.1027=trim_redstone trim_lapis \ No newline at end of file diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index ca29c85..8e62cd4 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - A Bliss Edit prefix.SHADER_VERSION_LABEL = V - value.SHADER_VERSION_LABEL.482 = 5.6.1 + value.SHADER_VERSION_LABEL.482 = 5.7.0 # if you're here to translate, this is not a joke, these do what they say profile.POTATO=§4Potato @@ -309,6 +309,7 @@ screen.Fog = Fog Settings option.VL_SAMPLES = Fog Samples option.FOG_START_HEIGHT = Fog Start Height option.BLOOMY_FOG = Bloomy Fog Multiplier + option.UNDERWATER_BLOOMY_FOG = Bloomy Fog Multiplier Underwater option.Haze_amount = Atmospheric Haze Density option.RainFog_amount = Rain Fog Multiplier option.BorderFog = Chunk Border Fog @@ -818,6 +819,7 @@ screen.Resource_Pack_Support = Materials / Resource Pack Support value.SUN_SPECULAR_MULT.1 = ON suffix.SUN_SPECULAR_MULT =x brighter option.ROUGHNESS_THRESHOLD = Reflection Visibilty Threshold + suffix.ROUGHNESS_THRESHOLD = % value.ROUGHNESS_THRESHOLD.0.0 = no threshold option.QUARTER_RES_SSR = Sample 1/4 resolution depth @@ -936,6 +938,11 @@ option.EMISSIVE_TRIMS_STRENGTH = Emissive Trims Brightness option.PLANET_CURVATURE = Planet Curvature §c(VOXY NOT SUPPORTED!) option.CURVATURE_AMOUNT = Curvature Amount +option.VANILLA_CHUNK_FADING = Chunks Fade In §c(Iris 1.10.3+) +value.VANILLA_CHUNK_FADING.0 = Off +value.VANILLA_CHUNK_FADING.1 = Fade In +value.VANILLA_CHUNK_FADING.2 = Fade In + Slide In + option.FISHEYE_EFFECT = Fisheye Effect option.FISHEYE_STRENGTH = Fisheye Strength diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index def3889..c868546 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - Bliss 编辑版 prefix.SHADER_VERSION_LABEL = 版本 - value.SHADER_VERSION_LABEL.482 = 5.6.1 + value.SHADER_VERSION_LABEL.482 = 5.7.0 # 如果你是来翻译的,这不是玩笑,这些选项的功能正如其名 profile.POTATO=§4土豆 (极低配置) @@ -870,6 +870,7 @@ screen.Resource_Pack_Support = 材质 / 资源包支持 value.SUN_SPECULAR_MULT.1 = 开启 suffix.SUN_SPECULAR_MULT =x 更亮 option.ROUGHNESS_THRESHOLD = 反射可见度阈值 + suffix.ROUGHNESS_THRESHOLD = % value.ROUGHNESS_THRESHOLD.0.0 = 无阈值 screen.Emissives = 自发光 / 发光纹理 diff --git a/shaders/lib/ROBOBO_sky.glsl b/shaders/lib/ROBOBO_sky.glsl index 3bf690a..0938e3d 100644 --- a/shaders/lib/ROBOBO_sky.glsl +++ b/shaders/lib/ROBOBO_sky.glsl @@ -109,7 +109,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s float GroundDarkening = max(planetGround * 0.7+0.3,clamp(sunVector.y*2.0,0.0,1.0)); - vec3 viewPos = (sky_planetRadius + 1.0 + max(eyeAltitude-300.0,0.0)*1.0) * upVector; + vec3 viewPos = (sky_planetRadius + 1.0 + max(eyeAltitude-300.0,0.0)) * upVector; vec2 aid = rsi(viewPos, viewVector, sky_atmosphereRadius); if (aid.y < 0.0) {transmittance = vec3(1.0); return vec3(0.0);} diff --git a/shaders/lib/SSBOs.glsl b/shaders/lib/SSBOs.glsl index d6a60ce..7c60a43 100644 --- a/shaders/lib/SSBOs.glsl +++ b/shaders/lib/SSBOs.glsl @@ -35,5 +35,37 @@ layout(binding = 0) buffer SSBO1 { ivec2 water_move_compensationSSBO; // 8 bytes - vec2 water_move_ompensation_counter_SSBO; // 8 bytes + vec2 water_move_compensation_counter_SSBO; // 8 bytes + + vec2 SC_smallCumulus; + + vec2 SC_largeCumulus; + + vec2 SC_altostratus; + + vec2 SC_cirrus; + + vec2 SC_fog; + + vec3 sunColorSSBO; + + vec3 moonColorSSBO; + + vec3 lightSourceColorSSBO; + + vec3 averageSkyColSSBO; + + vec3 averageSkyCol_CloudsSSBO; + + vec3 skyGroundColSSBO; + + vec3 albedoSmoothSSBO; + + float avgBrightnessSSBO; + + float avgL2SSBO; + + float exposureSSBO; + + vec2 rodExposureDepthSSBO; }; \ No newline at end of file diff --git a/shaders/lib/bokeh.glsl b/shaders/lib/bokeh.glsl index 9aec24c..3dfedac 100644 --- a/shaders/lib/bokeh.glsl +++ b/shaders/lib/bokeh.glsl @@ -400,7 +400,7 @@ vec2(-0.992326501717018, -0.062069798758671524) ); #endif -#if DOF_QUALITY == 5 || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE) +#if DOF_QUALITY == 5 // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE) const vec2 jitter_offsets[64] = vec2[]( vec2(0.08838834764831845, 0), vec2(-0.1846432401149469, -0.8598513673187094), diff --git a/shaders/lib/end_fog.glsl b/shaders/lib/end_fog.glsl index 6aa5428..4b1cd8e 100644 --- a/shaders/lib/end_fog.glsl +++ b/shaders/lib/end_fog.glsl @@ -321,7 +321,7 @@ vec4 GetVolumetricFog( float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); - lightFalloff = max(exp(-30.0 * lightFalloff),0.0); + lightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; diff --git a/shaders/lib/entities.glsl b/shaders/lib/entities.glsl index 1bda2a4..6a9cab1 100644 --- a/shaders/lib/entities.glsl +++ b/shaders/lib/entities.glsl @@ -16,4 +16,5 @@ #define ENTITY_CURRENT_PLAYER 1614 #define ENTITY_SSS_MEDIUM 1801 #define ENTITY_SSS_WEAK 1802 -#define ENTITY_SLIME 1803 \ No newline at end of file +#define ENTITY_SSS_NONE 1803 +#define ENTITY_SLIME 1804 \ No newline at end of file diff --git a/shaders/lib/nether_fog.glsl b/shaders/lib/nether_fog.glsl index a6b4166..0e3829f 100644 --- a/shaders/lib/nether_fog.glsl +++ b/shaders/lib/nether_fog.glsl @@ -128,7 +128,7 @@ vec4 GetVolumetricFog( float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); - lightFalloff = max(exp(-30.0 * lightFalloff),0.0); + lightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; diff --git a/shaders/lib/overworld_fog.glsl b/shaders/lib/overworld_fog.glsl index 5069883..b7a31ff 100644 --- a/shaders/lib/overworld_fog.glsl +++ b/shaders/lib/overworld_fog.glsl @@ -42,13 +42,14 @@ float cloudVol(in vec3 pos, float maxDistance ){ medium_gradientFog = mix(medium_gradientFog, 1.0, sandStorm+snowStorm); } - FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, SC_parameters.fog.x, SC_parameters.fog.y); + FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, SC_fog.x, SC_fog.y); return uniformFog + medium_gradientFog + cloudyFog + rainyFog; } float phaseRayleigh(float cosTheta) { - const vec2 mul_add = vec2(0.1, 0.28) / acos(-1.0); + const float oneOverPi = 1.0 / acos(-1.0); + const vec2 mul_add = vec2(0.1, 0.28) * oneOverPi; return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation } float fogPhase(float lightPoint){ @@ -102,10 +103,15 @@ vec4 GetVolumetricFog( vec3 dV = fragposition - start; vec3 dVWorld = playerPos - gbufferModelViewInverse[3].xyz; + // vec3 nPlayerPos = normalize(playerPos); + + float rayLength = length(dVWorld); + #if defined DISTANT_HORIZONS || defined VOXY - float maxLength = min(min(length(dVWorld), cloudPlaneDistance), max(far, dhVoxyRenderDistance))/length(dVWorld); + float maxLength = min(min(rayLength, cloudPlaneDistance), max(far, dhVoxyRenderDistance))/rayLength; + // float maxLength = min(length(dVWorld), max(far, dhVoxyRenderDistance))/length(dVWorld); #else - float maxLength = min(min(length(dVWorld), cloudPlaneDistance), far)/length(dVWorld); + float maxLength = min(min(rayLength, cloudPlaneDistance), far)/rayLength; #endif dV *= maxLength; @@ -126,13 +132,13 @@ vec4 GetVolumetricFog( // float atmosphereAbsorbance = 1.0; vec3 atmosphereAbsorbance = vec3(1.0); - float SdotV = dot(mat3(gbufferModelView) * sunVector, normalize(viewPosition)); + float SdotV = dot(sunVector, normalize(viewPosition)); ///// ----- fog lighting //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) float sunPhase = fogPhase(SdotV)*5.0;// phaseCloudFog(SdotV, 0.9) + phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5) * 5.0; // float sunPhase2 = (phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5)) * 5.0; - float skyPhase = 2.0 + pow(1.0-pow(1.0-clamp(normalize(playerPos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0 ;//pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; + float skyPhase = 0.5 + pow(1.0-pow(1.0-clamp(normalize(playerPos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0; float rayL = phaseRayleigh(SdotV); vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) ; @@ -259,7 +265,7 @@ vec4 GetVolumetricFog( float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); - lightFalloff = max(exp(-30.0 * lightFalloff),0.0); + lightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; diff --git a/shaders/lib/scene_controller.glsl b/shaders/lib/scene_controller.glsl index 9142ef5..5d8f761 100644 --- a/shaders/lib/scene_controller.glsl +++ b/shaders/lib/scene_controller.glsl @@ -153,14 +153,14 @@ void applySceneControllerParameters( ){ // these are the default parameters if no "trigger" or custom uniform is being used. // do not remove them - smallCumulusCoverage = CloudLayer0_coverage; - smallCumulusDensity = CloudLayer0_density; - largeCumulusCoverage = CloudLayer1_coverage; - largeCumulusDensity = CloudLayer1_density; - altostratusCoverage = CloudLayer2_coverage; - altostratusDensity = CloudLayer2_density; - cirrusCoverage = CloudLayer3_coverage; - cirrusDensity = CloudLayer3_density; + smallCumulusCoverage = CloudLayer0_coverage; + smallCumulusDensity = CloudLayer0_density; + largeCumulusCoverage = CloudLayer1_coverage; + largeCumulusDensity = CloudLayer1_density; + altostratusCoverage = CloudLayer2_coverage; + altostratusDensity = CloudLayer2_density; + cirrusCoverage = CloudLayer3_coverage; + cirrusDensity = CloudLayer3_density; fogA = 1.0; fogB = 1.0; @@ -190,23 +190,23 @@ void applySceneControllerParameters( // fog = (uniform fog density, cloudy fog density) // ... and more, eventually -#if !defined VOXY_PROGRAM && !defined CLOUD_SHADOW_PASS - flat varying struct sceneController { - vec2 smallCumulus; - vec2 largeCumulus; - vec2 altostratus; - vec2 cirrus; - vec2 fog; - } SC_parameters; -#else - struct sceneController { - vec2 smallCumulus; - vec2 largeCumulus; - vec2 altostratus; - vec2 cirrus; - vec2 fog; - } SC_parameters; -#endif +// #if !defined VOXY_PROGRAM && !defined CLOUD_SHADOW_PASS +// flat varying struct sceneController { +// vec2 smallCumulus; +// vec2 largeCumulus; +// vec2 altostratus; +// vec2 cirrus; +// vec2 fog; +// } SC_parameters; +// #else +// struct sceneController { +// vec2 smallCumulus; +// vec2 largeCumulus; +// vec2 altostratus; +// vec2 cirrus; +// vec2 fog; +// } SC_parameters; +// #endif vec3 writeSceneControllerParameters( vec2 uv, diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 166cbe2..719e9c8 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -39,8 +39,6 @@ const float WATER_SIM_FRAMETIME = 1.0/float(WATER_SIM_FRAMERATE); #define FAKE_DISPERSION_AMOUNT 4 // [0 1 2 3 4 5 6 7 8] #define REFRACTION_SMUDGE_AMOUNT 0 // [0 1 2 3 4 5 6 7 8] -#define USE_QUARTER_RES_DEPTH - //////////////////////////////////////// // ----- PLANT RELATED SETTINGS ----- // //////////////////////////////////////// @@ -215,6 +213,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define RainFog_amount 0.15 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define BLOOMY_FOG 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define UNDERWATER_BLOOMY_FOG 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] #define BLOOM_STRENGTH 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 50.0 75.0 100.0] #define CAVE_FOG @@ -226,7 +225,9 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define CaveFogColor_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define BorderFog -#define BorderFogIntensity 0.8 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] +#ifdef BorderFog +#endif +#define BorderFogIntensity 0.6 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #if !defined OVERWORLD_SHADER #undef BorderFog #endif @@ -285,7 +286,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. /////////////////////////////////////////////////// #define SUN_SPECULAR_MULT 1 // [0 1 2 3 4 5 6 7 8 9 10] -#define ROUGHNESS_THRESHOLD 0.3 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] +#define ROUGHNESS_THRESHOLD 30 // [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100] #define QUARTER_RES_SSR #ifdef Specular_Reflections @@ -696,7 +697,6 @@ const float aperture = focal/fstop; #define MANUAL_FOCUS -2 // [-2 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512] #define DoF_Adaptation_Speed 1.00 // [0.20 0.21 0.23 0.24 0.25 0.27 0.29 0.30 0.32 0.34 0.36 0.39 0.41 0.43 0.46 0.49 0.52 0.55 0.59 0.62 0.66 0.70 0.74 0.79 0.84 0.89 0.94 1.00 1.06 1.13 1.20 1.27 1.35 1.43 1.52 1.61 1.71 1.82 1.93 2.05 2.18 2.31 2.45 2.60 2.76 2.93 3.11 3.30 3.51 3.72 3.95 4.19 4.45 4.73 5.02 5.33 5.65 6.00] -// #define DOF_JITTER_SHADOW // // #define DOF_JITTER_FOCUS 32 // [-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512] #define JITTER_STRENGTH 1.0 // sorry [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0] #define FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5] @@ -989,6 +989,8 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define CAVE_DETECTION 1.0 // [0.0 1.0 2.0] #define FORCE_TRANSLUCENT_GLASS +#define ENCHANT_GLINT_BRIGHTNESS 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] + // #define PLANET_CURVATURE #define CURVATURE_AMOUNT 1.0 // [-10.0 -9.0 -8.0 -7.0 -6.0 -5.0 -4.0 -3.0 -2.0 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] @@ -996,6 +998,8 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #undef PLANET_CURVATURE #endif +#define VANILLA_CHUNK_FADING 1 // [0 1 2] + // #define SHADER_GRASS #ifdef SHADER_GRASS @@ -1028,12 +1032,12 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) /// distant horizons stuff #define DISTORT_SHADOWMAP // #define DISTANT_HORIZONS_SHADOWMAP -#ifdef DISTANT_HORIZONS_SHADOWMAP - #undef DISTORT_SHADOWMAP - - const float shadowNearPlane = -1.0; - const float shadowFarPlane = -1.0; -#endif +//#ifdef DISTANT_HORIZONS_SHADOWMAP +// #undef DISTORT_SHADOWMAP +// +// const float shadowNearPlane = -1.0; +// const float shadowFarPlane = -1.0; +//#endif // #define DH_SHADOWPROJECTIONTWEAK #define DH_OVERDRAW_PREVENTION diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl index e60115d..de85fc5 100644 --- a/shaders/lib/specular.glsl +++ b/shaders/lib/specular.glsl @@ -146,35 +146,35 @@ vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, boo #if (defined VOXY && defined VOXY_REFLECTIONS) || (defined DISTANT_HORIZONS && defined DH_SCREENSPACE_REFLECTIONS) - const float biasAmount2 = 0.000015; + const float biasAmount2 = 0.000015; - _near = dhVoxyNearPlane; - _far = dhVoxyFarPlane; + _near = dhVoxyNearPlane; + _far = dhVoxyFarPlane; - vec3 clipPosition2 = toClipSpace3_DH(position, true); - float rayLength2 = ((position.z + dir.z * _far*sqrt(3.)) > -_near) ? (-_near -position.z) / dir.z : _far*sqrt(3.); + vec3 clipPosition2 = toClipSpace3_DH(position, true); + float rayLength2 = ((position.z + dir.z * _far*sqrt(3.)) > -_near) ? (-_near -position.z) / dir.z : _far*sqrt(3.); - vec3 direction2 = toClipSpace3_DH(position + dir*rayLength2, true) - clipPosition2; //convert to clip space + vec3 direction2 = toClipSpace3_DH(position + dir*rayLength2, true) - clipPosition2; //convert to clip space - //get at which length the ray intersects with the edge of the screen - vec3 maxLengths2 = (step(0.0, direction2) - clipPosition2) / direction2; - float mult2 = min(min(maxLengths2.x, maxLengths2.y), maxLengths2.z); - vec3 stepv2 = direction2 * mult2 / quality; + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths2 = (step(0.0, direction2) - clipPosition2) / direction2; + float mult2 = min(min(maxLengths2.x, maxLengths2.y), maxLengths2.z); + vec3 stepv2 = direction2 * mult2 / quality; - clipPosition2.xy *= RENDER_SCALE; - stepv2.xy *= RENDER_SCALE; + clipPosition2.xy *= RENDER_SCALE; + stepv2.xy *= RENDER_SCALE; - vec3 spos2 = clipPosition2 + stepv2*dither; - spos2 += stepv2*0.5 + vec3(0.5*texelSize,0.0); // small offsets to reduce artifacts from precision differences. - - #if defined DEFERRED_SPECULAR && defined TAA - spos2.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; - #endif + vec3 spos2 = clipPosition2 + stepv2*dither; + spos2 += stepv2*0.5 + vec3(0.5*texelSize,0.0); // small offsets to reduce artifacts from precision differences. + + #if defined DEFERRED_SPECULAR && defined TAA + spos2.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + #endif - float minZ2 = spos2.z - 0.00025 / linZ2(spos2.z, _near, _far); - float maxZ2 = spos2.z; + float minZ2 = spos2.z - 0.00025 / linZ2(spos2.z, _near, _far); + float maxZ2 = spos2.z; #endif vec3 hitPos = vec3(1.1); @@ -356,33 +356,35 @@ float getReflectionVisibility(float f0, float roughness){ // the goal is to determine if the reflection is even visible. // if it reaches a point in smoothness or reflectance where it is not visible, allow it to interpolate to diffuse lighting. - float thresholdValue = ROUGHNESS_THRESHOLD; + #if ROUGHNESS_THRESHOLD < 1 + return 0.0; + #else + float thresholdValue = ROUGHNESS_THRESHOLD/100.0; - if(thresholdValue < 0.01) return 0.0; + // the visibility gradient should only happen for dialectric materials. because metal is always shiny i guess or something + float dialectrics = max(f0*255.0 - 26.0,0.0)/229.0; + float value = 0.35; // so to a value you think is good enough. + float thresholdA = min(max( (1.0-dialectrics) - value, 0.0)/value, 1.0); - // the visibility gradient should only happen for dialectric materials. because metal is always shiny i guess or something - float dialectrics = max(f0*255.0 - 26.0,0.0)/229.0; - float value = 0.35; // so to a value you think is good enough. - float thresholdA = min(max( (1.0-dialectrics) - value, 0.0)/value, 1.0); + // use perceptual smoothness instead of linear roughness. it just works better i guess + float smoothness = 1.0-sqrt(roughness); + value = thresholdValue; // this one is typically want you want to scale. + float thresholdB = min(max(smoothness - value, 0.0)/value, 1.0); + + // preserve super smooth reflections. if thresholdB's value is really high, then fully smooth, low f0 materials would be removed (like water). + value = 0.1; // super low so only the smoothest of materials are includes. + float thresholdC = 1.0-min(max(value - (1.0-smoothness), 0.0)/value, 1.0); + + float visibilityGradient = max(thresholdA*thresholdC - thresholdB,0.0); - // use perceptual smoothness instead of linear roughness. it just works better i guess - float smoothness = 1.0-sqrt(roughness); - value = thresholdValue; // this one is typically want you want to scale. - float thresholdB = min(max(smoothness - value, 0.0)/value, 1.0); - - // preserve super smooth reflections. if thresholdB's value is really high, then fully smooth, low f0 materials would be removed (like water). - value = 0.1; // super low so only the smoothest of materials are includes. - float thresholdC = 1.0-min(max(value - (1.0-smoothness), 0.0)/value, 1.0); - - float visibilityGradient = max(thresholdA*thresholdC - thresholdB,0.0); + // a curve to make the gradient look smooth/nonlinear. just preference + visibilityGradient = 1.0-visibilityGradient; + visibilityGradient *=visibilityGradient; + visibilityGradient = 1.0-visibilityGradient; + visibilityGradient *=visibilityGradient; - // a curve to make the gradient look smooth/nonlinear. just preference - visibilityGradient = 1.0-visibilityGradient; - visibilityGradient *=visibilityGradient; - visibilityGradient = 1.0-visibilityGradient; - visibilityGradient *=visibilityGradient; - - return visibilityGradient; + return visibilityGradient; + #endif } // derived from N and K from labPBR wiki https://shaderlabs.org/wiki/LabPBR_Material_Standard diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index b9cf931..b05622d 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -139,7 +139,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, #ifdef CloudLayer3 case CIRRUS_LAYER: { - coverage = SC_parameters.cirrus.x; + coverage = SC_cirrus.x; vec2 coord = position.zx + 6.0*cloud_movement; @@ -177,7 +177,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, #ifdef CloudLayer2 case ALTOSTRATUS_LAYER: { - coverage = SC_parameters.altostratus.x; + coverage = SC_altostratus.x; coverage += Rain_coverage * rainStrength; coverage += Thunder_coverage * thunderStrength; @@ -198,7 +198,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, #ifdef CloudLayer1 case LARGECUMULUS_LAYER: { - coverage = SC_parameters.largeCumulus.x; + coverage = SC_largeCumulus.x; coverage += Rain_coverage * rainStrength; coverage += Thunder_coverage * thunderStrength; @@ -216,7 +216,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, #ifdef CloudLayer0 case SMALLCUMULUS_LAYER: { - coverage = SC_parameters.smallCumulus.x; + coverage = SC_smallCumulus.x; coverage += Rain_coverage * rainStrength; coverage += Thunder_coverage * thunderStrength; @@ -252,7 +252,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, // shrink the coverage slightly so it is a similar shape to clouds with erosion. this helps cloud lighting and cloud shadows. if (LOD < 1) return max(shape - 0.27*erodeAmount,0.0); - samplePos.xz += cloud_movement/4.0; + samplePos.xz -= cloud_movement/4.0; // da wind // if(LayerIndex == SMALLCUMULUS_LAYER) @@ -441,15 +441,15 @@ float GetCloudShadow(vec3 playerPos, vec3 sunVector){ #ifdef CloudLayer0 startPosition = playerPos + startOffset * max((CloudLayer0_height + 20.0) - playerPos.y, 0.0); - cloudShadows = getCloudShape(SMALLCUMULUS_LAYER, 0, startPosition, CloudLayer0_height, CloudLayer0_height + CloudLayer0_tallness/CloudLayer0_scale)*(getRainDensity(SC_parameters.smallCumulus.y)); + cloudShadows = getCloudShape(SMALLCUMULUS_LAYER, 0, startPosition, CloudLayer0_height, CloudLayer0_height + CloudLayer0_tallness/CloudLayer0_scale)*(getRainDensity(SC_smallCumulus.y)); #endif #ifdef CloudLayer1 startPosition = playerPos + startOffset * max((CloudLayer1_height + 30.0) - playerPos.y, 0.0); - cloudShadows += getCloudShape(LARGECUMULUS_LAYER, 0, startPosition, CloudLayer1_height, CloudLayer1_height + CloudLayer1_tallness/CloudLayer1_scale)*(getRainDensity(SC_parameters.largeCumulus.y)); + cloudShadows += getCloudShape(LARGECUMULUS_LAYER, 0, startPosition, CloudLayer1_height, CloudLayer1_height + CloudLayer1_tallness/CloudLayer1_scale)*(getRainDensity(SC_largeCumulus.y)); #endif #ifdef CloudLayer2 startPosition = playerPos + startOffset * max(CloudLayer2_height - playerPos.y, 0.0); - cloudShadows += getCloudShape(ALTOSTRATUS_LAYER, 0, startPosition, CloudLayer2_height, CloudLayer2_height + 5.0)*SC_parameters.altostratus.y * (1.0-abs(sunVector.y)); + cloudShadows += getCloudShape(ALTOSTRATUS_LAYER, 0, startPosition, CloudLayer2_height, CloudLayer2_height + 5.0)*SC_altostratus.y * (1.0-abs(sunVector.y)); #endif #if CUMULONIMBUS > 0 float distanceFactor = clamp(degrees(acos(dot(vec3(0.0, 1.0, 0.0), sunVector))), 45.0, 90.0) - 45.0; @@ -700,10 +700,10 @@ vec4 raymarchCloud( vec3 newPos = rayPosition - cameraPosition; if(LayerIndex == ALTOSTRATUS_LAYER) { - density = SC_parameters.altostratus.y; + density = SC_altostratus.y; density *= smoothstep(CloudLayer2_distance, CloudLayer2_distance*0.5, length(newPos)); } else { - density = SC_parameters.cirrus.y; + density = SC_cirrus.y; density *= smoothstep(CloudLayer3_distance, CloudLayer3_distance*0.5, length(newPos)); } if (density == 0.0) return vec4(color, totalAbsorbance); @@ -757,13 +757,13 @@ vec4 raymarchCloud( vec3 newPos = rayPosition - cameraPosition; - float densityLarge = getRainDensity(SC_parameters.largeCumulus.y); + float densityLarge = getRainDensity(SC_largeCumulus.y); float density = 0.0; - if(LayerIndex == SMALLCUMULUS_LAYER) density = getRainDensity(SC_parameters.smallCumulus.y) * smoothstep(CloudLayer0_distance, CloudLayer0_distance*0.5, length(newPos)); + if(LayerIndex == SMALLCUMULUS_LAYER) density = getRainDensity(SC_smallCumulus.y) * smoothstep(CloudLayer0_distance, CloudLayer0_distance*0.5, length(newPos)); - if(LayerIndex == LARGECUMULUS_LAYER) density = getRainDensity(SC_parameters.largeCumulus.y) * smoothstep(CloudLayer1_distance, CloudLayer1_distance*0.5, length(newPos)); + if(LayerIndex == LARGECUMULUS_LAYER) density = getRainDensity(SC_largeCumulus.y) * smoothstep(CloudLayer1_distance, CloudLayer1_distance*0.5, length(newPos)); if(LayerIndex == CUMULONIMBUS_LAYER) density = 0.8; @@ -900,7 +900,7 @@ vec4 raymarchCloud( // altostratus layer -> all cumulus layers #ifdef CloudLayer2 shadowStartPos = rayPosition + mainLightVec / abs(mainLightVec.y) * max(CloudLayer2_height - rayPosition.y, 0.0); - sunShadowMask += getCloudShape(ALTOSTRATUS_LAYER, 0, shadowStartPos, CloudLayer2_height, CloudLayer2_height) * SC_parameters.altostratus.y * (1.0-abs(mainLightVec.y)); + sunShadowMask += getCloudShape(ALTOSTRATUS_LAYER, 0, shadowStartPos, CloudLayer2_height, CloudLayer2_height) * SC_altostratus.y * (1.0-abs(mainLightVec.y)); #endif vec3 lighting = getCloudLighting(LayerIndex, shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering*sh, moonScattering*sh, indirectShadowMask, skyScattering*skylightOcclusion, rayPosition, backScatterPhase, phaseLevels, backScatterPhase2, phaseLevels2); @@ -1416,7 +1416,7 @@ float raymarchCloudSimple( if(LayerIndex == ALTOSTRATUS_LAYER){ vec3 newPos = rayPosition - startPos; - float density = SC_parameters.altostratus.y; + float density = SC_altostratus.y; density *= smoothstep(CloudLayer2_distance, CloudLayer2_distance*0.5, length(newPos)); if (density == 0.0) return totalAbsorbance; @@ -1442,12 +1442,12 @@ float raymarchCloudSimple( vec3 newPos = rayPosition - startPos; - float densityLarge = getRainDensity(SC_parameters.largeCumulus.y); + float densityLarge = getRainDensity(SC_largeCumulus.y); float density = 0.0; - if(LayerIndex == SMALLCUMULUS_LAYER) density = getRainDensity(SC_parameters.smallCumulus.y) * smoothstep(CloudLayer0_distance, CloudLayer0_distance*0.5, length(newPos)); - if(LayerIndex == LARGECUMULUS_LAYER) density = getRainDensity(SC_parameters.largeCumulus.y) * smoothstep(CloudLayer1_distance, CloudLayer1_distance*0.5, length(newPos)); + if(LayerIndex == SMALLCUMULUS_LAYER) density = getRainDensity(SC_smallCumulus.y) * smoothstep(CloudLayer0_distance, CloudLayer0_distance*0.5, length(newPos)); + if(LayerIndex == LARGECUMULUS_LAYER) density = getRainDensity(SC_largeCumulus.y) * smoothstep(CloudLayer1_distance, CloudLayer1_distance*0.5, length(newPos)); if(LayerIndex == CUMULONIMBUS_LAYER) density = 0.8; if (density < 0.01) return totalAbsorbance; diff --git a/shaders/lib/voxel_write.glsl b/shaders/lib/voxel_write.glsl index 7b37d2a..d6f99c3 100644 --- a/shaders/lib/voxel_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -58,7 +58,7 @@ void PopulateShadowVoxel(const in vec3 playerPos) { voxelId = uint(blockEntityId); } else if (currentRenderedItemId > 100 && currentRenderedItemId < 300) { - #if MC_VERSION > 12100 && MC_VERSION != 12109 && MC_VERSION != 12110 + #if MC_VERSION > 12100 && MC_VERSION != 12109 && MC_VERSION != 12110 if (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_CURRENT_PLAYER) #else if (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_PLAYER) diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 8b29e51..c757ab5 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -9,10 +9,10 @@ profile.VERY_LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LP profile.LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:1536 shadowDistance:112.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.9 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 profile.MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 profile.ALTERNATE_MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.5 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 -profile.HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ALTERNATE_HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.5 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 -profile.HIGH_GRASS = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ALTERNATE_HIGH_GRASS = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.5 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 +profile.HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ALTERNATE_HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.5 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 +profile.HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ALTERNATE_HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.5 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 profile.VERY_HIGH = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSAO_HQ RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:3172 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 profile.ULTRA = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:2 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:1 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSGI RAY_COUNT:6 VL_SAMPLES:10 REALMOON shadowMapResolution:4096 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 @@ -27,7 +27,7 @@ separateAo = true rain.depth = false beacon.beam.depth = true -iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE SSBO TESSELLATION_SHADERS +iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE SSBO TESSELLATION_SHADERS FADE_VARIABLE #ifdef REALMOON customTexture.moon = texture/moon.png @@ -200,7 +200,7 @@ alphaTest.gbuffers_beaconbeam = off alphaTest.gbuffers_armor_glint = off alphaTest.gbuffers_damagedblock = off -sliders = EMISSIVE_TRIMS_STRENGTH RAY_STEPS FISHEYE_STRENGTH SCREENSPACE_CONTACT_SHADOWS PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL RAINBOW_SELECT_BOX CLOUD_SAMPLES AmbientLightThunder_R AmbientLightThunder_G AmbientLightThunder_B GRASS_RANDOMNESS GRASS_WAVY_STRENGTH GRASS_RANGE GRASS_QUALITY GRASS_DENSITY REPLACE_SHORT_GRASS GRASS_THICKNESS_FALLOFF SHORT_GRASS_HEIGHT BASE_GRASS_HEIGHT GRASS_BASE_THICKNESS FILM_GRAIN_STRENGTH PUDDLE_MODE FLASHLIGHT_SHADOWS_STRENGTH LPV_HANDHELD_SHADOWS_STRENGTH AURORA_R AURORA_G AURORA_B AURORA_LOCATION AURORA_MOON AURORA_BRIGHTNESS AURORA_CHANCE WATER_SIM_STRENGTH WATER_SIM_FRAMERATE WATER_SIM_SCALE WATER_SIM_DISTANCE dayStartTick nightStartTick daySpeed nightSpeed FAKE_REFRACTION_AMOUNT FAKE_DISPERSION_AMOUNT REFRACTION_SMUDGE_AMOUNT NORMAL_MAP_MULT DEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY RAINBOW_TIME RAINBOW RAINBOW_DISTANCE RAINBOW_BRIGHTNESS VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B END_HAZE_DENSTIY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY Max_Filter_Depth_END Min_Shadow_Filter_Radius_END MOON_TIME_OFFSET EARTH_ROTATION_TILT CUSTOM_SHADOWS_QUALITY MOON_LATITUDE MOON_SIZE_SETTING MONTH_LENGTH LIGHTNING_SHADOWS WHITE_BALANCE STARS_BRIGHTNESS STARS_AMOUNT AmbientLightEnd_R AmbientLightEnd_G AmbientLightEnd_B CloudLayer0_distance CloudLayer1_distance CloudLayer2_distance CloudLayer3_distance BLEND_FACTOR_DURING_MOVEMENT CloudLayer0_detail CloudLayer1_detail MIN_LIGHT_AMOUNT_INSIDE CUMULONIMBUS_FADE_TIME CUMULONIMBUS NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF WAVE_DETAIL DH_CHUNK_FADING CLOUD_MOVEMENT_TYPE LIGHTLEAKFIX_MODE EMISSIVE_ORES_STRENGTH RIPPLE_STRENGTH RIPPLE_INTENSITY CUSTOM_LIGHTNING_SCALE CUSTOM_LIGHTNING_R CUSTOM_LIGHTNING_G CUSTOM_LIGHTNING_B CUSTOM_LIGHTNING_TEX CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_POS_Z CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_AMOUNT CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLightRain_R AmbientLightRain_G AmbientLightRain_B AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Sharpness LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal fstop MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_SCALE BLOOM_QUALITY VL_RENDER_SCALE RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 ROUGHNESS_THRESHOLD SUN_SPECULAR_MULT reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = UNDERWATER_BLOOMY_FOG ENCHANT_GLINT_BRIGHTNESS EMISSIVE_TRIMS_STRENGTH RAY_STEPS FISHEYE_STRENGTH SCREENSPACE_CONTACT_SHADOWS PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL RAINBOW_SELECT_BOX CLOUD_SAMPLES AmbientLightThunder_R AmbientLightThunder_G AmbientLightThunder_B GRASS_RANDOMNESS GRASS_WAVY_STRENGTH GRASS_RANGE GRASS_QUALITY GRASS_DENSITY REPLACE_SHORT_GRASS GRASS_THICKNESS_FALLOFF SHORT_GRASS_HEIGHT BASE_GRASS_HEIGHT GRASS_BASE_THICKNESS FILM_GRAIN_STRENGTH PUDDLE_MODE FLASHLIGHT_SHADOWS_STRENGTH LPV_HANDHELD_SHADOWS_STRENGTH AURORA_R AURORA_G AURORA_B AURORA_LOCATION AURORA_MOON AURORA_BRIGHTNESS AURORA_CHANCE WATER_SIM_STRENGTH WATER_SIM_FRAMERATE WATER_SIM_SCALE WATER_SIM_DISTANCE dayStartTick nightStartTick daySpeed nightSpeed FAKE_REFRACTION_AMOUNT FAKE_DISPERSION_AMOUNT REFRACTION_SMUDGE_AMOUNT NORMAL_MAP_MULT DEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY RAINBOW_TIME RAINBOW RAINBOW_DISTANCE RAINBOW_BRIGHTNESS VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B END_HAZE_DENSTIY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY Max_Filter_Depth_END Min_Shadow_Filter_Radius_END MOON_TIME_OFFSET EARTH_ROTATION_TILT CUSTOM_SHADOWS_QUALITY MOON_LATITUDE MOON_SIZE_SETTING MONTH_LENGTH LIGHTNING_SHADOWS WHITE_BALANCE STARS_BRIGHTNESS STARS_AMOUNT AmbientLightEnd_R AmbientLightEnd_G AmbientLightEnd_B CloudLayer0_distance CloudLayer1_distance CloudLayer2_distance CloudLayer3_distance BLEND_FACTOR_DURING_MOVEMENT CloudLayer0_detail CloudLayer1_detail MIN_LIGHT_AMOUNT_INSIDE CUMULONIMBUS_FADE_TIME CUMULONIMBUS NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF WAVE_DETAIL DH_CHUNK_FADING CLOUD_MOVEMENT_TYPE LIGHTLEAKFIX_MODE EMISSIVE_ORES_STRENGTH RIPPLE_STRENGTH RIPPLE_INTENSITY CUSTOM_LIGHTNING_SCALE CUSTOM_LIGHTNING_R CUSTOM_LIGHTNING_G CUSTOM_LIGHTNING_B CUSTOM_LIGHTNING_TEX CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_POS_Z CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_AMOUNT CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLightRain_R AmbientLightRain_G AmbientLightRain_B AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Sharpness LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal fstop MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_SCALE BLOOM_QUALITY VL_RENDER_SCALE RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 ROUGHNESS_THRESHOLD SUN_SPECULAR_MULT reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -309,7 +309,7 @@ SHADER_VERSION_LABEL \ ######## WORLD screen.World.columns=1 - screen.World = [Water] [Foliage] [World_Effects] [AURORA_SETTINGS] PLANET_CURVATURE CURVATURE_AMOUNT [Sky_coefficients] SKY_GROUND STARS_AMOUNT STARS_BRIGHTNESS EMISSIVE_ORES EMISSIVE_ORES_STRENGTH + screen.World = [Water] [Foliage] [World_Effects] [AURORA_SETTINGS] PLANET_CURVATURE CURVATURE_AMOUNT VANILLA_CHUNK_FADING [Sky_coefficients] SKY_GROUND STARS_AMOUNT STARS_BRIGHTNESS EMISSIVE_ORES EMISSIVE_ORES_STRENGTH ### WAVING STUFF screen.Foliage.columns=2 @@ -410,8 +410,8 @@ SHADER_VERSION_LABEL \ ### FOG screen.Fog.columns=2 screen.Fog = VL_RENDER_SCALE VL_SAMPLES \ - FOG_START_HEIGHT BLOOMY_FOG \ - \ + FOG_START_HEIGHT \ + BLOOMY_FOG UNDERWATER_BLOOMY_FOG \ Haze_amount RainFog_amount \ [TOD_fog] [Cave_Fog] \ [END_AND_NETHER_FOG] \ @@ -515,7 +515,7 @@ SHADER_VERSION_LABEL \ screen.Misc_Settings = [EXPERIMENTAL_STUFF] [DEBUG_STUFF] [LEGACY_STUFF] TRANSLUCENT_ENTITIES [selection_box_outline] [scene_controller] AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED screen.EXPERIMENTAL_STUFF.columns = 2 - screen.EXPERIMENTAL_STUFF = BLOOMY_PARTICLES BIOME_TINT_WATER HYPER_DETAILED_WAVES LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT Vanilla_like_water INCLUDE_UNLISTED_ENTITIES PIXELATED PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL HARDCODED_EMISSIVES_APPROX TRANSLUCENT_ENTITIES_DITHER_FALLBACK + screen.EXPERIMENTAL_STUFF = BLOOMY_PARTICLES BIOME_TINT_WATER HYPER_DETAILED_WAVES LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT Vanilla_like_water INCLUDE_UNLISTED_ENTITIES PIXELATED PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL HARDCODED_EMISSIVES_APPROX TRANSLUCENT_ENTITIES_DITHER_FALLBACK ENCHANT_GLINT_BRIGHTNESS screen.DEBUG_STUFF.columns = 2 screen.DEBUG_STUFF = [the_end_orb] DEBUG_VIEW display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX ISOLATE_RESOURCEPACK_SKY CAVE_DETECTION @@ -644,7 +644,7 @@ uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, # force LUT accumulation to have a high blend factor after a certain amount of time uniform.float.dayChangeSmooth = smooth(if(abs(smooth(worldDay, 0.05, 0.05) - worldDay) > 0.01, 0.0, 1.0), 300.0, 0.0) -uniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) > 0.01 +uniform.bool.worldTimeChangeCheck = if(frameCounter < 2, 1<2, abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) > 0.01) #if defined WATER_ON_CAMERA_EFFECT uniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0) @@ -705,6 +705,10 @@ uniform.float.wetnessAmount = smooth(if(biome_precipitation == 1 && rainStrength variable.float.lightlevel = eyeBrightness.y/240.0 uniform.float.skyLightLevelSmooth = smooth(lightlevel,3.0,3.0) +#if defined RIPPLE_PUDDLES || defined RIPPLE_WATER + uniform.float.rippleAmount = smooth(if(biome_precipitation == 1 && rainStrength > 0.01, 1.0, 0.0), 5.0, 20.0) +#endif + #if RAINBOW == 1 uniform.float.rainbowAmount = smooth(if(biome_precipitation == 1 && rainStrength > 0.01, 1.0, 0.0), 400.0, RAINBOW_TIME) #endif @@ -969,12 +973,10 @@ uniform.int.dhVoxyRenderDistance = dhRenderDistance program.world-1/shadowcomp.enabled = false #endif -#if defined CUSTOM_MOON_ROTATION || defined END_ISLAND_LIGHT - bufferObject.0 = 512 - - #if defined CUSTOM_MOON_ROTATION - customTexture.CoronaTex = texture/corona.png - #endif +bufferObject.0 = 1024 + +#if defined CUSTOM_MOON_ROTATION + customTexture.CoronaTex = texture/corona.png #endif #if WATER_INTERACTION < 2 diff --git a/shaders/world-1/begin.csh b/shaders/world-1/begin.csh new file mode 100644 index 0000000..9004f45 --- /dev/null +++ b/shaders/world-1/begin.csh @@ -0,0 +1,5 @@ +#version 430 + +#define NETHER_SHADER + +#include "/dimensions/begin.csh" \ No newline at end of file diff --git a/shaders/world-1/deferred.csh b/shaders/world-1/deferred.csh new file mode 100644 index 0000000..7c955aa --- /dev/null +++ b/shaders/world-1/deferred.csh @@ -0,0 +1,5 @@ +#version 430 + +#define NETHER_SHADER + +#include "/dimensions/deferred.csh" \ No newline at end of file diff --git a/shaders/world-1/prepare4.fsh b/shaders/world-1/prepare4.fsh index 1dc2793..e10b3d3 100644 --- a/shaders/world-1/prepare4.fsh +++ b/shaders/world-1/prepare4.fsh @@ -2,4 +2,4 @@ #define NETHER_SHADER -#include "/dimensions/deferred.fsh" \ No newline at end of file +#include "/dimensions/prepare4.fsh" \ No newline at end of file diff --git a/shaders/world-1/prepare4.vsh b/shaders/world-1/prepare4.vsh index 06a1708..42cd74b 100644 --- a/shaders/world-1/prepare4.vsh +++ b/shaders/world-1/prepare4.vsh @@ -2,4 +2,4 @@ #define NETHER_SHADER -#include "/dimensions/deferred.vsh" \ No newline at end of file +#include "/dimensions/prepare4.vsh" \ No newline at end of file diff --git a/shaders/world0/clrwl_shadow.vsh b/shaders/world0/clrwl_shadow.vsh index 811fe4d..d22814f 100644 --- a/shaders/world0/clrwl_shadow.vsh +++ b/shaders/world0/clrwl_shadow.vsh @@ -256,13 +256,13 @@ void main() { ) && length(position.xy) < 24.0 ){ - - // apply displacement for waving plant blocks - worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly - if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - + if(blockId == BLOCK_AIR_WAVING) { + worldpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + } else { + // apply displacement for waving plant blocks + worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); + } } #endif diff --git a/shaders/world0/deferred.csh b/shaders/world0/deferred.csh new file mode 100644 index 0000000..e35c101 --- /dev/null +++ b/shaders/world0/deferred.csh @@ -0,0 +1,5 @@ +#version 430 + +#define OVERWORLD_SHADER + +#include "/dimensions/deferred.csh" \ No newline at end of file diff --git a/shaders/world0/prepare4.fsh b/shaders/world0/prepare4.fsh index 828acb8..0777620 100644 --- a/shaders/world0/prepare4.fsh +++ b/shaders/world0/prepare4.fsh @@ -2,4 +2,4 @@ #define OVERWORLD_SHADER -#include "/dimensions/deferred.fsh" \ No newline at end of file +#include "/dimensions/prepare4.fsh" \ No newline at end of file diff --git a/shaders/world0/prepare4.vsh b/shaders/world0/prepare4.vsh index b797cea..5fe8a08 100644 --- a/shaders/world0/prepare4.vsh +++ b/shaders/world0/prepare4.vsh @@ -2,4 +2,4 @@ #define OVERWORLD_SHADER -#include "/dimensions/deferred.vsh" \ No newline at end of file +#include "/dimensions/prepare4.vsh" \ No newline at end of file diff --git a/shaders/world0/shadow.fsh b/shaders/world0/shadow.fsh index db28204..dd9828e 100644 --- a/shaders/world0/shadow.fsh +++ b/shaders/world0/shadow.fsh @@ -44,15 +44,15 @@ void main() { vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); - #ifdef TRANSLUCENT_COLORED_SHADOWS - if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); - #endif + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + // #endif gl_FragData[0] = shadowColor; // gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); #ifdef Stochastic_Transparent_Shadows - if(gl_FragData[0].a < blueNoise() && (renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT || renderStage == MC_RENDER_STAGE_ENTITIES || renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES)) { discard; return;} + if(gl_FragData[0].a < blueNoise() && (renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT || renderStage == MC_RENDER_STAGE_ENTITIES || renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_NONE)) { discard; return;} #endif } diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 472da41..8d52f57 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -254,13 +254,13 @@ void main() { ) && length(position.xy) < 24.0 ){ - - // apply displacement for waving plant blocks - worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly - if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - + if(blockId == BLOCK_AIR_WAVING) { + worldpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + } else { + // apply displacement for waving plant blocks + worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); + } } #endif diff --git a/shaders/world0_with_aether_flag/deferred.csh b/shaders/world0_with_aether_flag/deferred.csh new file mode 100644 index 0000000..e35c101 --- /dev/null +++ b/shaders/world0_with_aether_flag/deferred.csh @@ -0,0 +1,5 @@ +#version 430 + +#define OVERWORLD_SHADER + +#include "/dimensions/deferred.csh" \ No newline at end of file diff --git a/shaders/world0_with_aether_flag/prepare4.fsh b/shaders/world0_with_aether_flag/prepare4.fsh index 1aeb77c..348add3 100644 --- a/shaders/world0_with_aether_flag/prepare4.fsh +++ b/shaders/world0_with_aether_flag/prepare4.fsh @@ -3,4 +3,4 @@ #define OVERWORLD_SHADER #define AETHER_FLAG -#include "/dimensions/deferred.fsh" \ No newline at end of file +#include "/dimensions/prepare4.fsh" \ No newline at end of file diff --git a/shaders/world0_with_aether_flag/prepare4.vsh b/shaders/world0_with_aether_flag/prepare4.vsh index 1001b4d..2cd5a5d 100644 --- a/shaders/world0_with_aether_flag/prepare4.vsh +++ b/shaders/world0_with_aether_flag/prepare4.vsh @@ -3,4 +3,4 @@ #define OVERWORLD_SHADER #define AETHER_FLAG -#include "/dimensions/deferred.vsh" \ No newline at end of file +#include "/dimensions/prepare4.vsh" \ No newline at end of file diff --git a/shaders/world0_with_aether_flag/shadow.fsh b/shaders/world0_with_aether_flag/shadow.fsh index b407f63..3bb0d46 100644 --- a/shaders/world0_with_aether_flag/shadow.fsh +++ b/shaders/world0_with_aether_flag/shadow.fsh @@ -25,9 +25,9 @@ void main() { vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); - #ifdef TRANSLUCENT_COLORED_SHADOWS - if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); - #endif + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + // #endif gl_FragData[0] = shadowColor; diff --git a/shaders/world0_with_aether_flag/shadow.vsh b/shaders/world0_with_aether_flag/shadow.vsh index 472da41..8d52f57 100644 --- a/shaders/world0_with_aether_flag/shadow.vsh +++ b/shaders/world0_with_aether_flag/shadow.vsh @@ -254,13 +254,13 @@ void main() { ) && length(position.xy) < 24.0 ){ - - // apply displacement for waving plant blocks - worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly - if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - + if(blockId == BLOCK_AIR_WAVING) { + worldpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + } else { + // apply displacement for waving plant blocks + worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); + } } #endif diff --git a/shaders/world0_with_twilight_forest_flag/deferred.csh b/shaders/world0_with_twilight_forest_flag/deferred.csh new file mode 100644 index 0000000..e35c101 --- /dev/null +++ b/shaders/world0_with_twilight_forest_flag/deferred.csh @@ -0,0 +1,5 @@ +#version 430 + +#define OVERWORLD_SHADER + +#include "/dimensions/deferred.csh" \ No newline at end of file diff --git a/shaders/world0_with_twilight_forest_flag/prepare4.fsh b/shaders/world0_with_twilight_forest_flag/prepare4.fsh index e4e957e..0be83cd 100644 --- a/shaders/world0_with_twilight_forest_flag/prepare4.fsh +++ b/shaders/world0_with_twilight_forest_flag/prepare4.fsh @@ -3,4 +3,4 @@ #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG -#include "/dimensions/deferred.fsh" \ No newline at end of file +#include "/dimensions/prepare4.fsh" \ No newline at end of file diff --git a/shaders/world0_with_twilight_forest_flag/prepare4.vsh b/shaders/world0_with_twilight_forest_flag/prepare4.vsh index f37a943..8afa567 100644 --- a/shaders/world0_with_twilight_forest_flag/prepare4.vsh +++ b/shaders/world0_with_twilight_forest_flag/prepare4.vsh @@ -3,4 +3,4 @@ #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG -#include "/dimensions/deferred.vsh" \ No newline at end of file +#include "/dimensions/prepare4.vsh" \ No newline at end of file diff --git a/shaders/world0_with_twilight_forest_flag/shadow.fsh b/shaders/world0_with_twilight_forest_flag/shadow.fsh index b407f63..3bb0d46 100644 --- a/shaders/world0_with_twilight_forest_flag/shadow.fsh +++ b/shaders/world0_with_twilight_forest_flag/shadow.fsh @@ -25,9 +25,9 @@ void main() { vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); - #ifdef TRANSLUCENT_COLORED_SHADOWS - if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); - #endif + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + // #endif gl_FragData[0] = shadowColor; diff --git a/shaders/world0_with_twilight_forest_flag/shadow.vsh b/shaders/world0_with_twilight_forest_flag/shadow.vsh index 472da41..8d52f57 100644 --- a/shaders/world0_with_twilight_forest_flag/shadow.vsh +++ b/shaders/world0_with_twilight_forest_flag/shadow.vsh @@ -254,13 +254,13 @@ void main() { ) && length(position.xy) < 24.0 ){ - - // apply displacement for waving plant blocks - worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly - if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - + if(blockId == BLOCK_AIR_WAVING) { + worldpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + } else { + // apply displacement for waving plant blocks + worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); + } } #endif diff --git a/shaders/world1/composite11.vsh b/shaders/world1/composite11.vsh index 857fd9a..dbc8732 100644 --- a/shaders/world1/composite11.vsh +++ b/shaders/world1/composite11.vsh @@ -2,4 +2,4 @@ #define END_SHADER -#include "/dimensions/composite10.vsh" \ No newline at end of file +#include "/dimensions/composite11.vsh" \ No newline at end of file diff --git a/shaders/world1/deferred.csh b/shaders/world1/deferred.csh new file mode 100644 index 0000000..f13f400 --- /dev/null +++ b/shaders/world1/deferred.csh @@ -0,0 +1,5 @@ +#version 430 + +#define END_SHADER + +#include "/dimensions/deferred.csh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_weather.fsh b/shaders/world1/gbuffers_weather.fsh index 83d04b4..17cd863 100644 --- a/shaders/world1/gbuffers_weather.fsh +++ b/shaders/world1/gbuffers_weather.fsh @@ -6,7 +6,6 @@ varying vec4 color; uniform sampler2D gtexture; uniform sampler2D gaux1; -uniform vec4 lightCol; uniform vec3 sunVec; uniform vec2 texelSize; diff --git a/shaders/world1/prepare4.fsh b/shaders/world1/prepare4.fsh index 33a06e3..5f9ea2b 100644 --- a/shaders/world1/prepare4.fsh +++ b/shaders/world1/prepare4.fsh @@ -2,4 +2,4 @@ #define END_SHADER -#include "/dimensions/deferred.fsh" \ No newline at end of file +#include "/dimensions/prepare4.fsh" \ No newline at end of file diff --git a/shaders/world1/prepare4.vsh b/shaders/world1/prepare4.vsh index 80dc169..2d3ee14 100644 --- a/shaders/world1/prepare4.vsh +++ b/shaders/world1/prepare4.vsh @@ -2,4 +2,4 @@ #define END_SHADER -#include "/dimensions/deferred.vsh" \ No newline at end of file +#include "/dimensions/prepare4.vsh" \ No newline at end of file diff --git a/shaders/world1/shadow.fsh b/shaders/world1/shadow.fsh index 2108cd1..f8cc9f3 100644 --- a/shaders/world1/shadow.fsh +++ b/shaders/world1/shadow.fsh @@ -32,9 +32,9 @@ void main() { vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); - #ifdef TRANSLUCENT_COLORED_SHADOWS - if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); - #endif + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + // #endif gl_FragData[0] = shadowColor;