cave fog changes color in some places, biome fog tweaks

This commit is contained in:
Xonk 2023-06-28 20:05:44 -04:00
parent 3b2f038acb
commit 158002d259
9 changed files with 42 additions and 26 deletions

View File

@ -22,6 +22,8 @@ uniform vec3 sunPosition;
uniform float sunElevation; uniform float sunElevation;
uniform int frameCounter; uniform int frameCounter;
// uniform float sandStorm;
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-1.,3.)/8., vec2(-1.,3.)/8.,
vec2(5.0,1.)/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(-7.,-1.)/8.,
vec2(3,7.)/8., vec2(3,7.)/8.,
vec2(7.,-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/util.glsl"
#include "/lib/res_params.glsl" #include "/lib/res_params.glsl"

View File

@ -12,9 +12,6 @@ flat varying vec3 averageSkyCol_Clouds;
flat varying vec3 averageSkyCol; flat varying vec3 averageSkyCol;
flat varying float tempOffsets; flat varying float tempOffsets;
flat varying float fogAmount;
flat varying float VFAmount;
flat varying float FogSchedule;
uniform sampler2D noisetex; uniform sampler2D noisetex;
uniform sampler2D depthtex0; uniform sampler2D depthtex0;
uniform sampler2D depthtex1; uniform sampler2D depthtex1;
@ -50,7 +47,7 @@ uniform vec2 texelSize;
#include "lib/projections.glsl" #include "lib/projections.glsl"
#include "lib/sky_gradient.glsl" #include "lib/sky_gradient.glsl"
#include "/lib/res_params.glsl" #include "/lib/res_params.glsl"
// #include "lib/biome_specifics.glsl"
#define TIMEOFDAYFOG #define TIMEOFDAYFOG
#include "lib/volumetricClouds.glsl" #include "lib/volumetricClouds.glsl"
@ -268,19 +265,29 @@ void main() {
vec3 fragpos = toScreenSpace(vec3(tc/RENDER_SCALE,z)); vec3 fragpos = toScreenSpace(vec3(tc/RENDER_SCALE,z));
#ifdef Cloud_Fog #ifdef Cumulus
vec4 VL_CLOUDFOG = InsideACloudFog(fragpos, vec2(R2_dither(),blueNoise()), lightCol.rgb/80., moonColor/150., (averageSkyCol*2.0) * 8./150./3.); #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){ // vec4 rays = vec4(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) )); // if(rainStrength > 0.0){
// VL_CLOUDFOG += rays * rainStrength; // 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 #else
vec4 VL_Fog = getVolumetricRays(fragpos, blueNoise(), averageSkyCol); vec4 VL_Fog = getVolumetricRays(fragpos, blueNoise(), averageSkyCol);
gl_FragData[0] = clamp(VL_Fog,0.0,65000.); gl_FragData[0] = clamp(VL_Fog,0.0,65000.);
#endif #endif

View File

@ -31,6 +31,7 @@ uniform mat4 gbufferModelViewInverse;
// #include "lib/biome_specifics.glsl" // #include "lib/biome_specifics.glsl"
// uniform float sandStorm;
float luma(vec3 color) { float luma(vec3 color) {
return dot(color,vec3(0.21, 0.72, 0.07)); 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.a = float(sunElevation > 1e-5)*2-1.;
lightCol.rgb = sc; lightCol.rgb = sc;
// lightCol.rgb = mix(lightCol.rgb, luma(lightCol.rgb) * vec3(1.0, 0.01, 0.1) , sandStorm);
// #ifdef VOLUMETRIC_CLOUDS // #ifdef VOLUMETRIC_CLOUDS
// #ifndef VL_Clouds_Shadows // #ifndef VL_Clouds_Shadows
// lightCol.rgb *= (1.0-rainStrength*0.9); // lightCol.rgb *= (1.0-rainStrength*0.9);

View File

@ -60,6 +60,7 @@ uniform float darknessLightFactor;
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) #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 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; // // 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, cavefogCol*fogfade, fogdistfade * (1.0-lightleakfix) * (1.0-darknessFactor) * clamp( 1.5 - np3.y,0.,1)) ;
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 = vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade ; // color.rgb = vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade ;
} }
#endif #endif

View File

@ -103,8 +103,9 @@ void main() {
/// TOOO DAMN BLUE /// TOOO DAMN BLUE
// // only need to sample one spot for this // // only need to sample one spot for this
// averageSkyCol += 2.0*skyFromTex(normalize(vec3(0.0,1.0,0.0)),colortex4).rgb/150.; // 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 --- /// /// --- SUNLIGHT/MOONLIGHT STUFF --- ///

View File

@ -163,7 +163,7 @@
BiomeColors.b = isSwamps*0.35 + isJungles*0.8 + sandStorm*0.3 + snowStorm*1.0; 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. // 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. // these range 0.0-1.0. they will never overlap.
float Inbiome = isJungles+isSwamps+sandStorm; float Inbiome = isJungles+isSwamps+sandStorm;

View File

@ -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 ; 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; 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; return SkyLight * skyLightDir + TorchLight;
} }

View File

@ -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 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 moonlightbrightness (abs(4-moonPhase))
#define moonlightbrightness2 ((moonlightbrightness/4.0) + 0.05) #define moonlightbrightness2 ((moonlightbrightness/4.0))
#if colortype == 1 #if colortype == 1
#define sunColorBase vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance #define sunColorBase vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance

View File

@ -271,13 +271,12 @@ uniform.float.Cloudy_Den = smooth(5, if( \
variable.int.BiomeTransitionTime = 30 variable.int.BiomeTransitionTime = 30
uniform.float.isJungles = smooth(6, if(in(biome,23,24,25), 1,0), BiomeTransitionTime,BiomeTransitionTime) 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.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.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.isLush = smooth(8, if(in(biome,10,50), 1,0), BiomeTransitionTime,BiomeTransitionTime) # uniform.float.isLush = smooth(8, if(in(biome,10,50), 1,0), BiomeTransitionTime,BiomeTransitionTime)