diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 0aa91e4..5acbdb7 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -421,6 +421,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 1200.0; #endif #ifdef WATER_SUN_SPECULAR + if(iswater) DirectLightColor *= WATER_SUN_REFLECTION_STRENGTH; SunReflection = (DirectLightColor * Shadows) * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); #endif @@ -455,7 +456,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef DH_CHUNK_FADING if (!iswater){ - float viewDist = length(mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz); + float viewDist = length(playerPos); float ditherFade = smoothstep(max(far-9,9), far-1, viewDist); if (step(bayerDither()/ditherFade, ditherFade) == 0.0) discard; diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 6328154..3740433 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -390,7 +390,7 @@ void main() { #endif #if !defined WEATHER || (defined DISTANT_HORIZONS && defined DH_CHUNK_FADING) - float viewDist = length(mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz); + float viewDist = length(feetPlayerPos + gbufferModelViewInverse[3].xyz); #endif #ifndef WEATHER diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index 384e632..2492ed9 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -211,10 +211,14 @@ vec3 getParallaxDisplacement(vec3 waterPos, vec3 playerPos) { return parallaxPos; } -vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ +vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values, vec3 rippleBump){ float bumpmult = puddle_values; - bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); - // + bump = bump * bumpmult + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN + bump += 4.0 * rippleBump; + #endif + return normalize(bump*tbnMatrix); } @@ -282,8 +286,9 @@ uniform float dhFarPlane; #include "/lib/DistantHorizons_projections.glsl" - - +#ifdef RIPPLE_WATER + #include "/lib/ripples.glsl" +#endif // #undef BASIC_SHADOW_FILTER @@ -418,6 +423,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = reflective blocks + // 0.6 = nether portal // 0.4 = translucent particles // 0.3 = hand mask @@ -430,6 +436,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) bool isReflectiveEntity = abs(MATERIALS - 0.8) < 0.01; bool isReflective = abs(MATERIALS - 0.7) < 0.01 || isWater || isReflectiveEntity; bool isEntity = abs(MATERIALS - 0.9) < 0.01 || isReflectiveEntity; + bool isNetherPortal = abs(MATERIALS - 0.6) < 0.01; //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// ALBEDO ///////////////////////////////////// @@ -453,17 +460,21 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) if (isWater){ Albedo = vec3(0.0); gl_FragData[0].a = 1.0/255.0; - } - #if defined DISTANT_HORIZONS && defined DH_CHUNK_FADING - float viewDist = length((mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz)); - float ditherFade = smoothstep(0.98 * far, 1.03 * far, viewDist); - - if (step(ditherFade, bayerDither()) == 0.0) discard; - #endif #endif #endif + vec3 shadowPlayerPos = feetPlayerPos + gbufferModelViewInverse[3].xyz; + #if (defined DISTANT_HORIZONS && defined DH_CHUNK_FADING) || defined RIPPLE_WATER + float viewDist = length(shadowPlayerPos); + #endif + + #if defined DISTANT_HORIZONS && defined DH_CHUNK_FADING + float ditherFade = smoothstep(0.98 * far, 1.03 * far, viewDist); + + if (step(ditherFade, bayerDither()) == 0.0) discard; + #endif + #if defined LIGHTNING Albedo = vec3(1.0,2.0,6.0); #endif @@ -523,6 +534,9 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) NormalTex.xy = NormalTex.xy*2.0-1.0; NormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0); + vec3 rippleBump = vec3(0.0); + + vec2 lightmap = lmtexcoord.zw; #if !defined HAND if (isWater){ vec3 playerPos = (mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz); @@ -536,7 +550,16 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) waterPos.xy = newPos; waterPos.xyz = getParallaxDisplacement(waterPos, playerPos); - + + #ifdef RIPPLE_WATER + float effectStrength = smoothstep(0.85, 1.0, max(lightmap.y-step(1.0,lightmap.x), 0.0)); + + if(viewDist < 35 && waterPos.y <= 0.0) { + rippleBump = ripples(feetPlayerPos.xz+cameraPosition.xz); + waterPos.xyz += 14 * rippleBump * rainStrength * effectStrength * smoothstep(35, 10, viewDist); + } + #endif + vec3 bump = normalize(getWaveNormal(waterPos, playerPos, false)); float bumpmult = WATER_WAVE_STRENGTH; @@ -550,9 +573,10 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) TangentNormal = NormalTex.xy; #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN - normal = mix(applyBump(tbnMatrix, NormalTex.xyz, 1.0), applyBump(tbnMatrix, NormalTex.xyz, PHYSICS_OCEAN_TRANSITION), smoothstep(0.0, 0.1, physics_localWaviness)); + rippleBump *= physics_localWaviness; + normal = mix(applyBump(tbnMatrix, NormalTex.xyz, 1.0, rippleBump), applyBump(tbnMatrix, NormalTex.xyz, PHYSICS_OCEAN_TRANSITION, rippleBump), smoothstep(0.0, 0.1, physics_localWaviness)); #else - normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); + normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0, rippleBump); #endif worldSpaceNormal = viewToWorld(normal); @@ -579,8 +603,6 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) //////////////////////////////// DIFFUSE LIGHTING ////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - vec2 lightmap = lmtexcoord.zw; - // lightmap.y = 1.0; #ifndef OVERWORLD_SHADER @@ -631,8 +653,6 @@ 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); - vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; - Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, blueNoise()); // Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); @@ -754,7 +774,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 DirectLightColor = WsunVec; float Shadows = 0.0; #endif - + if(isWater) DirectLightColor *= WATER_SUN_REFLECTION_STRENGTH; vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(blueNoise(), vec2(interleaved_gradientNoise_temporal())), worldSpaceNormal, roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * 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 f5192d9..9c48a67 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -181,6 +181,7 @@ void main() { // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = reflective blocks + // 0.6 = nether portal float mat = 0.0; // water mask @@ -197,6 +198,8 @@ void main() { // translucent blocks if (mc_Entity.x >= 301 && mc_Entity.x <= 321) mat = 0.7; + if (mc_Entity.x == 320) mat = 0.6; + #if defined ENTITIES && defined IS_IRIS NAMETAG = 0; if (entityId == 1600) NAMETAG = 1; diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index d4e161a..99c68af 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -17,6 +17,8 @@ const bool colortex5MipmapEnabled = true; uniform float nightVision; +uniform float frameTimeCounter; +uniform float rainStrength; #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; @@ -39,6 +41,12 @@ uniform float nightVision; uniform sampler2D snowTexR; #endif + #if defined RIPPLE_PUDDLES && defined Puddles + #include "/lib/ripples.glsl" + #endif + + #include "/lib/stars.glsl" + #ifdef REALMOON uniform sampler2D moon; #else @@ -128,9 +136,7 @@ uniform float eyeAltitude; flat varying vec2 TAA_Offset; uniform int frameCounter; -uniform float frameTimeCounter; -uniform float rainStrength; uniform int isEyeInWater; uniform ivec2 eyeBrightnessSmooth; @@ -171,7 +177,6 @@ float convertHandDepth_2(in float depth, bool hand) { #include "/lib/Shadow_Params.glsl" #include "/lib/Shadows.glsl" -#include "/lib/stars.glsl" #include "/lib/sky_gradient.glsl" #ifdef OVERWORLD_SHADER @@ -726,8 +731,23 @@ uniform float wetness; float wetnessStages = mix(puddles, 1.0, fullWet) * effectStrength; if(isWater) wetnessStages = 0.0; - normals = mix(normals, flatNormals, puddles * effectStrength * clamp(flatNormals.y,0.0,1.0)); - roughness = mix(roughness, snowR, wetnessStages * Puddle_Reflection_Strength); + #ifdef RIPPLE_PUDDLES + float viewDist = length(worldPos - cameraPosition); + vec3 rippleNormal = flatNormals; + + if(viewDist < 35 && rainStrength > 0.0) { + vec3 ripple = ripples(1.2 * worldPos.xz); + + ripple = ripple.xzy; + rippleNormal = mix(flatNormals, ripple, smoothstep(35, 10, viewDist) * rainStrength); + } + + normals = mix(normals, rippleNormal, effectStrength * clamp(flatNormals.y,0.0,1.0)); + #else + normals = mix(normals, flatNormals, puddles * effectStrength * clamp(flatNormals.y,0.0,1.0)); + #endif + + roughness = mix(roughness, 0.5*(1+snowR), wetnessStages * Puddle_Reflection_Strength); if(f0 < 229.5/255.0 ) albedo = pow(albedo * (1.0 - 0.08*wetnessStages), vec3(1.0 + 0.7*wetnessStages)); } @@ -742,6 +762,8 @@ uniform float wetness; vec3 snowA = pow(texture2D(snowTexA, snowCoords).rgb, vec3(2.0/(ShaderSnowStrength-0.1))); vec3 snowN = 2*texture2D(snowTexN, snowCoords).rgb - 1; + + snowN = vec3(snowN.x, snowN.z, snowN.y); float omSA = 1-snowAmount; diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 5711eab..e676da0 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -544,15 +544,6 @@ screen.POM = Parallax Occlusion Mapping / POM screen.Porosity = Porosity / Puddles option.Porosity = Porosity - option.Puddles = Puddles - option.Puddle_Size = Puddle Size Multiplier - option.Puddle_Reflection_Strength = Puddle Reflection Strength - option.ShaderSnow = Shader Snow Effect - value.ShaderSnow.0 = Off - value.ShaderSnow.1 = When snowing - value.ShaderSnow.2 = When in snowy Biome - value.ShaderSnow.3 = Always on - option.ShaderSnowStrength = Shader Snow Strength option.MATERIAL_AO = Material Ambient Occlusion @@ -588,6 +579,8 @@ option.AEROCHROME_PINKNESS.comment = Higher = Pink. Lower = Red option.AEROCHROME_WOOL_ENABLED.comment = Technically wool things should be affected but it ruins a lot of builds. Enable to be more technically correct. option.EMISSIVE_ORES = Emissive Ores +option.PLANET_CURVATURE = Planet Curvature +option.CURVATURE_AMOUNT = Curvature Amount option.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS = Custom Diffuse Colors option.DIRECTLIGHT_DIFFUSE_R = Sun R @@ -739,6 +732,22 @@ screen.World.comment = Configure settings for various things that happen in the screen.Water_fog_color.comment = Configure colors of the water fog. + option.WATER_SUN_REFLECTION_STRENGTH = Water sun reflection strength + + screen.World_Effects = World Effects + option.Puddles = Puddles + option.Puddle_Size = Puddle Size Multiplier + option.Puddle_Reflection_Strength = Puddle Reflection Strength + option.ShaderSnow = Shader Snow Effect + value.ShaderSnow.0 = Off + value.ShaderSnow.1 = When snowing + value.ShaderSnow.2 = When in snowy Biome + value.ShaderSnow.3 = Always on + option.ShaderSnowStrength = Shader Snow Strength + option.RIPPLE_WATER = Ripples on Water + option.RIPPLE_PUDDLES = Ripples on Puddles + option.RIPPLE_INTENSITY = Ripple Intensity + screen.Climate.comment = Configure settings related to the climate, like seasonal colors, daily weather, and biome specific fog. screen.Seasons.comment = Seasonal colors that cycle through, summer, fall, winter, and spring. option.Seasons.comment = Seasonal colors that cycle through, summer, fall, winter, and spring. §aPERFORMANCE COST:§r low diff --git a/shaders/lib/ripples.glsl b/shaders/lib/ripples.glsl new file mode 100644 index 0000000..467320a --- /dev/null +++ b/shaders/lib/ripples.glsl @@ -0,0 +1,72 @@ +// RIPPLE CODE FROM https://www.shadertoy.com/view/ldfyzl + +/* + +A quick experiment with rain drop ripples. + +This effect was written for and used in the launch scene of the +64kB PC intro "H - Immersion", by Ctrl-Alt-Test. + + > http://www.ctrl-alt-test.fr/productions/h-immersion/ + > https://www.youtube.com/watch?v=27PN1SsXbjM + +-- +Zavie / Ctrl-Alt-Test + +*/ + +// Return random noise in the range [0.0, 1.0], as a function of x. +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} + +vec2 hash22(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yzx+19.19); + return fract((p3.xx+p3.yz)*p3.zy); + +} + +vec3 ripples(vec2 fragCoord) { + float cell_density = 5 * RIPPLE_INTENSITY; + + float size_compensation = cell_density / 5.0; + + vec2 uv = fragCoord * cell_density; + vec2 p0 = floor(uv); + + int MAX_RADIUS = 1; + + float wave_frequency = 21; + + vec2 circles = vec2(0.); + for (int j = -MAX_RADIUS; j <= MAX_RADIUS; ++j) { + for (int i = -MAX_RADIUS; i <= MAX_RADIUS; ++i) { + vec2 pi = p0 + vec2(i, j); + + vec2 hsh = pi; + + vec2 p = pi + hash22(hsh); + + float t = fract(0.9 * frameTimeCounter + hash12(hsh)); + vec2 v = p - uv; + + float d = length(v) - ( (float(MAX_RADIUS) + 1.) * t ) * size_compensation; + + float h = 1e-2; + float d1 = d - h; + float d2 = d + h; + float p1 = sin(wave_frequency*d1) * smoothstep(-0.6, -0.3, d1) * smoothstep(0., -0.3, d1); + float p2 = sin(wave_frequency*d2) * smoothstep(-0.6, -0.3, d2) * smoothstep(0., -0.3, d2); + circles += 0.5 * normalize(v) * ((p2 - p1) / (2. * h) * (1. - t) * (1. - t)); + } + } + circles /= float((MAX_RADIUS*2+1)*(MAX_RADIUS*2+1)); + + vec3 n = vec3(circles, sqrt(1.0 - dot(circles, circles))); + return n; +} \ No newline at end of file diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 023844b..ef77335 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -24,6 +24,7 @@ #define MINIMUM_WATER_ABSORBANCE -1 // [-1 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 60 70 80 90 100] #define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64] #define Water_Top_Layer 62.90 // [0.90 1.90 2.90 3.90 4.90 5.90 6.90 7.90 8.90 9.90 10.90 11.90 12.90 13.90 14.90 15.90 16.90 17.90 18.90 19.90 20.90 21.90 22.90 23.90 24.90 25.90 26.90 27.90 28.90 29.90 30.90 31.90 32.90 33.90 34.90 35.90 36.90 37.90 38.90 39.90 40.90 41.90 42.90 43.90 44.90 45.90 46.90 47.90 48.90 49.90 50.90 51.90 52.90 53.90 54.90 55.90 56.90 57.90 58.90 59.90 60.90 61.90 62.90 63.90 64.90 65.90 66.90 67.90 68.90 69.90 70.90 71.90 72.90 73.90 74.90 75.90 76.90 77.90 78.90 79.90 80.90 81.90 82.90 83.90 84.90 85.90 86.90 87.90 88.90 89.90 90.90 91.90 92.90 93.90 94.90 95.90 96.90 97.90 98.90 99.90 100.90 101.90 102.90 103.90 104.90 105.90 106.90 107.90 108.90 109.90 110.90 111.90 112.90 113.90 114.90 115.90 116.90 117.90 118.90 119.90 120.90 121.90 122.90 123.90 124.90 125.90 126.90 127.90 128.90 129.90 130.90 131.90 132.90 133.90 134.90 135.90 136.90 137.90 138.90 139.90 140.90 141.90 142.90 143.90 144.90 145.90 146.90 147.90 148.90 149.90 150.90 151.90 152.90 153.90 154.90 155.90 156.90 157.90 158.90 159.90 160.90 161.90 162.90 163.90 164.90 165.90 166.90 167.90 168.90 169.90 170.90 171.90 172.90 173.90 174.90 175.90 176.90 177.90 178.90 179.90 180.90 181.90 182.90 183.90 184.90 185.90 186.90 187.90 188.90 189.90 190.90 191.90 192.90 193.90 194.90 195.90 196.90 197.90 198.90 199.90] +#define WATER_SUN_REFLECTION_STRENGTH 1 // [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 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] #define FAKE_REFRACTION_EFFECT #define FAKE_DISPERSION_EFFECT @@ -283,9 +284,14 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define Puddles // yes #define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] #define Puddle_Reflection_Strength 0.9 // [0.7 0.75 0.8 0.85 0.9 0.95 1.0] + #define ShaderSnow 1 // [0 1 2 3] #define ShaderSnowStrength 1.0 // [0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#define RIPPLE_WATER +#define RIPPLE_PUDDLES +#define RIPPLE_INTENSITY 0.85 // [0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] + // #define MATERIAL_AO @@ -352,7 +358,7 @@ uniform int moonPhase; #define VOLUMETRIC_CLOUDS #define CLOUDS_QUALITY 0.5 // [0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] -#define Cloud_Speed 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 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +#define Cloud_Speed 2.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 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] #ifdef VOLUMETRIC_CLOUDS #ifndef ambientLight_only diff --git a/shaders/lib/stars.glsl b/shaders/lib/stars.glsl index e156d69..f96f466 100644 --- a/shaders/lib/stars.glsl +++ b/shaders/lib/stars.glsl @@ -1,14 +1,6 @@ //Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised - -// Return random noise in the range [0.0, 1.0], as a function of x. -float hash12(vec2 p) -{ - vec3 p3 = fract(vec3(p.xyx) * 0.1031); - p3 += dot(p3, p3.yzx + 19.19); - return fract((p3.x + p3.y) * p3.z); -} // 1 out, 3 in... float hash13(vec3 p3) { diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 92141a8..407ec53 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -167,7 +167,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = 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_STRENGTH 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 AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Strength 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 SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture 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 Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength 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 = WATER_SUN_REFLECTION_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_STRENGTH 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 AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Strength 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 SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture 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 Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength 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 = \ @@ -245,10 +245,13 @@ SHADER_VERSION_LABEL \ ######## WORLD screen.World.columns=1 - screen.World = [Water] [Waving_Stuff] PLANET_CURVATURE CURVATURE_AMOUNT [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED EMISSIVE_ORES Puddles Puddle_Size Puddle_Reflection_Strength ShaderSnow ShaderSnowStrength + screen.World = [Water] [Waving_Stuff] [World_Effects] PLANET_CURVATURE CURVATURE_AMOUNT [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED EMISSIVE_ORES ### WAVING STUFF screen.Waving_Stuff.columns=1 screen.Waving_Stuff = WAVY_PLANTS WAVY_STRENGTH WAVY_SPEED + + screen.World_Effects.columns=1 + screen.World_Effects = Puddles Puddle_Size Puddle_Reflection_Strength ShaderSnow ShaderSnowStrength RIPPLE_WATER RIPPLE_PUDDLES RIPPLE_INTENSITY ######## CLIMATE screen.Climate.columns=1 @@ -350,6 +353,7 @@ SHADER_VERSION_LABEL \ REFRACTION_SMUDGE MINIMUM_WATER_ABSORBANCE \ SNELLS_WINDOW Water_Top_Layer \ WATER_WAVE_STRENGTH WATER_WAVE_SPEED \ + WATER_SUN_REFLECTION_STRENGTH screen.Water_fog_color.columns=1 screen.Water_fog_color = 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 diff --git a/shaders/texture/snowN.png b/shaders/texture/snowN.png index 1a849a7..6e455f5 100644 Binary files a/shaders/texture/snowN.png and b/shaders/texture/snowN.png differ