diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 2758bb7..b88d596 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -329,7 +329,6 @@ uniform int moonPhase; #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] #ifdef VOLUMETRIC_CLOUDS - #define RAYMARCH_CLOUDS_WITH_FOG #ifndef ambientLight_only #define CLOUDS_SHADOWS @@ -351,6 +350,9 @@ uniform int moonPhase; #define Cumulus2_coverage 0.3 // [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] +#if defined Cumulus && defined VOLUMETRIC_CLOUDS + #define RAYMARCH_CLOUDS_WITH_FOG +#endif #define Altostratus #define Alto_coverage 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] diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index d93731c..ab3116f 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -268,11 +268,11 @@ vec4 renderClouds( // terrible fake rayleigh scattering vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5)*3; float atmosphere = exp(abs(forg.y) * -5.0); - vec3 scatter = exp(-10000.0 * rC * atmosphere) * distantfog; + vec3 scatter = mix(vec3(1.0), exp(-10000.0 * rC * atmosphere) * distantfog, heightRelativeToClouds); - directScattering *= distantfog; - directMultiScattering *= distantfog; - sunIndirectScattering *= distantfog; + directScattering *= scatter; + directMultiScattering *= scatter; + sunIndirectScattering *= scatter; #ifdef Cumulus for(int i = 0; i < maxIT_clouds; i++) {