custommods
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
float rainbowTime = sqrt3(max(pow2(pow2(sunVisibility * shadowFade)) - timeBrightness * 2.5, 0.0));
|
||||
#ifdef RAINBOW_AFTER_RAIN_CHECK
|
||||
rainbowTime *= sqrt3(max(wetness - 0.1, 0.0) * (1.0 - rainStrength) * (1.0 - rainStrengthS)) * isRainy;
|
||||
#endif
|
||||
|
||||
if (rainbowTime > 0.001) {
|
||||
float rainbowDistance = max(far, 256.0) * 0.25;
|
||||
float rainbowLength = max(far, 256.0) * 0.75;
|
||||
|
||||
vec3 rainbowTranslucent = translucent;
|
||||
if (water) rainbowTranslucent = vec3(float(isEyeInWater == 1));
|
||||
|
||||
vec4 viewPosZ1 = gbufferProjectionInverse * (vec4(texCoord, z1, 1.0) * 2.0 - 1.0);
|
||||
viewPosZ1 /= viewPosZ1.w;
|
||||
float lViewPosZ1 = length(viewPosZ1.xyz);
|
||||
float lViewPosZ0 = length(viewPos.xyz);
|
||||
|
||||
float rainbowCoord = 1.0 - (cosS + 0.75) / (0.0625 * RAINBOW_DIAMETER);
|
||||
|
||||
float rainbowFactor = clamp(1.0 - rainbowCoord, 0.0, 1.0) * clamp(rainbowCoord, 0.0, 1.0);
|
||||
rainbowFactor *= rainbowFactor * (3.0 - 2.0 * rainbowFactor);
|
||||
rainbowFactor *= min(max(lViewPosZ1 - rainbowDistance, 0.0) / rainbowLength, 1.0);
|
||||
rainbowFactor *= rainbowTime;
|
||||
#ifdef CAVE_SKY_FIX
|
||||
rainbowFactor *= 1.0 - isEyeInCave;
|
||||
#endif
|
||||
|
||||
if (rainbowFactor > 0.0) {
|
||||
#if RAINBOW_STYLE == 1
|
||||
float rainbowCoordM = pow(rainbowCoord, 1.4 + max(rainbowCoord - 0.5, 0.0) * 1.6);
|
||||
rainbowCoordM = smoothstep(0.0, 1.0, rainbowCoordM) * 0.85;
|
||||
rainbowCoordM += (dither - 0.5) * 0.1;
|
||||
vec3 rainbow = clamp(abs(mod(rainbowCoordM * 6.0 + vec3(-0.55,4.3,2.2) ,6.0)-3.0)-1.0, 0.0, 1.0);
|
||||
rainbowCoordM += 0.1;
|
||||
rainbow += clamp(abs(mod(rainbowCoordM * 6.0 + vec3(-0.55,4.3,2.2) ,6.0)-3.0)-1.0, 0.0, 1.0);
|
||||
rainbowCoordM -= 0.2;
|
||||
rainbow += clamp(abs(mod(rainbowCoordM * 6.0 + vec3(-0.55,4.3,2.2) ,6.0)-3.0)-1.0, 0.0, 1.0);
|
||||
rainbow /= 3.0;
|
||||
rainbow.r += pow2(max(rainbowCoord - 0.5, 0.0)) * (max(1.0 - rainbowCoord, 0.0)) * 26.0;
|
||||
rainbow = pow(rainbow, vec3(2.2)) * vec3(0.25, 0.075, 0.25) * 3.0;
|
||||
#else
|
||||
float rainbowCoordM = pow(rainbowCoord, 1.35);
|
||||
rainbowCoordM = smoothstep(0.0, 1.0, rainbowCoordM);
|
||||
vec3 rainbow = clamp(abs(mod(rainbowCoordM * 6.0 + vec3(0.0,4.0,2.0) ,6.0)-3.0)-1.0, 0.0, 1.0);
|
||||
rainbow *= rainbow * (3.0 - 2.0 * rainbow);
|
||||
rainbow = pow(rainbow, vec3(2.2)) * vec3(0.25, 0.075, 0.25) * 3.0;
|
||||
#endif
|
||||
|
||||
if (z1 > z0 && lViewPosZ0 < rainbowDistance + rainbowLength)
|
||||
rainbow *= mix(rainbowTranslucent, vec3(1.0),
|
||||
clamp((lViewPosZ0 - rainbowDistance) / rainbowLength, 0.0, 1.0)
|
||||
);
|
||||
if (isEyeInWater == 1) rainbow *= float(water) * 0.05;
|
||||
|
||||
color.rgb += rainbow * rainbowFactor;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user