refraction TEST

TESSSSSSSSSSSSSSSSSSSSST
This commit is contained in:
Xonk 2023-05-09 19:08:34 -04:00
parent 82668ef211
commit 3b8cc5a19a
5 changed files with 84 additions and 112 deletions

View File

@ -218,8 +218,8 @@ void main() {
/// --- REFRACTION --- /// /// --- REFRACTION --- ///
#ifdef Refraction #ifdef Refraction
// refractedCoord += (tangentNormals * clamp((ld(z2) - ld(z)) * 0.5,0.0,0.15)) * RENDER_SCALE; refractedCoord += (tangentNormals * clamp((ld(z2) - ld(z)) * 0.5,0.0,0.15)) * RENDER_SCALE;
refractedCoord += tangentNormals * 0.1 * RENDER_SCALE; // refractedCoord += tangentNormals * 0.1 * RENDER_SCALE;
float refractedalpha = decodeVec2(texture2D(colortex11,refractedCoord).b).g; float refractedalpha = decodeVec2(texture2D(colortex11,refractedCoord).b).g;
float refractedalpha2 = texture2D(colortex7,refractedCoord).a; float refractedalpha2 = texture2D(colortex7,refractedCoord).a;

View File

@ -92,74 +92,43 @@ float day7 = clamp(clamp(Day-7, 0.0,1.0)*clamp(9-Day, 0.0,1.0),0.0,1.0);
#ifdef WEATHERCLOUDS #ifdef WEATHERCLOUDS
uniform float CumulusCoverage; uniform float Cumulus_Cov;
uniform float Alto_Cov;
uniform float Alto_Den;
uniform float CirrusCoverage; uniform float CirrusCoverage;
uniform float CirrusThickness; uniform float CirrusThickness;
float DailyWeather_LowAltitude( float DailyWeather_Cumulus(
float Coverage float Coverage
){ ){
// #ifdef Daily_Weather
// int W_DAY = WeatherDay;
// if(W_DAY > -1) {
// if(W_DAY == 0) Coverage += 0.1;
// if(W_DAY == 1) Coverage += 0.5;
// if(W_DAY == 2) Coverage += 0.2;
// if(W_DAY == 3) Coverage += 0.8;
// if(W_DAY == 4) Coverage += 0.1;
// if(W_DAY == 5) Coverage += 0.6;
// if(W_DAY == 6) Coverage += 0.0;
// if(W_DAY == 7) Coverage += 1.0;
// }else{
// Coverage += mix(CumulusCoverage, Rain_coverage, rainStrength);
// }
// #else
// Coverage += mix(cloudCoverage, Rain_coverage, rainStrength);
// #endif
#ifdef Daily_Weather #ifdef Daily_Weather
Coverage += day0 * 0.3 + day1 * 0.8 + day2 * 0.2 + day3 * 0.0 + day4 * 0.8 + day5 * 0.5 + day6 * -0.5 + day7 * 0.6; // Coverage += day0 * 0.3 + day1 * 0.8 + day2 * 0.2 + day3 * 0.0 + day4 * 0.8 + day5 * 0.5 + day6 * -0.5 + day7 * 0.6;
Coverage += Cumulus_Cov;
#else #else
Coverage += mix(Cumulus_coverage, Rain_coverage, rainStrength); Coverage += mix(Cumulus_coverage, Rain_coverage, rainStrength);
// Coverage = mix(Coverage, Rain_coverage, rainStrength); // Coverage = mix(Coverage, Rain_coverage, rainStrength);
#endif #endif
return Coverage; return Coverage;
} }
void DailyWeather_HighAltitude( void DailyWeather_Alto(
inout float Coverage, inout float Coverage,
inout float Thickness inout float Density
){ ){
#ifdef Daily_Weather #ifdef Daily_Weather
float W_DAY = WeatherDay; Coverage = Alto_Cov;
Density = Alto_Den;
if(W_DAY > -1) {
if(W_DAY == 0){ Coverage = 0.8; Thickness = 0.5; }
if(W_DAY == 1){ Coverage = 0.8; Thickness = 0.5; }
if(W_DAY == 2){ Coverage = 0.0; Thickness = 0.5; }
if(W_DAY == 3){ Coverage = 0.0; Thickness = 0.5; }
if(W_DAY == 4){ Coverage = 0.0; Thickness = 0.5; }
if(W_DAY == 5){ Coverage = 0.0; Thickness = 0.5; }
if(W_DAY == 6){ Coverage = 0.0; Thickness = 0.5; }
if(W_DAY == 7){ Coverage = 0.0; Thickness = 0.5; }
}else{
Coverage = CirrusCoverage;
Thickness = CirrusThickness;
}
#else #else
Coverage = 0.7; Coverage = Alto_coverage;
Thickness = 0.05; Density = Alto_density;
#endif #endif
Coverage = pow(1.0-Coverage,3) * 50;
Thickness = Thickness * 10;
} }
#endif #endif
#ifdef Daily_Weather #ifdef Daily_Weather
@ -177,8 +146,8 @@ float day7 = clamp(clamp(Day-7, 0.0,1.0)*clamp(9-Day, 0.0,1.0),0.0,1.0);
vec4 FoggyDay_C = vec4(25); vec4 FoggyDay_C = vec4(25);
UniformDensity += FoggyDay_U*day1 + MistyDay_U*day4; // UniformDensity += FoggyDay_U*day1 + MistyDay_U*day4;
CloudyDensity += FoggyDay_C*day1; // CloudyDensity += FoggyDay_C*day1;
} }
#endif #endif

View File

@ -205,10 +205,7 @@
#define Spring_Leaf_R 1.0 // the color of the plants during this season [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] #define Spring_Leaf_R 1.0 // the color of the plants during this season [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]
#define Spring_Leaf_G 0.8 // the color of the plants during this season [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] #define Spring_Leaf_G 0.8 // the color of the plants during this season [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]
#define Spring_Leaf_B 0.8 // the color of the plants during this season [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] #define Spring_Leaf_B 0.8 // the color of the plants during this season [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]
#define Daily_Weather // different skies for different days, and fog.
#define WeatherDay -1 // [-1 0 1 2 3 4 5 6 7]
#define cloudCoverage 0.4 // Cloud coverage [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
#define Rain_coverage 0.8 // how much the coverage of the clouds change during rain [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0]
#define Biome_specific_environment // makes the fog density and color look unique in certain biomes. (swamps, jungles, lush caves, giant pines, dark forests) #define Biome_specific_environment // makes the fog density and color look unique in certain biomes. (swamps, jungles, lush caves, giant pines, dark forests)
const float ambientOcclusionLevel = 1.0; //[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 ] const float ambientOcclusionLevel = 1.0; //[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 ]
const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -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 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 ] const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -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 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 ]
@ -247,8 +244,8 @@ const float shadowDistanceRenderMul = -1.0; //[-1.0 1.0] Can help to increase sh
// --- REFLECTIONS --- // --- REFLECTIONS ---
//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. //#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK.
#define Screen_Space_Reflections // toggle screenspace reflections. if you want normal performance but still want a bit of shiny, the sun reflection stays on when this is turned off. // #define Screen_Space_Reflections // toggle screenspace reflections. if you want normal performance but still want a bit of shiny, the sun reflection stays on when this is turned off.
#define Sky_reflection // just in case you dont want it i guess // #define Sky_reflection // just in case you dont want it i guess
// #define Rough_reflections // turns the roughness GGXVNDF ON. sizable performance impact, and introduces alot of noise. // #define Rough_reflections // turns the roughness GGXVNDF ON. sizable performance impact, and introduces alot of noise.
#define Sun_specular_Strength 3 // increase for more sparkles [1 2 3 4 5 6 7 8 9 10] #define Sun_specular_Strength 3 // increase for more sparkles [1 2 3 4 5 6 7 8 9 10]
#define reflection_quality 30 // adjust the quality of the screenspace reflections. [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 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 ] #define reflection_quality 30 // adjust the quality of the screenspace reflections. [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 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 ]
@ -277,13 +274,17 @@ const float shadowDistanceRenderMul = -1.0; //[-1.0 1.0] Can help to increase sh
#define Cumulus_coverage 0.4 // [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] #define Cumulus_coverage 0.4 // [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]
#define Cumulus_density 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.00] #define Cumulus_density 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.00]
#define Altostratus // a layer of clouds WAAAY up yonder #define Altostratus // a layer of clouds WAAAY up yonder
#define Alto_coverage 0.5 // [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] #define Alto_coverage 0.5 // [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]
#define Alto_density 0.05 // [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 Alto_density 0.05 // [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 Daily_Weather // different skies for different days, and fog.
#define WeatherDay -1 // [-1 0 1 2 3 4 5 6 7]
#define cloudCoverage 0.4 // Cloud coverage [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
#define Rain_coverage 0.8 // how much the coverage of the clouds change during rain [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0]
#define cloud_LevelOfDetail 1 // Number of fbm noise iterations for on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] #define cloud_LevelOfDetail 1 // Number of fbm noise iterations for on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8]
#define cloud_ShadowLevelOfDetail 0 // Number of fbm noise iterations for the shadowing of on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] #define cloud_ShadowLevelOfDetail 0 // Number of fbm noise iterations for the shadowing of on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8]

View File

@ -46,31 +46,23 @@ float densityAtPos(in vec3 pos){
float cloudCov(in vec3 pos,vec3 samplePos){ float cloudCov(in vec3 pos,vec3 samplePos){
// vec2 windshift2 = pow( max(MaxCumulusHeight - pos.y, 0.0) / 20,2) * vec2(1);
// windshift.x *= sin(frameTimeCounter);
// windshift.y *= -cos(frameTimeCounter);
float CloudLarge = texture2D(noisetex, (samplePos.xz + cloud_movement) / 5000 ).b; float CloudLarge = texture2D(noisetex, (samplePos.xz + cloud_movement) / 5000 ).b;
vec2 windshift = pow( max(pos.y-CumulusHeight, 0.0) / 5,1.5) * vec2(1) * (CloudLarge*2-1.15);
float CloudSmall = texture2D(noisetex, (samplePos.xz - cloud_movement) / 500 ).r; float CloudSmall = texture2D(noisetex, (samplePos.xz - cloud_movement) / 500 ).r;
float coverage = abs(pow(CloudLarge,1)*2.0 - 1.2)*0.5 - (1.0-CloudSmall) + 0.3;
float Topshape = max(pos.y - (MaxCumulusHeight + CumulusHeight)*0.46, 0.0) / 200; float Topshape = max(pos.y - (MaxCumulusHeight + CumulusHeight)*0.46, 0.0) / 200;
Topshape += max(exp((pos.y - MaxCumulusHeight) / 10.0 ), 0.0) ; Topshape += max(exp((pos.y - MaxCumulusHeight) / 10.0 ), 0.0) ;
float FinalShape = DailyWeather_LowAltitude(coverage) - Topshape; float coverage = abs(pow(CloudLarge,1)*2.0 - 1.2)*0.5 - (1.0-CloudSmall);
float FinalShape = DailyWeather_Cumulus(coverage) - Topshape;
// cap the top and bottom for reasons // cap the top and bottom for reasons
float capbase = sqrt(max(CumulusHeight*1.05 - pos.y, 0.0)/50) ; float capbase = sqrt(max(CumulusHeight*1.05 - pos.y, 0.0)/50) ;
float captop = max(pos.y - MaxCumulusHeight, 0.0); float captop = max(pos.y - MaxCumulusHeight, 0.0);
FinalShape = FinalShape - capbase - captop ; FinalShape = max(FinalShape - capbase - captop, 0.0);
return max(FinalShape,0.0); return FinalShape;
} }
//Erode cloud with 3d Perlin-worley noise, actual cloud value //Erode cloud with 3d Perlin-worley noise, actual cloud value
@ -114,8 +106,12 @@ float GetAltostratusDensity(vec3 pos){
float small = texture2D(noisetex, (pos.xz - cloud_movement)/10000. - vec2(-large,1-large)/5).b; float small = texture2D(noisetex, (pos.xz - cloud_movement)/10000. - vec2(-large,1-large)/5).b;
float shape = (small + pow((1.0-large),2.0))/2.0; float shape = (small + pow((1.0-large),2.0))/2.0;
float Coverage; float Density;
DailyWeather_Alto(Coverage,Density);
shape = pow(max(shape + Alto_coverage - 0.5,0.0),2.0); shape = pow(max(shape + Coverage - 0.5,0.0),2.0);
shape *= Density;
return shape; return shape;
} }
@ -134,7 +130,8 @@ vec3 Cloud_lighting(
vec3 moonContribution, vec3 moonContribution,
float AmbientShadow, float AmbientShadow,
int cloudType, int cloudType,
vec3 pos vec3 pos,
float altoShadow
){ ){
float coeeff = -30; float coeeff = -30;
// float powder = 1.0 - exp((CloudShape*CloudShape) * -800); // float powder = 1.0 - exp((CloudShape*CloudShape) * -800);
@ -143,14 +140,20 @@ vec3 Cloud_lighting(
vec3 skyLighting = SkyColors; vec3 skyLighting = SkyColors;
#ifdef Altostratus #ifdef Altostratus
skyLighting += sunContributionMulti * 5.0 * exp(SunShadowing * -3) * clamp(Alto_coverage * (1-Alto_density),0,1); float Coverage; float Density;
DailyWeather_Alto(Coverage,Density);
skyLighting += sunContributionMulti * exp(SunShadowing * -3) * clamp(Coverage * (1-Density),0,1);
// skyLighting += (sunContributionMulti * 5.0 * exp(SunShadowing * -3)) * exp(altoShadow * -0.1);
#endif #endif
skyLighting *= exp(SkyShadowing * AmbientShadow * coeeff/2 ) * lesspowder ; skyLighting *= exp(SkyShadowing * AmbientShadow * coeeff/2 ) * lesspowder ;
if(cloudType == 1){ if(cloudType == 1){
coeeff = -3; coeeff = -10;
skyLighting = SkyColors * exp(SkyShadowing * coeeff/15) * lesspowder; skyLighting = SkyColors * exp(SkyShadowing * coeeff/15) * lesspowder;
} }
@ -160,7 +163,7 @@ vec3 Cloud_lighting(
vec3 moonLighting = exp(MoonShadowing * coeeff / 3) * moonContribution * powder; vec3 moonLighting = exp(MoonShadowing * coeeff / 3) * moonContribution * powder;
return skyLighting + moonLighting + sunLighting ; return skyLighting + moonLighting + sunLighting ;
// return sunLighting; // return skyLighting;
} }
//Mie phase function //Mie phase function
@ -272,12 +275,12 @@ vec4 renderClouds(
#ifdef Altostratus #ifdef Altostratus
// cast a shadow from higher clouds onto lower clouds // cast a shadow from higher clouds onto lower clouds
vec3 HighAlt_shadowPos = progress_view + dV_Sun/abs(dV_Sun.y) * max(AltostratusHeight - progress_view.y,0.0); vec3 HighAlt_shadowPos = progress_view + dV_Sun/abs(dV_Sun.y) * max(AltostratusHeight - progress_view.y,0.0);
float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos) * Alto_density ; float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos);
Sunlight += HighAlt_shadow; Sunlight += HighAlt_shadow;
#endif #endif
float ambientlightshadow = 1.0-clamp(exp((progress_view.y - (MaxCumulusHeight + CumulusHeight)*0.5) / 100.0),0.0,1.0); float ambientlightshadow = 1.0-clamp(exp((progress_view.y - (MaxCumulusHeight + CumulusHeight)*0.5) / 100.0),0.0,1.0);
vec3 S = Cloud_lighting(muE, cumulus*Cumulus_density, Sunlight, MoonLight, SkyColor, sunContribution, sunContributionMulti, moonContribution, ambientlightshadow, 0, progress_view); vec3 S = Cloud_lighting(muE, cumulus*Cumulus_density, Sunlight, MoonLight, SkyColor, sunContribution, sunContributionMulti, moonContribution, ambientlightshadow, 0, progress_view, HighAlt_shadow);
vec3 Sint = (S - S * exp(-mult*muE)) / muE; vec3 Sint = (S - S * exp(-mult*muE)) / muE;
color += max(muE*Sint*total_extinction,0.0); color += max(muE*Sint*total_extinction,0.0);
@ -294,7 +297,7 @@ vec4 renderClouds(
if (max(AltostratusHeight-cameraPosition.y,0.0)/max(normalize(dV_view).y,0.0) / 100000.0 < AltostratusHeight) { if (max(AltostratusHeight-cameraPosition.y,0.0)/max(normalize(dV_view).y,0.0) / 100000.0 < AltostratusHeight) {
vec3 progress_view_high = dV_view2 + cameraPosition + dV_view2/dV_view2.y * max(AltostratusHeight-cameraPosition.y,0.0); vec3 progress_view_high = dV_view2 + cameraPosition + dV_view2/dV_view2.y * max(AltostratusHeight-cameraPosition.y,0.0);
float altostratus = GetAltostratusDensity(progress_view_high) * Alto_density; float altostratus = GetAltostratusDensity(progress_view_high);
float Sunlight = 0.0; float Sunlight = 0.0;
float MoonLight = 0.0; float MoonLight = 0.0;
@ -302,10 +305,10 @@ vec4 renderClouds(
if(altostratus > 1e-5){ if(altostratus > 1e-5){
for (int j = 0; j < 2; j++){ for (int j = 0; j < 2; j++){
vec3 shadowSamplePos_high = progress_view_high + dV_Sun * float(j+Dither.y); vec3 shadowSamplePos_high = progress_view_high + dV_Sun * float(j+Dither.y);
float shadow = GetAltostratusDensity(shadowSamplePos_high) * Alto_density; float shadow = GetAltostratusDensity(shadowSamplePos_high);
Sunlight += shadow; Sunlight += shadow;
} }
vec3 S = Cloud_lighting(altostratus, altostratus, Sunlight, MoonLight, SkyColor, sunContribution, sunContributionMulti, moonContribution, 1, 1, progress_view_high); vec3 S = Cloud_lighting(altostratus, altostratus, Sunlight, MoonLight, SkyColor, sunContribution, sunContributionMulti, moonContribution, 1, 1, progress_view_high, 0);
vec3 Sint = (S - S * exp(-20*altostratus)) / altostratus; vec3 Sint = (S - S * exp(-20*altostratus)) / altostratus;
color += max(altostratus*Sint*total_extinction,0.0); color += max(altostratus*Sint*total_extinction,0.0);
@ -339,7 +342,7 @@ float GetCloudShadow(vec3 eyePlayerPos){
#ifdef Altostratus #ifdef Altostratus
vec3 highShadowStart = playerPos + WsunVec/abs(WsunVec.y) * max(AltostratusHeight - playerPos.y,0.0); vec3 highShadowStart = playerPos + WsunVec/abs(WsunVec.y) * max(AltostratusHeight - playerPos.y,0.0);
shadow += GetAltostratusDensity(highShadowStart) * Alto_density; shadow += GetAltostratusDensity(highShadowStart);
#endif #endif
shadow = shadow/2.0; // perhaps i should average the 2 shadows being added.... shadow = shadow/2.0; // perhaps i should average the 2 shadows being added....
@ -359,7 +362,7 @@ float GetCloudShadow_VLFOG(vec3 WorldPos){
#ifdef Altostratus #ifdef Altostratus
vec3 highShadowStart = WorldPos + WsunVec/abs(WsunVec.y) * max(AltostratusHeight - WorldPos.y,0.0); vec3 highShadowStart = WorldPos + WsunVec/abs(WsunVec.y) * max(AltostratusHeight - WorldPos.y,0.0);
shadow += GetAltostratusDensity(highShadowStart) * Alto_density; shadow += GetAltostratusDensity(highShadowStart);
#endif #endif
// shadow = shadow/2.0; // perhaps i should average the 2 shadows being added.... // shadow = shadow/2.0; // perhaps i should average the 2 shadows being added....

View File

@ -201,40 +201,39 @@ screen = [Direct_Light] [World] [Ambient_light] [Fog] [Post_Processing] [Clouds]
screen.Advanced = 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 screen.Advanced = 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
######## moonphase based weather ######## moonphase based weather
uniform.float.Cumulus_Cov = smooth( if( \
uniform.float.CumulusCoverage = smooth(1, if( \ moonPhase == 0, 0.9, \
moonPhase == 0, 0.3, \ moonPhase == 1, 0.0, \
moonPhase == 1, 0.8, \ moonPhase == 2, 0.0, \
moonPhase == 2, 0.2, \
moonPhase == 3, 0.0, \
moonPhase == 4, 0.8, \
moonPhase == 5, 0.5, \
moonPhase == 6, -0.5, \
0.6 ), 60, 60)
uniform.float.CirrusCoverage = smooth(2, if( \
moonPhase == 0, 0.5, \
moonPhase == 1, 0.65, \
moonPhase == 2, 0.6, \
moonPhase == 3, 0.0, \
moonPhase == 4, 0.5, \
moonPhase == 5, 0.5, \
moonPhase == 6, 0.6, \
0.5 ), 60, 60)
uniform.float.CirrusThickness = smooth(3, if( \
moonPhase == 0, 0.05, \
moonPhase == 1, 0.2, \
moonPhase == 2, 0.2, \
moonPhase == 3, 0.0, \ moonPhase == 3, 0.0, \
moonPhase == 4, 0.0, \ moonPhase == 4, 0.0, \
moonPhase == 5, 0.05, \ moonPhase == 5, 0.0, \
moonPhase == 6, 0.2, \ moonPhase == 6, 0.0, \
0.1 ), 60, 60) 0.0 ), 5, 5)
uniform.float.Alto_Cov = smooth( if( \
moonPhase == 0, 1.0, \
moonPhase == 1, 0.0, \
moonPhase == 2, 0.0, \
moonPhase == 3, 0.0, \
moonPhase == 4, 0.0, \
moonPhase == 5, 0.0, \
moonPhase == 6, 0.0, \
0.0 ), 5, 5)
uniform.float.Alto_Den = smooth( if( \
moonPhase == 0, 0.1, \
moonPhase == 1, 0.0, \
moonPhase == 2, 0.0, \
moonPhase == 3, 0.0, \
moonPhase == 4, 0.0, \
moonPhase == 5, 0.0, \
moonPhase == 6, 0.0, \
0.0 ), 5, 5)
uniform.float.Day = smooth(4, if( \ uniform.float.Day = smooth( if( \
moonPhase == 0, 1, \ moonPhase == 0, 1, \
moonPhase == 1, 2, \ moonPhase == 1, 2, \
moonPhase == 2, 3, \ moonPhase == 2, 3, \