custommods
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
#if MC_VERSION >= 11900
|
||||
uniform float darknessFactor;
|
||||
#endif
|
||||
|
||||
#ifdef OVERWORLD
|
||||
#include "/lib/atmospherics/sunGlare.glsl"
|
||||
#endif
|
||||
|
||||
vec3 Fog1(vec3 color, float lWorldPos, float lViewPos, vec3 nViewPos, vec3 extra, float NdotU) {
|
||||
#if defined OVERWORLD && !defined ONESEVEN && !defined TWO
|
||||
#if FOG1_TYPE < 2
|
||||
float fog = lWorldPos / far * (1.0/FOG1_DISTANCE_M);
|
||||
#else
|
||||
float fog = lViewPos / far * (1.025/FOG1_DISTANCE_M);
|
||||
#endif
|
||||
|
||||
fog *= fog;
|
||||
fog *= fog;
|
||||
fog *= fog * fog;
|
||||
fog = 1.0 - exp(-6.0 * fog);
|
||||
|
||||
if (fog > 0.0) {
|
||||
vec3 artificialFogColor = GetSkyColor(lightCol, NdotU, nViewPos, false);
|
||||
artificialFogColor = SunGlare(artificialFogColor, nViewPos, lightCol);
|
||||
#ifdef CAVE_SKY_FIX
|
||||
artificialFogColor *= 1.0 - isEyeInCave;
|
||||
#endif
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fog);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined NETHER && defined NETHER_FOG // extra = nether smoke (if enabled)
|
||||
#if FOG1_TYPE > 0
|
||||
float fog = lViewPos / far * (1.0/FOG1_DISTANCE_M);
|
||||
#else
|
||||
float fog = lWorldPos / far * (1.0/FOG1_DISTANCE_M);
|
||||
#endif
|
||||
fog *= fog;
|
||||
fog *= fog;
|
||||
fog = 1.0 - exp(-8.0 * fog);
|
||||
|
||||
vec3 artificialFogColor = pow((netherCol * 2.5) / NETHER_I, vec3(2.2)) * 4;
|
||||
#ifdef NETHER_SMOKE
|
||||
artificialFogColor += extra * fog;
|
||||
#endif
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fog);
|
||||
#endif
|
||||
|
||||
#ifdef END // extra = ender nebula (if enabled)
|
||||
float fog = lWorldPos / far * (1.5/FOG1_DISTANCE_M);
|
||||
fog = 1.0 - exp(-0.1 * pow(fog, 10.0));
|
||||
if (fog > 0.0) {
|
||||
vec3 artificialFogColor = endCol * (0.035 + 0.02 * vsBrightness);
|
||||
#ifdef ENDER_NEBULA
|
||||
artificialFogColor += extra * fog;
|
||||
#endif
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fog);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TWO
|
||||
float fog = lWorldPos / far * (4.0/FOG1_DISTANCE_M);
|
||||
fog = 1.0 - exp(-0.1 * pow(fog, 3.0));
|
||||
|
||||
//float NdotU = 1.0 - max(dot(nViewPos, upVec), 0.0);
|
||||
NdotU = 1.0 - max(NdotU, 0.0);
|
||||
NdotU = NdotU * NdotU;
|
||||
#ifndef ABYSS
|
||||
vec3 midnightPurple = vec3(0.0003, 0.0004, 0.002) * 1.25;
|
||||
vec3 midnightFogColor = fogColor * fogColor * 0.3;
|
||||
#else
|
||||
vec3 midnightPurple = skyColor * skyColor * 0.00075;
|
||||
vec3 midnightFogColor = fogColor * fogColor * 0.09;
|
||||
#endif
|
||||
vec3 artificialFogColor = mix(midnightPurple, midnightFogColor, NdotU);
|
||||
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fog);
|
||||
#endif
|
||||
|
||||
#ifdef SEVEN
|
||||
float fog = lWorldPos / far * (1.5/FOG1_DISTANCE_M);
|
||||
fog = 1.0 - exp(-0.1 * pow(fog, 10.0));
|
||||
float cosT = dot(nViewPos, upVec);
|
||||
vec3 twilightPurple = vec3(0.005, 0.006, 0.018);
|
||||
vec3 twilightGreen = vec3(0.015, 0.03, 0.02);
|
||||
#ifdef TWENTY
|
||||
twilightPurple = twilightGreen * 0.1;
|
||||
#endif
|
||||
vec3 artificialFogColor = 2 * (twilightPurple * 2 * clamp(pow(cosT, 0.7), 0.0, 1.0) + twilightGreen * (1-clamp(pow(cosT, 0.7), 0.0, 1.0)));
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fog);
|
||||
#endif
|
||||
|
||||
#ifdef ONESEVEN
|
||||
float fogoneseven = lWorldPos / 16 * (1.35-sunVisibility*0.35);
|
||||
fogoneseven = 1.0 - exp(-0.1 * pow(fogoneseven, 3.0));
|
||||
|
||||
if (fogoneseven > 0.0) {
|
||||
vec3 artificialFogColor = GetSkyColor(lightCol, NdotU, nViewPos, false);
|
||||
artificialFogColor = SunGlare(artificialFogColor, nViewPos, lightCol);
|
||||
color.rgb = mix(color.rgb, artificialFogColor, fogoneseven);
|
||||
}
|
||||
#endif
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
vec3 Fog2(vec3 color, float lViewPos, vec3 worldPos) {
|
||||
|
||||
#ifdef OVERWORLD
|
||||
#ifdef FOG2_ALTITUDE_MODE
|
||||
float altitudeFactor = (worldPos.y + eyeAltitude + 1000.0 - FOG2_ALTITUDE) * 0.001;
|
||||
if (altitudeFactor > 0.965 && altitudeFactor < 1.0) altitudeFactor = pow(altitudeFactor, 1.0 - (altitudeFactor - 0.965) * 28.57);
|
||||
altitudeFactor = clamp(pow(altitudeFactor, 20.0), 0.0, 1.0);
|
||||
#endif
|
||||
|
||||
//duplicate 307309760
|
||||
float fog2 = lViewPos / pow(far, 0.25) * 0.112 * (1.0 + rainStrengthS * FOG2_RAIN_DISTANCE_M)
|
||||
* (1.0 - sunVisibility * 0.25 * (1.0 - rainStrengthS)) / FOG2_DISTANCE_M;
|
||||
fog2 = (1.0 - (exp(-50.0 * pow(fog2*0.125, 3.25) * eBS)));
|
||||
fog2 *= min(FOG2_OPACITY * (3.0 + rainStrengthS * FOG2_RAIN_OPACITY_M - sunVisibility * 2.0), 1.0);
|
||||
#ifdef FOG2_ALTITUDE_MODE
|
||||
fog2 *= pow(clamp((eyeAltitude - FOG2_ALTITUDE*0.2) / FOG2_ALTITUDE, 0.0, 1.0), 2.5 - FOG2_RAIN_ALTITUDE_M * rainStrengthS * 2.5);
|
||||
fog2 *= 1.0 - altitudeFactor * (1.0 - FOG2_RAIN_ALTITUDE_M * rainStrengthS);
|
||||
#endif
|
||||
|
||||
float sunVisibility2 = sunVisibility * sunVisibility;
|
||||
float sunVisibility4 = sunVisibility2 * sunVisibility2;
|
||||
float sunVisibility8 = sunVisibility4 * sunVisibility4;
|
||||
float timeBrightness2 = sqrt1(timeBrightness);
|
||||
vec3 fogColor2 = mix(lightCol*0.5, skyColor*skyMult*1.25, timeBrightness2);
|
||||
fogColor2 = mix(ambientNight*ambientNight, fogColor2, sunVisibility8);
|
||||
if (rainStrengthS > 0.0) {
|
||||
float rainStrengthS2 = 1.0 - (1.0 - rainStrengthS) * (1.0 - rainStrengthS);
|
||||
vec3 rainFogColor = FOG2_RAIN_BRIGHTNESS_M * skyColCustom * (0.01 + 0.05 * sunVisibility8 + 0.1 * timeBrightness2);
|
||||
rainFogColor *= mix(SKY_RAIN_NIGHT, SKY_RAIN_DAY, sunVisibility);
|
||||
fogColor2 = mix(fogColor2, rainFogColor, rainStrengthS2);
|
||||
}
|
||||
fogColor2 *= FOG2_BRIGHTNESS;
|
||||
#ifdef CAVE_SKY_FIX
|
||||
fogColor2 *= 1.0 - isEyeInCave;
|
||||
#endif
|
||||
|
||||
color.rgb = mix(color.rgb, fogColor2, fog2);
|
||||
#endif
|
||||
|
||||
#ifdef END
|
||||
float fog2 = lViewPos / pow(far, 0.25) * 0.035 * (32.0/FOG2_END_DISTANCE_M);
|
||||
fog2 = 1.0 - (exp(-50.0 * pow(fog2*0.125, 4.0)));
|
||||
#ifdef FOG2_ALTITUDE_MODE
|
||||
float altitudeFactor = clamp((worldPos.y + eyeAltitude + 100.0 - FOG2_END_ALTITUDE) * 0.01, 0.0, 1.0);
|
||||
if (altitudeFactor > 0.75 && altitudeFactor < 1.0) altitudeFactor = pow(altitudeFactor, 1.0 - (altitudeFactor - 0.75) * 4.0);
|
||||
fog2 *= 1.0 - altitudeFactor;
|
||||
#endif
|
||||
fog2 = clamp(fog2, 0.0, 0.125) * (7.0 + fog2);
|
||||
fog2 = 1 - pow(1 - fog2, 2.0 - fog2);
|
||||
vec3 fogColor2 = endCol * (0.035 + 0.02 * vsBrightness);
|
||||
color.rgb = mix(color.rgb, fogColor2 * FOG2_END_BRIGHTNESS, fog2 * FOG2_END_OPACITY);
|
||||
#endif
|
||||
|
||||
#if defined SEVEN && !defined TWENTY
|
||||
float fog2 = lViewPos / pow(far, 0.25) * 0.035 * (1.0 + rainStrengthS) * (3.2/FOG2_DISTANCE_M);
|
||||
fog2 = 1.0 - (exp(-50.0 * pow(fog2*0.125, 4.0) * eBS));
|
||||
float altitudeFactor = (worldPos.y + eyeAltitude + 1000.0 - 90 * (1 + rainStrengthS*0.5)) * 0.001;
|
||||
if (altitudeFactor > 0.965 && altitudeFactor < 1.0) altitudeFactor = pow(altitudeFactor, 1.0 - (altitudeFactor - 0.965) * 28.57);
|
||||
fog2 *= 1.0 - altitudeFactor;
|
||||
fog2 = clamp(fog2, 0.0, 0.125) * (7.0 + fog2);
|
||||
vec3 fogColor2 = vec3(0.015, 0.03, 0.02);
|
||||
color.rgb = mix(color.rgb, fogColor2, fog2 * 0.80);
|
||||
#endif
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
vec3 WaterFog(vec3 color, float lViewPos, float fogrange) {
|
||||
float fog = lViewPos / fogrange;
|
||||
fog = 1.0 - exp(-3.0 * fog * fog);
|
||||
color *= pow(max(underwaterColor.rgb, vec3(0.1)), vec3(0.5)) * 3.0;
|
||||
color = mix(color, 0.8 * pow(underwaterColor.rgb * (1.0 - blindFactor), vec3(2.0)), fog);
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
vec3 LavaFog(vec3 color, float lViewPos) {
|
||||
#ifndef LAVA_VISIBILITY
|
||||
float fog = (lViewPos - gl_Fog.start) * gl_Fog.scale;
|
||||
fog *= fog;
|
||||
fog = 1.0 - exp(- fog);
|
||||
fog = clamp(fog, 0.0, 1.0);
|
||||
#else
|
||||
float fog = lViewPos * 0.02;
|
||||
fog = 1.0 - exp(-3.0 * fog);
|
||||
#if MC_VERSION >= 11700
|
||||
if (gl_Fog.start / far < 0.0) fog = min(lViewPos * 0.01, 1.0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//duplicate 792763950
|
||||
#ifndef VANILLA_UNDERLAVA_COLOR
|
||||
vec3 lavaFogColor = vec3(0.6, 0.35, 0.15);
|
||||
#else
|
||||
vec3 lavaFogColor = pow(fogColor, vec3(2.2));
|
||||
#endif
|
||||
color.rgb = mix(color.rgb, lavaFogColor, fog);
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
vec3 SnowFog(vec3 color, float lViewPos) {
|
||||
float fog = lViewPos * 0.3;
|
||||
fog = (1.0 - exp(-4.0 * fog * fog * fog));
|
||||
color.rgb = mix(color.rgb, vec3(0.1, 0.15, 0.2), fog);
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
vec3 BlindFog(vec3 color, float lViewPos) {
|
||||
float fog = lViewPos *0.04* (5.0 / blindFactor);
|
||||
fog = (1.0 - exp(-6.0 * fog * fog * fog)) * blindFactor;
|
||||
color.rgb = mix(color.rgb, vec3(0.0), fog);
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
|
||||
#if MC_VERSION >= 11900
|
||||
vec3 DarknessFog(vec3 color, float lViewPos) {
|
||||
float fog = lViewPos * 0.06;
|
||||
fog = (1.0 - exp(-6.0 * fog * fog * fog)) * darknessFactor;
|
||||
color.rgb = mix(color.rgb, darknessColor, fog);
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
#endif
|
||||
|
||||
vec3 startFog(vec3 color, vec3 nViewPos, float lViewPos, vec3 worldPos, vec3 extra, float NdotU) {
|
||||
#if !defined GBUFFER_CODING
|
||||
if (isEyeInWater == 0) {
|
||||
#ifdef FOG2
|
||||
color.rgb = Fog2(color.rgb, lViewPos, worldPos);
|
||||
#endif
|
||||
#ifdef FOG1
|
||||
color.rgb = Fog1(color.rgb, length(worldPos.xz), lViewPos, nViewPos, extra, NdotU);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
if (blindFactor < 0.001) {
|
||||
if (isEyeInWater == 1) color.rgb = WaterFog(color.rgb, lViewPos, waterFog * (1.0 + eBS));
|
||||
if (isEyeInWater == 2) color.rgb = LavaFog(color.rgb, lViewPos);
|
||||
#if MC_VERSION >= 11700
|
||||
if (isEyeInWater == 3) color.rgb = SnowFog(color.rgb, lViewPos);
|
||||
#endif
|
||||
} else color.rgb = BlindFog(color.rgb, lViewPos);
|
||||
#if MC_VERSION >= 11900
|
||||
if (darknessFactor > 0.001) color.rgb = DarknessFog(color.rgb, lViewPos);
|
||||
#endif
|
||||
|
||||
return color.rgb;
|
||||
}
|
||||
Reference in New Issue
Block a user