Add lightning textures to thunder clouds
No files matched your search
@@ -531,10 +531,15 @@ void main() {
|
||||
vec3 indirectLightColor = averageSkyCol / 1200.0;
|
||||
vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0;
|
||||
float cloudPlaneDistance = 0.0;
|
||||
vec2 cloudDistance = vec2(0.0); // r = cumulus, g = cumulonimbus
|
||||
|
||||
#if defined OVERWORLD_SHADER
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WrealSunVec, WmoonVec, directSunlightColor, directMoonlightColor, indirectLightColor, cloudPlaneDistance);
|
||||
#ifdef OVERWORLD_SHADER
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WrealSunVec, WmoonVec, directSunlightColor, directMoonlightColor, indirectLightColor, cloudPlaneDistance, cloudDistance);
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
imageStore(cloudDepthTex, ivec2(gl_FragCoord.xy), vec4(cloudDistance.r, cloudDistance.g, 0, 1));
|
||||
#endif
|
||||
|
||||
#ifdef CAVE_FOG
|
||||
#if (CAVE_DETECTION == 0.0) || (CAVE_DETECTION == 1.0)
|
||||
#if (CAVE_DETECTION == 1.0)
|
||||
@@ -548,27 +553,24 @@ void main() {
|
||||
|
||||
float skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2)* caveDetection * caveFactor;
|
||||
VolumetricClouds.rgb *= 1.0-skyhole;
|
||||
VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole);
|
||||
VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
float atmosphereAlpha = 1.0;
|
||||
|
||||
vec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb;
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos0, WsunVec, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb, cloudPlaneDistance);
|
||||
|
||||
VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a);
|
||||
#endif
|
||||
|
||||
#if defined NETHER_SHADER || defined END_SHADER
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y);
|
||||
#endif
|
||||
|
||||
#if defined OVERWORLD_SHADER
|
||||
VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a);
|
||||
#endif
|
||||
|
||||
if (isEyeInWater == 1){
|
||||
vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0_water, length(viewPos0_water), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0_water), normalize(sunVec* lightCol.a ) ));
|
||||
vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0_water, length(viewPos0_water), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos0_water), normalize(sunVec * lightCol.a)));
|
||||
|
||||
VolumetricFog = vec4(underWaterFog.rgb, 1.0);
|
||||
}
|
||||
@@ -576,7 +578,6 @@ void main() {
|
||||
|
||||
// VolumetricFog = raymarchTest2(viewPos0, BN.x);
|
||||
// VolumetricFog = raymarchTest(viewPos0, BN);
|
||||
|
||||
gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0);
|
||||
|
||||
}
|
||||
@@ -35,7 +35,6 @@ uniform sampler2D colortex14;
|
||||
uniform sampler2D colortex15;
|
||||
uniform vec2 texelSize;
|
||||
|
||||
uniform sampler2D colortex4;
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
uniform float nightVision;
|
||||
@@ -68,6 +67,35 @@ uniform float darknessFactor;
|
||||
uniform float darknessLightFactor;
|
||||
uniform float caveDetection;
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined OVERWORLD_SHADER && defined CUMULONIMBUS
|
||||
uniform float sunElevation;
|
||||
uniform vec4 lightningBoltPosition;
|
||||
|
||||
#include "/lib/scene_controller.glsl"
|
||||
|
||||
uniform sampler2D lightningTex1;
|
||||
uniform sampler2D lightningTex2;
|
||||
uniform sampler2D lightningTex3;
|
||||
uniform sampler2D lightningTex4;
|
||||
uniform sampler2D lightningTex5;
|
||||
uniform sampler2D lightningTex6;
|
||||
uniform sampler2D lightningTex7;
|
||||
uniform sampler2D lightningTex8;
|
||||
uniform sampler2D lightningTex9;
|
||||
uniform sampler2D lightningTex10;
|
||||
uniform sampler2D lightningTex11;
|
||||
uniform sampler2D lightningTex12;
|
||||
uniform sampler2D lightningTex13;
|
||||
uniform sampler2D lightningTex14;
|
||||
uniform sampler2D lightningTex15;
|
||||
uniform sampler2D lightningTex16;
|
||||
|
||||
#define LIGHTNING_ONLY;
|
||||
#include "/lib/volumetricClouds.glsl"
|
||||
#else
|
||||
uniform sampler2D colortex4;
|
||||
#endif
|
||||
|
||||
#include "/lib/waterBump.glsl"
|
||||
#include "/lib/res_params.glsl"
|
||||
|
||||
@@ -86,6 +114,12 @@ float ld(float depth) {
|
||||
return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near
|
||||
}
|
||||
|
||||
float convertHandDepth(float depth) {
|
||||
float ndcDepth = depth * 2.0 - 1.0;
|
||||
ndcDepth /= MC_HAND_DEPTH;
|
||||
return ndcDepth * 0.5 + 0.5;
|
||||
}
|
||||
|
||||
float luma(vec3 color) {
|
||||
return dot(color,vec3(0.21, 0.72, 0.07));
|
||||
}
|
||||
@@ -554,6 +588,145 @@ void main() {
|
||||
}
|
||||
|
||||
////// --------------- VARIOUS FOG EFFECTS (behind volumetric fog)
|
||||
|
||||
////// --------------- lightning effect
|
||||
|
||||
bool isLightning = false;
|
||||
|
||||
#if defined OVERWORLD_SHADER && defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
|
||||
vec2 cloudDepth = imageLoad(cloudDepthTex, ivec2(gl_FragCoord.xy*VL_RENDER_RESOLUTION*RENDER_SCALE)).rg;
|
||||
|
||||
vec3 lightningpos = vec3(getLightningPosition(600, 4680));
|
||||
//lightningpos = vec3(0,0,1);
|
||||
|
||||
float lightningDist = length(lightningpos);
|
||||
|
||||
if ((lightningDist < cloudDepth.r || cloudDepth.r == 0.0) && rainStrength + thunderStrength > 1.0) {
|
||||
vec2 tc = (gl_FragCoord.xy - 0.5)*texelSize;
|
||||
|
||||
float depth = z;
|
||||
|
||||
float z0 = depth < 0.56 ? convertHandDepth(depth) : depth;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float DH_z0 = DH_depth0;
|
||||
#else
|
||||
float DH_z0 = 1.0;
|
||||
#endif
|
||||
|
||||
float uvScalar = 3.0 * CUSTOM_LIGHTNING_SCALE;
|
||||
|
||||
vec3 normLightningpos = normalize(lightningpos);
|
||||
|
||||
vec3 worldDir = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord /RENDER_SCALE,1.0)));
|
||||
|
||||
vec3 tangent = normalize(cross(normLightningpos, vec3(0.0, 1.0, 0.0)));
|
||||
vec3 binormal = cross(normLightningpos, tangent);
|
||||
vec3 dirDiff = worldDir - normLightningpos;
|
||||
|
||||
float u = -1.0;
|
||||
float v = -1.0;
|
||||
vec4 lightningTex = vec4(0.0);
|
||||
if (dot(worldDir, normLightningpos) > 0.0) {
|
||||
u = dot(dirDiff, tangent) + 0.5/uvScalar;
|
||||
v = 0.55*dot(dirDiff, binormal) + 0.1/uvScalar;
|
||||
|
||||
vec2 uv = vec2(u, v) * uvScalar;
|
||||
|
||||
float randomTex = 16*rand(lightningTimer*72.82723486);
|
||||
|
||||
#if CUSTOM_LIGHTNING_TEX > 0
|
||||
randomTex = CUSTOM_LIGHTNING_TEX-1;
|
||||
#endif
|
||||
|
||||
if (randomTex < 1.0) {
|
||||
lightningTex = texture2D(lightningTex1, uv);
|
||||
} else if (randomTex < 2.0) {
|
||||
lightningTex = texture2D(lightningTex2, uv);
|
||||
} else if (randomTex < 3.0) {
|
||||
u = 1.3*dot(dirDiff, tangent) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex3, uv);
|
||||
} else if (randomTex < 4.0) {
|
||||
lightningTex = texture2D(lightningTex4, uv);
|
||||
} else if (randomTex < 5.0) {
|
||||
lightningTex = texture2D(lightningTex5, uv);
|
||||
} else if (randomTex < 6.0) {
|
||||
u = 1.25*dot(dirDiff, tangent) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex6, uv);
|
||||
} else if (randomTex < 7.0) {
|
||||
lightningTex = texture2D(lightningTex7, uv);
|
||||
} else if (randomTex < 8.0) {
|
||||
lightningTex = texture2D(lightningTex8, uv);
|
||||
} else if (randomTex < 9.0) {
|
||||
u = 1.4*dot(dirDiff, tangent) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex9, uv);
|
||||
} else if (randomTex < 10.0) {
|
||||
lightningTex = texture2D(lightningTex10, uv);
|
||||
} else if (randomTex < 11.0) {
|
||||
u = 0.5*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex11, uv);
|
||||
} else if (randomTex < 12.0) {
|
||||
u = 0.45*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex12, uv);
|
||||
} else if (randomTex < 13.0) {
|
||||
u = 0.45*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex13, uv);
|
||||
} else if (randomTex < 14.0) {
|
||||
u = 0.5*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex14, uv);
|
||||
} else if (randomTex < 15.0) {
|
||||
u = 0.45*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex15, uv);
|
||||
} else {
|
||||
u = 0.4*dot(dirDiff, tangent)+0.5/uvScalar;
|
||||
v = 0.7*dot(dirDiff, binormal) + 0.5/uvScalar;
|
||||
uv = vec2(u, v) * uvScalar;
|
||||
lightningTex = texture2D(lightningTex16, uv);
|
||||
}
|
||||
|
||||
lightningTex.rgb *= vec3(CUSTOM_LIGHTNING_R, CUSTOM_LIGHTNING_G, CUSTOM_LIGHTNING_B) * CUMULONIMBUS_LIGHTNING_BRIGHTNESS * 0.01;
|
||||
|
||||
if(cloudDepth.g > 0.0) lightningTex.rgb *= smoothstep(7550, 0.0, lightningDist - cloudDepth.g);
|
||||
|
||||
#if defined CUSTOM_LIGHTNING_POS && CUSTOM_LIGHTNING_TEX > 0
|
||||
lightningTex.a *= pow(lightningTex.a, 2.0);
|
||||
|
||||
lightningTex.rgb *= 75;
|
||||
#else
|
||||
lightningTex.a *= pow(lightningTex.a, lightningStart); // fade alpha in for cool expansion effect
|
||||
|
||||
lightningTex.rgb += 120 * lightningMid * lightningTex.rgb; // bright flash in the middle
|
||||
|
||||
lightningTex.rgb *= 75 * lightningFade; // fade out
|
||||
#endif
|
||||
|
||||
if (length(lightningTex.rgb) == 0.0) lightningTex.a = 0.0;
|
||||
}
|
||||
|
||||
bool isSky = z0 == 1.0 && DH_z0 == 1.0;
|
||||
bool oneTexOnly = u > 0 && v > 0 && u*uvScalar < 1 && v*uvScalar < 1;
|
||||
|
||||
if (lightningTex.a > 0.01 && oneTexOnly && isSky) {
|
||||
color = lightningTex.rgb * lightningFlash;
|
||||
isLightning = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//////////// blindness, nightvision, liquid fogs and misc fogs
|
||||
|
||||
#if defined OVERWORLD_SHADER && defined CAVE_FOG
|
||||
@@ -618,7 +791,7 @@ void main() {
|
||||
// if(z >= 1.0) color = vec3(0,255,0);
|
||||
// else color = vec3(0.01);
|
||||
|
||||
color *= min(temporallyFilteredVL.a + (1.0-nametagbackground),1.0);
|
||||
if(!isLightning) color *= min(temporallyFilteredVL.a + (1.0-nametagbackground),1.0);
|
||||
color += temporallyFilteredVL.rgb * nametagbackground;
|
||||
#else
|
||||
color *= temporallyFilteredVL.a ;
|
||||
|
||||
@@ -3,8 +3,12 @@
|
||||
varying vec2 texcoord;
|
||||
flat varying vec3 zMults;
|
||||
|
||||
#ifdef BorderFog
|
||||
#if defined BorderFog || (defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS)
|
||||
uniform sampler2D colortex4;
|
||||
#include "/lib/scene_controller.glsl"
|
||||
#endif
|
||||
|
||||
#ifdef BorderFog
|
||||
flat varying vec3 skyGroundColor;
|
||||
#endif
|
||||
|
||||
@@ -22,8 +26,6 @@ flat varying vec2 TAA_Offset;
|
||||
uniform int framemod8;
|
||||
#include "/lib/TAA_jitter.glsl"
|
||||
|
||||
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
|
||||
#endif
|
||||
@@ -40,6 +42,10 @@ void main() {
|
||||
skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness;
|
||||
#endif
|
||||
WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.cirrus, parameters.fog);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef TAA
|
||||
|
||||
@@ -329,7 +329,9 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+
|
||||
#endif
|
||||
float rejection = 1.0;
|
||||
float cloudPlaneDistance = 0.0;
|
||||
vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, WmoonVec, sunColor*2.5, moonColor*2.5, skyGroundCol/30.0, cloudPlaneDistance);
|
||||
vec2 cloudDistance = vec2(0.0);
|
||||
|
||||
vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, WmoonVec, sunColor*2.5, moonColor*2.5, skyGroundCol/30.0, cloudPlaneDistance, cloudDistance);
|
||||
|
||||
float atmosphereAlpha = 1.0;
|
||||
WsunVec = mix(WmoonVec, WsunVec, clamp(float(sunElevation > 1e-5)*2.0-1.0 ,0,1));
|
||||
|
||||
@@ -10,6 +10,14 @@ uniform sampler2D depthtex2;
|
||||
uniform sampler2D noisetex;
|
||||
uniform sampler2D shadowcolor1;
|
||||
|
||||
#if DEBUG_VIEW == debug_CLOUDDEPTHTEX && defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
#extension GL_NV_gpu_shader5 : enable
|
||||
#extension GL_ARB_shader_image_load_store : enable
|
||||
#extension GL_EXT_shader_image_load_store : enable
|
||||
|
||||
layout (rgba32f) uniform image2D cloudDepthTex;
|
||||
#endif
|
||||
|
||||
varying vec2 texcoord;
|
||||
uniform vec2 texelSize;
|
||||
uniform float frameTimeCounter;
|
||||
@@ -167,6 +175,9 @@ void main() {
|
||||
#if DEBUG_VIEW == debug_DEPTHTEX1
|
||||
COLOR = vec3(ld(texture2D(depthtex1, texcoord*RENDER_SCALE).r));
|
||||
#endif
|
||||
#if DEBUG_VIEW == debug_CLOUDDEPTHTEX && defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
COLOR = imageLoad(cloudDepthTex, ivec2(gl_FragCoord.xy*VL_RENDER_RESOLUTION*RENDER_SCALE)).rgb;
|
||||
#endif
|
||||
|
||||
|
||||
gl_FragColor.rgb = COLOR;
|
||||
|
||||
@@ -353,9 +353,10 @@ void main() {
|
||||
|
||||
vec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0);
|
||||
float cloudPlaneDistance = 0.0;
|
||||
vec2 cloudDistance = vec2(0.0);
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WrealSunVec, WmoonVec, directSunlightColor, directMoonlightColor, indirectLightColor, cloudPlaneDistance);
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WrealSunVec, WmoonVec, directSunlightColor, directMoonlightColor, indirectLightColor, cloudPlaneDistance, cloudDistance);
|
||||
|
||||
float atmosphereAlpha = 1.0;
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos1, WsunVec, vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb,cloudPlaneDistance);
|
||||
|
||||
@@ -229,6 +229,28 @@ screen.Clouds = Cloud Settings
|
||||
option.CloudLayer1_tallness = Tallness
|
||||
option.CloudLayer1_scale = Scale
|
||||
|
||||
option.CUMULONIMBUS = Cumulonimbus Clouds
|
||||
option.CUMULONIMBUS_LIGHTNING = Cumulonimbus Lightning
|
||||
option.CUMULONIMBUS_LIGHTNING_BRIGHTNESS = Lightning Brightness
|
||||
suffix.CUMULONIMBUS_LIGHTNING_BRIGHTNESS = %
|
||||
option.CUMULONIMBUS_LIGHTNING_DELAY = Lightning Delay
|
||||
suffix.CUMULONIMBUS_LIGHTNING_DELAY = s
|
||||
|
||||
screen.CUSTOM_LIGHTNING = Custom Lightning
|
||||
option.CUSTOM_LIGHTNING_POS = Custom Position
|
||||
option.CUSTOM_LIGHTNING_POS_X = X
|
||||
option.CUSTOM_LIGHTNING_POS_Y = Y
|
||||
option.CUSTOM_LIGHTNING_POS_Z = Z
|
||||
option.CUSTOM_LIGHTNING_R = R
|
||||
option.CUSTOM_LIGHTNING_G = G
|
||||
option.CUSTOM_LIGHTNING_B = B
|
||||
option.CUSTOM_LIGHTNING_SCALE = Scale
|
||||
option.CUSTOM_LIGHTNING_TEX = Texture
|
||||
value.CUSTOM_LIGHTNING_TEX.0 = Random
|
||||
|
||||
screen.READ_DESCRIPTION = READ DESCRIPTION
|
||||
screen.READ_DESCRIPTION.comment = Set custom postion values in shaders/lib/settings.glsl
|
||||
|
||||
screen.HighAltitudeClouds = High Altitude Clouds
|
||||
option.CloudLayer2 = Altostratus Clouds
|
||||
option.CloudLayer2_coverage = Coverage
|
||||
|
||||
@@ -378,7 +378,20 @@ uniform int moonPhase;
|
||||
#define CloudLayer1_height 800.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer1_tallness 300.0 // [0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer1_scale 1.0 // [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 CUMULONIMBUS
|
||||
#define CUMULONIMBUS_LIGHTNING
|
||||
#define CUMULONIMBUS_LIGHTNING_BRIGHTNESS 100.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 105.0 110.0 115.0 120.0 125.0 130.0 135.0 140.0 145.0 150.0 155.0 160.0 165.0 170.0 175.0 180.0 185.0 190.0 195.0 200.0]
|
||||
#define CUMULONIMBUS_LIGHTNING_DELAY 0.5 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 3.5 4.0 4.5 5.0 6.0 7.0 8.0 9.0 10.0]
|
||||
// #define CUSTOM_LIGHTNING_POS
|
||||
#define CUSTOM_LIGHTNING_SCALE 1.0 // [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]
|
||||
#define CUSTOM_LIGHTNING_POS_X 100 // [-200 -195 -190 -185 -180 -175 -170 -165 -160 -155 -150 -145 -140 -135 -130 -125 -120 -115 -110 -105 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
#define CUSTOM_LIGHTNING_POS_Y 0 // [-200 -195 -190 -185 -180 -175 -170 -165 -160 -155 -150 -145 -140 -135 -130 -125 -120 -115 -110 -105 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
#define CUSTOM_LIGHTNING_POS_Z 0 // [-200 -195 -190 -185 -180 -175 -170 -165 -160 -155 -150 -145 -140 -135 -130 -125 -120 -115 -110 -105 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
#define CUSTOM_LIGHTNING_R 0.63 // [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 CUSTOM_LIGHTNING_G 0.72 // [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 CUSTOM_LIGHTNING_B 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 ]
|
||||
#define CUSTOM_LIGHTNING_TEX 0 // [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
|
||||
|
||||
#define CloudLayer2
|
||||
#define CloudLayer2_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]
|
||||
@@ -882,7 +895,8 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#define debug_FILTERED_STUFF 8
|
||||
#define debug_DEPTHTEX0 9
|
||||
#define debug_DEPTHTEX1 10
|
||||
#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1]
|
||||
#define debug_CLOUDDEPTHTEX 11
|
||||
#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1 debug_CLOUDDEPTHTEX]
|
||||
// #define ISOLATE_RESOURCEPACK_SKY
|
||||
|
||||
#if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1
|
||||
@@ -933,8 +947,11 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#endif
|
||||
#ifdef EMISSIVE_ORES
|
||||
#endif
|
||||
#ifdef CUMULONIMBUS_LIGHTNING
|
||||
#endif
|
||||
|
||||
#ifdef MC_OS_MAC
|
||||
#undef CUMULONIMBUS_LIGHTNING
|
||||
#undef REALMOON
|
||||
#define ShaderSnow 0
|
||||
#undef Puddles
|
||||
|
||||
@@ -10,14 +10,32 @@ uniform int worldDay;
|
||||
uniform int worldTime;
|
||||
float cloud_movement = (worldTime + mod(worldDay,100)*24000.0) / 24.0 * Cloud_Speed;
|
||||
|
||||
float sunMultiplier = smoothstep(500.0, 0.0, worldTime) + smoothstep(11500.0, 13500.0, worldTime) * smoothstep(13500.0, 11500.0, worldTime) + smoothstep(23500.0, 24000.0, worldTime);
|
||||
|
||||
float lightningTimer = floor(frameTimeCounter * 11.0);
|
||||
float randomSeed = fract(sin(dot(vec2(lightningTimer), vec2(12.9898,78.233))) * 43758.5453);
|
||||
float lightningFlashTimer = floor(frameTimeCounter * 11.0);
|
||||
float randomSeed = fract(sin(dot(vec2(lightningFlashTimer), vec2(12.9898,78.233))) * 43758.5453);
|
||||
float lightningFlash = mix(0.3, 1.5, randomSeed);
|
||||
|
||||
float rand(float x) {
|
||||
return fract(sin(x) * 43758.5453123);
|
||||
#ifdef CUMULONIMBUS
|
||||
float lightningDuration = 0.75 + CUMULONIMBUS_LIGHTNING_DELAY;
|
||||
float lightningTimer = floor(frameTimeCounter / lightningDuration);
|
||||
float timeInLightning = (frameTimeCounter / (lightningDuration) - lightningTimer) * lightningDuration;
|
||||
float lightningFade = smoothstep(0.6, 0.22, timeInLightning);
|
||||
#endif
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
#extension GL_NV_gpu_shader5 : enable
|
||||
#extension GL_ARB_shader_image_load_store : enable
|
||||
#extension GL_EXT_shader_image_load_store : enable
|
||||
|
||||
layout (rgba32f) uniform image2D cloudDepthTex;
|
||||
|
||||
float lightningStart = mix(20.0, 1.0, smoothstep(0.0, 0.085, timeInLightning));
|
||||
float lightningMid = smoothstep(0.0, 0.05, timeInLightning) * smoothstep(0.15, 0.066, timeInLightning);
|
||||
#endif
|
||||
|
||||
float rand(float co){
|
||||
vec2 co2 = vec2(co, co*2);
|
||||
|
||||
return fract(sin(dot(co2 ,vec2(12.9898,78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
float getRainDensity(float currentDensity) {
|
||||
@@ -189,8 +207,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight,
|
||||
coverage += Thunder_coverage * thunderStrength;
|
||||
|
||||
|
||||
largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/16000.0 * CloudLayer1_scale).b;
|
||||
smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/5500.0 * CloudLayer1_scale).b;
|
||||
largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/12000.0 * CloudLayer1_scale).b;
|
||||
smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/3500.0 * CloudLayer1_scale).b;
|
||||
|
||||
smallCloud = abs(largeCloud* -0.7) + smallCloud;
|
||||
|
||||
@@ -264,6 +282,30 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight,
|
||||
|
||||
}
|
||||
|
||||
#if defined CUMULONIMBUS && defined CUMULONIMBUS_LIGHTNING
|
||||
vec3 getLightningPosition(float minHeight, float maxHeight) {
|
||||
float angle = rand(lightningTimer) * 6.28318530718;
|
||||
|
||||
float rMin = 7000.0;
|
||||
float rMax = 13000.0;
|
||||
float radius = sqrt(mix(rMin * rMin, rMax * rMax, rand(lightningTimer + 1)));
|
||||
|
||||
vec3 lightningPos = vec3(radius * cos(angle), minHeight + 0.5 * (maxHeight - minHeight), radius * sin(angle));
|
||||
float shapeAtLightningPos = getCloudShape(CUMULONIMBUS_LAYER, 1, lightningPos, minHeight, maxHeight);
|
||||
lightningPos.y -= cameraPosition.y;
|
||||
|
||||
if (shapeAtLightningPos < 0.1) lightningPos = vec3(0.0);
|
||||
|
||||
#ifdef CUSTOM_LIGHTNING_POS
|
||||
lightningPos = vec3(CUSTOM_LIGHTNING_POS_X, CUSTOM_LIGHTNING_POS_Y, CUSTOM_LIGHTNING_POS_Z) - cameraPosition;
|
||||
#endif
|
||||
|
||||
return lightningPos;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef LIGHTNINGONLY
|
||||
|
||||
float getPlanetShadow(vec3 playerPos, vec3 WsunVec){
|
||||
float planetShadow = min(max(playerPos.y - (-100.0 + 1.0 / max(WsunVec.y*0.1, 0.0)),0.0) / 100.0, 1.0);
|
||||
|
||||
@@ -497,22 +539,11 @@ vec4 raymarchCloud(
|
||||
#endif
|
||||
|
||||
vec3 lightningPos = vec3(0.0);
|
||||
if(LayerIndex == CUMULONIMBUS_LAYER){
|
||||
float interval = 0.7;
|
||||
|
||||
float t = floor(frameTimeCounter / interval);
|
||||
|
||||
float angle = rand(t) * 6.28318530718;
|
||||
|
||||
float rMin = 7000.0;
|
||||
float rMax = 18000.0;
|
||||
float radius = sqrt(mix(rMin * rMin, rMax * rMax, rand(t + 1)));
|
||||
|
||||
lightningPos = vec3(radius * cos(angle), minHeight + 0.5 * (maxHeight - minHeight), radius * sin(angle));
|
||||
|
||||
float shapeAtLightningPos = getCloudShape(LayerIndex, 1, lightningPos, minHeight, maxHeight);
|
||||
if (shapeAtLightningPos < 0.1) lightningPos = vec3(0.0);
|
||||
}
|
||||
#if defined CUMULONIMBUS && defined CUMULONIMBUS_LIGHTNING
|
||||
if(LayerIndex == CUMULONIMBUS_LAYER || thunderStrength > 0.0){
|
||||
lightningPos = getLightningPosition(minHeight, maxHeight);
|
||||
}
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < samples; i++) {
|
||||
|
||||
@@ -558,36 +589,39 @@ vec4 raymarchCloud(
|
||||
#endif
|
||||
|
||||
vec3 lighting = getCloudLighting(LayerIndex, shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, sunMultiScattering, moonScattering, moonMultiScattering, indirectShadowMask, skyScattering * skylightOcclusion);
|
||||
|
||||
|
||||
vec3 newPos = rayPosition - cameraPosition;
|
||||
newPos.xz /= max(newPos.y,0.0)*0.0025 + 1.0;
|
||||
|
||||
float lightningIntensity = 0.0;
|
||||
|
||||
|
||||
// normal lightning strikes
|
||||
float horizontalDist = length((rayPosition.xz - cameraPosition.xz) - lightningBoltPosition.xz);
|
||||
float horizontalDist = length((newPos.xz) - lightningBoltPosition.xz);
|
||||
if (horizontalDist < 2500.0 && lightningBoltPosition.w > 0.0) {
|
||||
lightningIntensity = exp(-horizontalDist * 0.022) * density * smoothstep(0.0, 0.02, fract(frameTimeCounter)) * lightningFlash;
|
||||
lighting = mix(lighting, vec3(1.3,1.5,3.0), lightningIntensity);
|
||||
}
|
||||
|
||||
// lightning strikes in cumulonimbus clouds
|
||||
if(LayerIndex == CUMULONIMBUS_LAYER) {
|
||||
horizontalDist = length(rayPosition.xz - cameraPosition.xz);
|
||||
float horizontalDistLightining = length((rayPosition.xz - cameraPosition.xz) - lightningPos.xz);
|
||||
|
||||
if (horizontalDistLightining < 6000.0 && rainStrength == 0.0 && lightningPos != vec3(0.0)) {
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
if(LayerIndex == CUMULONIMBUS_LAYER || thunderStrength > 0.0){
|
||||
horizontalDist = length(newPos.xz);
|
||||
float lightningDist = length((newPos) - lightningPos);
|
||||
|
||||
lightningIntensity = smoothstep(6000.0, 0.0, horizontalDistLightining) * smoothstep(0.15, 1.0, shapeWithDensity) * lightningFlash;
|
||||
lightningIntensity *= (1.0 - smoothstep(minHeight, 1.05 * maxHeight, rayPosition.y));
|
||||
lightningIntensity *= smoothstep(17000, 14000, horizontalDist);
|
||||
if (lightningDist < 6000.0 && lightningPos != vec3(0.0)) {
|
||||
|
||||
lightningIntensity = smoothstep(6000.0, 50.0, lightningDist) * smoothstep(0.15, 1.0, shapeWithDensity) * lightningFlash;
|
||||
lightningIntensity *= (1.0 - smoothstep(minHeight, 1.05 * maxHeight, rayPosition.y));
|
||||
lightningIntensity *= smoothstep(17000, 14000, horizontalDist);
|
||||
lightningIntensity *= lightningFade;
|
||||
|
||||
vec3 lightningStrength = vec3(5.0,5.3,9.0);
|
||||
lighting = mix(lighting, lightningStrength, lightningIntensity);
|
||||
vec3 lightningStrength = vec3(CUSTOM_LIGHTNING_R, 1.05*CUSTOM_LIGHTNING_G, 1.22*CUSTOM_LIGHTNING_B) * CUMULONIMBUS_LIGHTNING_BRIGHTNESS * 0.125;
|
||||
lighting = mix(lighting, lightningStrength, lightningIntensity);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
newPos.xz /= max(newPos.y,0.0)*0.0025 + 1.0;
|
||||
newPos.y = min(newPos.y,0.0);
|
||||
|
||||
float distancefog = exp2(-0.0002*length(newPos));
|
||||
@@ -647,7 +681,8 @@ vec4 GetVolumetricClouds(
|
||||
vec3 directLightCol2,
|
||||
vec3 indirectLightCol,
|
||||
|
||||
inout float cloudPlaneDistance
|
||||
inout float cloudPlaneDistance,
|
||||
inout vec2 cloudDistance
|
||||
){
|
||||
#ifndef VOLUMETRIC_CLOUDS
|
||||
return vec4(0.0,0.0,0.0,1.0);
|
||||
@@ -751,6 +786,7 @@ vec4 GetVolumetricClouds(
|
||||
|
||||
vec2 cloudLayer0_Distance = vec2(startDistance, 1.0);
|
||||
#ifdef CloudLayer0
|
||||
float smallCumulusDistance = length(rayPosition - cameraPosition);
|
||||
smallCumulusClouds = raymarchCloud(SMALLCUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, unsignedMoonVec, sunScattering2, sunMultiScattering2, moonScattering2, moonMultiScattering2, skyScattering, lViewPosM, sampledSkyCol, cloudLayer0_Distance);
|
||||
#endif
|
||||
|
||||
@@ -768,6 +804,7 @@ vec4 GetVolumetricClouds(
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);
|
||||
|
||||
vec2 cloudLayer1_Distance = vec2(startDistance, 1.0);
|
||||
float largeCumulusDistance = length(rayPosition - cameraPosition);
|
||||
if(smallCumulusClouds.a > 1e-5 || cameraPosition.y > minHeight) largeCumulusClouds = raymarchCloud(LARGECUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, unsignedMoonVec, sunScattering2, sunMultiScattering2, moonScattering2, moonMultiScattering2, skyScattering, lViewPosM, sampledSkyCol, cloudLayer1_Distance);
|
||||
#endif
|
||||
|
||||
@@ -784,6 +821,7 @@ vec4 GetVolumetricClouds(
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);
|
||||
|
||||
vec2 cloudLayer4_Distance = vec2(startDistance, 1.0);
|
||||
float cumulonimbusDistance = length(rayPosition - cameraPosition);
|
||||
cumulonimbusClouds = raymarchCloud(CUMULONIMBUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, unsignedMoonVec, sunScattering2, sunMultiScattering2, moonScattering2, moonMultiScattering2, skyScattering, lViewPosM, sampledSkyCol, cloudLayer4_Distance);
|
||||
#endif
|
||||
|
||||
@@ -866,6 +904,31 @@ vec4 GetVolumetricClouds(
|
||||
cloudPlaneDistance = cloudLayer4_Distance.x;
|
||||
#endif
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
#ifdef CloudLayer0
|
||||
if (smallCumulusClouds.a < 1.0) cloudDistance.r = smallCumulusDistance;
|
||||
#endif
|
||||
|
||||
#ifdef CloudLayer1
|
||||
if (largeCumulusClouds.a < 1.0) cloudDistance.r = largeCumulusDistance;
|
||||
#endif
|
||||
|
||||
#if defined CloudLayer0 && defined CloudLayer1
|
||||
if(cameraPosition.y < CloudLayer1_height) {
|
||||
if (largeCumulusClouds.a < 1.0) cloudDistance.r = largeCumulusDistance;
|
||||
if (smallCumulusClouds.a < 1.0) cloudDistance.r = smallCumulusDistance;
|
||||
} else {
|
||||
if (smallCumulusClouds.a < 1.0) cloudDistance.r = smallCumulusDistance;
|
||||
if (largeCumulusClouds.a < 1.0) cloudDistance.r = largeCumulusDistance;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cumulonimbusClouds.a < 1.0) cloudDistance.g = cumulonimbusDistance;
|
||||
|
||||
if(cloudDistance.r > 15000.0) cloudDistance.r = 0.0;
|
||||
if(cloudDistance.g > 15000.0) cloudDistance.g = 0.0;
|
||||
#endif
|
||||
|
||||
#ifdef CloudLayer3
|
||||
cloudColor = cirrusClouds;
|
||||
#endif
|
||||
@@ -908,4 +971,6 @@ vec4 GetVolumetricClouds(
|
||||
|
||||
return vec4(color, totalAbsorbance);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -39,6 +39,27 @@ iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUS
|
||||
customTexture.snowTexR = texture/snowR.png
|
||||
#endif
|
||||
|
||||
#if defined CUMULONIMBUS_LIGHTNING && defined CUMULONIMBUS
|
||||
customTexture.lightningTex1 = texture/lightning/lightning1.png
|
||||
customTexture.lightningTex2 = texture/lightning/lightning2.png
|
||||
customTexture.lightningTex3 = texture/lightning/lightning3.png
|
||||
customTexture.lightningTex4 = texture/lightning/lightning4.png
|
||||
customTexture.lightningTex5 = texture/lightning/lightning5.png
|
||||
customTexture.lightningTex6 = texture/lightning/lightning6.png
|
||||
customTexture.lightningTex7 = texture/lightning/lightning7.png
|
||||
customTexture.lightningTex8 = texture/lightning/lightning8.png
|
||||
customTexture.lightningTex9 = texture/lightning/lightning9.png
|
||||
customTexture.lightningTex10 = texture/lightning/lightning10.png
|
||||
customTexture.lightningTex11 = texture/lightning/lightning11.png
|
||||
customTexture.lightningTex12 = texture/lightning/lightning12.png
|
||||
customTexture.lightningTex13 = texture/lightning/lightning13.png
|
||||
customTexture.lightningTex14 = texture/lightning/lightning14.png
|
||||
customTexture.lightningTex15 = texture/lightning/lightning15.png
|
||||
customTexture.lightningTex16 = texture/lightning/lightning16.png
|
||||
|
||||
image.cloudDepthTex = cSampler1 rgba rgba32f float true true 1.0 1.0
|
||||
#endif
|
||||
|
||||
#ifdef LPV_ENABLED
|
||||
shadow.enabled = true
|
||||
shadow.culling = reversed
|
||||
@@ -146,7 +167,7 @@ alphaTest.gbuffers_water = false
|
||||
alphaTest.gbuffers_skybasic = false
|
||||
alphaTest.gbuffers_skytextured = false
|
||||
|
||||
sliders = ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Strength LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCHLine truncated
|
||||
sliders = CUSTOM_LIGHTNING_SCALE CUSTOM_LIGHTNING_R CUSTOM_LIGHTNING_G CUSTOM_LIGHTNING_B CUSTOM_LIGHTNING_TEX CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_POS_Z CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Strength LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColLine truncated
|
||||
|
||||
screen.columns=2
|
||||
screen = \
|
||||
@@ -275,13 +296,22 @@ SHADER_VERSION_LABEL <empty> \
|
||||
[CumulusClouds] [HighAltitudeClouds]
|
||||
|
||||
screen.CumulusClouds.columns = 2
|
||||
screen.CumulusClouds = CloudLayer0 CloudLayer1 \
|
||||
CloudLayer0_coverage CloudLayer1_coverage \
|
||||
CloudLayer0_density CloudLayer1_density \
|
||||
CloudLayer0_height CloudLayer1_height \
|
||||
CloudLayer0_tallness CloudLayer1_tallness \
|
||||
CloudLayer0_scale CloudLayer1_scale \
|
||||
<empty> CUMULONIMBUS
|
||||
screen.CumulusClouds = CloudLayer0 CloudLayer1 \
|
||||
CloudLayer0_coverage CloudLayer1_coverage \
|
||||
CloudLayer0_density CloudLayer1_density \
|
||||
CloudLayer0_height CloudLayer1_height \
|
||||
CloudLayer0_tallness CloudLayer1_tallness \
|
||||
CloudLayer0_scale CloudLayer1_scale \
|
||||
<empty> <empty> \
|
||||
CUMULONIMBUS CUMULONIMBUS_LIGHTNING \
|
||||
CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY \
|
||||
[CUSTOM_LIGHTNING] <empty>
|
||||
screen.CUSTOM_LIGHTNING.columns = 2
|
||||
screen.CUSTOM_LIGHTNING = CUSTOM_LIGHTNING_POS CUSTOM_LIGHTNING_TEX \
|
||||
CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_R \
|
||||
CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_G \
|
||||
CUSTOM_LIGHTNING_POS_Z CUSTOM_LIGHTNING_B \
|
||||
[READ_DESCRIPTION] CUSTOM_LIGHTNING_SCALE
|
||||
|
||||
screen.HighAltitudeClouds.columns = 2
|
||||
screen.HighAltitudeClouds = CloudLayer2 CloudLayer3 \
|
||||
|
||||
|
After Width: | Height: | Size: 288 KiB |
|
After Width: | Height: | Size: 375 KiB |
|
After Width: | Height: | Size: 683 KiB |
|
After Width: | Height: | Size: 534 KiB |
|
After Width: | Height: | Size: 423 KiB |
|
After Width: | Height: | Size: 518 KiB |
|
After Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 491 KiB |
|
After Width: | Height: | Size: 417 KiB |
|
After Width: | Height: | Size: 264 KiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 309 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 334 KiB |
|
After Width: | Height: | Size: 263 KiB |