From 158002d259e367174880b49bfdf9cdd3c1df520e Mon Sep 17 00:00:00 2001 From: Xonk Date: Wed, 28 Jun 2023 20:05:44 -0400 Subject: [PATCH] cave fog changes color in some places, biome fog tweaks --- shaders/composite1.vsh | 6 +++++- shaders/composite2.fsh | 33 +++++++++++++++++++------------ shaders/composite2.vsh | 3 +++ shaders/composite3.fsh | 6 ++++-- shaders/deferred.vsh | 5 +++-- shaders/lib/climate_settings.glsl | 2 +- shaders/lib/diffuse_lighting.glsl | 2 +- shaders/lib/settings.glsl | 2 +- shaders/shaders.properties | 9 ++++----- 9 files changed, 42 insertions(+), 26 deletions(-) diff --git a/shaders/composite1.vsh b/shaders/composite1.vsh index 3c43278..d0bdafa 100644 --- a/shaders/composite1.vsh +++ b/shaders/composite1.vsh @@ -22,6 +22,8 @@ uniform vec3 sunPosition; uniform float sunElevation; uniform int frameCounter; +// uniform float sandStorm; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), vec2(-1.,3.)/8., vec2(5.0,1.)/8., @@ -30,7 +32,9 @@ const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), vec2(-7.,-1.)/8., vec2(3,7.)/8., vec2(7.,-7.)/8.); - +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} #include "/lib/util.glsl" #include "/lib/res_params.glsl" diff --git a/shaders/composite2.fsh b/shaders/composite2.fsh index e84dcc5..6c3e307 100644 --- a/shaders/composite2.fsh +++ b/shaders/composite2.fsh @@ -12,9 +12,6 @@ flat varying vec3 averageSkyCol_Clouds; flat varying vec3 averageSkyCol; flat varying float tempOffsets; -flat varying float fogAmount; -flat varying float VFAmount; -flat varying float FogSchedule; uniform sampler2D noisetex; uniform sampler2D depthtex0; uniform sampler2D depthtex1; @@ -50,7 +47,7 @@ uniform vec2 texelSize; #include "lib/projections.glsl" #include "lib/sky_gradient.glsl" #include "/lib/res_params.glsl" -// #include "lib/biome_specifics.glsl" + #define TIMEOFDAYFOG #include "lib/volumetricClouds.glsl" @@ -268,19 +265,29 @@ void main() { vec3 fragpos = toScreenSpace(vec3(tc/RENDER_SCALE,z)); - #ifdef Cloud_Fog - vec4 VL_CLOUDFOG = InsideACloudFog(fragpos, vec2(R2_dither(),blueNoise()), lightCol.rgb/80., moonColor/150., (averageSkyCol*2.0) * 8./150./3.); - - // vec4 rays = vec4(0.0); - // if(rainStrength > 0.0){ - // rays = RainRays(vec3(0.0), fragpos, length(fragpos), R2_dither(), (avgAmbient*2.0) * 8./150./3., lightCol.rgb, dot(normalize(fragpos), normalize(sunVec) )); - // VL_CLOUDFOG += rays * rainStrength; - // } + #ifdef Cumulus + #ifdef Cloud_Fog + vec4 VL_CLOUDFOG = InsideACloudFog(fragpos, vec2(R2_dither(),blueNoise()), lightCol.rgb/80., moonColor/150., (averageSkyCol*2.0) * 8./150./3.); + + // vec4 rays = vec4(0.0); + // if(rainStrength > 0.0){ + // rays = RainRays(vec3(0.0), fragpos, length(fragpos), R2_dither(), (avgAmbient*2.0) * 8./150./3., lightCol.rgb, dot(normalize(fragpos), normalize(sunVec) )); + // VL_CLOUDFOG += rays * rainStrength; + // } + + gl_FragData[0] = clamp(VL_CLOUDFOG, 0.0,65000.); + #else + + vec4 VL_Fog = getVolumetricRays(fragpos, blueNoise(), averageSkyCol); + gl_FragData[0] = clamp(VL_Fog,0.0,65000.); + + #endif - gl_FragData[0] = clamp(VL_CLOUDFOG, 0.0,65000.); #else + vec4 VL_Fog = getVolumetricRays(fragpos, blueNoise(), averageSkyCol); gl_FragData[0] = clamp(VL_Fog,0.0,65000.); + #endif diff --git a/shaders/composite2.vsh b/shaders/composite2.vsh index a705c62..2d8fa85 100644 --- a/shaders/composite2.vsh +++ b/shaders/composite2.vsh @@ -31,6 +31,7 @@ uniform mat4 gbufferModelViewInverse; // #include "lib/biome_specifics.glsl" +// uniform float sandStorm; float luma(vec3 color) { return dot(color,vec3(0.21, 0.72, 0.07)); } @@ -67,6 +68,8 @@ void main() { lightCol.a = float(sunElevation > 1e-5)*2-1.; lightCol.rgb = sc; + // lightCol.rgb = mix(lightCol.rgb, luma(lightCol.rgb) * vec3(1.0, 0.01, 0.1) , sandStorm); + // #ifdef VOLUMETRIC_CLOUDS // #ifndef VL_Clouds_Shadows // lightCol.rgb *= (1.0-rainStrength*0.9); diff --git a/shaders/composite3.fsh b/shaders/composite3.fsh index d9ba03a..96e6a26 100644 --- a/shaders/composite3.fsh +++ b/shaders/composite3.fsh @@ -60,6 +60,7 @@ uniform float darknessLightFactor; + #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) #define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) @@ -275,9 +276,10 @@ void main() { // float fogdistfade = clamp( pow(1.0 - exp((length(fragpos) / far) * -5), 2.0) ,0.0,1.0); // // float fogfade = clamp( exp(clamp(np3.y * 0.35 + 0.35,0,1) * -5.0) ,0.0,1.0) * 0.1; + vec3 cavefogCol = vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B); + BiomeFogColor(cavefogCol); - - color.rgb = mix(color.rgb, vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade + (blueNoise()-0.5)*0.01, fogdistfade * (1.0-lightleakfix) * (1.0-darknessFactor) * clamp( 1.5 - np3.y,0.,1)) ; + color.rgb = mix(color.rgb, cavefogCol*fogfade, fogdistfade * (1.0-lightleakfix) * (1.0-darknessFactor) * clamp( 1.5 - np3.y,0.,1)) ; // color.rgb = vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade ; } #endif diff --git a/shaders/deferred.vsh b/shaders/deferred.vsh index d2befe5..57a46d9 100644 --- a/shaders/deferred.vsh +++ b/shaders/deferred.vsh @@ -103,8 +103,9 @@ void main() { /// TOOO DAMN BLUE // // only need to sample one spot for this // averageSkyCol += 2.0*skyFromTex(normalize(vec3(0.0,1.0,0.0)),colortex4).rgb/150.; - - + vec3 minimimlight = vec3(0.2,0.4,1.0) * MIN_LIGHT_AMOUNT*0.0005; + averageSkyCol_Clouds = max(averageSkyCol_Clouds, minimimlight); + averageSkyCol = max(averageSkyCol, minimimlight); //////////////////////////////////////// /// --- SUNLIGHT/MOONLIGHT STUFF --- /// diff --git a/shaders/lib/climate_settings.glsl b/shaders/lib/climate_settings.glsl index 1a0c00c..7d8788f 100644 --- a/shaders/lib/climate_settings.glsl +++ b/shaders/lib/climate_settings.glsl @@ -163,7 +163,7 @@ BiomeColors.b = isSwamps*0.35 + isJungles*0.8 + sandStorm*0.3 + snowStorm*1.0; // insure the biome colors are locked to the fog shape and lighting, but not its orignal color. - BiomeColors *= dot(FinalFogColor,vec3(0.21, 0.72, 0.07)); + BiomeColors *= dot(FinalFogColor,vec3(0.33333)); // these range 0.0-1.0. they will never overlap. float Inbiome = isJungles+isSwamps+sandStorm; diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index dcc5a37..93a6ee8 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -20,7 +20,7 @@ vec3 DoAmbientLighting (vec3 SkyColor, vec3 TorchColor, vec2 Lightmap, float sky SkyColor += vec3(Lightning_R,Lightning_G,Lightning_B) * 25.0 * skyLightDir * lightningFlash ; float skyLM = (pow(Lightmap.y,15.0)*2.0 + pow(Lightmap.y,2.5))*0.5; - vec3 SkyLight = max(SkyColor * skyLM, vec3(0.2,0.4,1.0) * (MIN_LIGHT_AMOUNT*0.01)); + vec3 SkyLight = max(SkyColor * skyLM, vec3(0.2,0.4,1.0) * (MIN_LIGHT_AMOUNT*0.01) ); return SkyLight * skyLightDir + TorchLight; } diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 726da58..e10f747 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -207,7 +207,7 @@ uniform int moonPhase; #define moonColorB 0.8948 //[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 moonlightbrightness (abs(4-moonPhase)) -#define moonlightbrightness2 ((moonlightbrightness/4.0) + 0.05) +#define moonlightbrightness2 ((moonlightbrightness/4.0)) #if colortype == 1 #define sunColorBase vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 204e29b..7108a65 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -271,13 +271,12 @@ uniform.float.Cloudy_Den = smooth(5, if( \ variable.int.BiomeTransitionTime = 30 uniform.float.isJungles = smooth(6, if(in(biome,23,24,25), 1,0), BiomeTransitionTime,BiomeTransitionTime) -uniform.float.isSwamps = smooth(7, if(in(biome,6,7), 1,0), BiomeTransitionTime,BiomeTransitionTime) +uniform.float.isSwamps = smooth(7, if(in(biome,6,7,52), 1,0), BiomeTransitionTime,BiomeTransitionTime) +uniform.float.sandStorm = smooth(8, if(in(biome,5,26,27,28), rainStrength,0), 15,15) +uniform.float.snowStorm = smooth(9, if(in(biome,31,32,33,34), rainStrength,0), 15,15) -uniform.float.noPuddleAreas = smooth(8, if(in(biome,5,16,17,18,26, 27, 28, 3, 4, 16,31,32,33,34, 37, 39, 48), 0,1), 5,5) - -uniform.float.sandStorm = smooth(9, if(in(biome,5,26,27,28), rainStrength,0), 15,15) -uniform.float.snowStorm = smooth(10, if(in(biome,31,32,33,34), rainStrength,0), 15,15) +uniform.float.noPuddleAreas = smooth(10, if(in(biome,5,16,17,18,26, 27, 28, 3, 4, 16,31,32,33,34, 37, 39, 48), 0,1), 5,5) # uniform.float.isLush = smooth(8, if(in(biome,10,50), 1,0), BiomeTransitionTime,BiomeTransitionTime)