Files
Reimagined/shaderpacks/Reimagined - Low/shaders/lib/materials/overlayNoise.glsl
T
2026-05-07 21:38:27 +03:00

37 lines
2.0 KiB
GLSL

vec2 getOverlayNoise(float sideIntensity, bool noLightCheck, bool decreaseWithDepth, float meltingRadius, int pixelSize, vec3 worldPos, float noiseTransparency, float removeIntensity) {
float overlayNoiseVariable;
float topCheck = abs(clamp01(dot(normal, upVec))); // normal check for top surfaces
if (topCheck > 0.5) {
overlayNoiseVariable = 0.0;
overlayNoiseVariable += topCheck;
} else {
overlayNoiseVariable = sideIntensity;
}
//noise
int noiseSize = 0;
noiseSize = pixelSize;
float noise = float(hash33(floor(mod(worldPos, vec3(100.0)) * noiseSize + 0.03) * noiseSize)) * 0.25; // pixel-locked procedural noise
//make patches of terrain that don't have noise
float removeNoise1 = 1.0 - Noise3D(worldPos * 0.0005) * removeIntensity * 1.2;
float removeNoise2 = 1.0 - Noise3D(worldPos * 0.005) * removeIntensity;
float removeNoise3 = Noise3D(worldPos * 0.02) * removeIntensity;
float removeNoise = clamp01(2.0 * removeNoise1 + 0.70 * removeNoise2 + 0.2 * removeNoise3);
overlayNoiseVariable *= removeNoise;
// light check so noise is not in caves (near light sources)
overlayNoiseVariable = clamp01(overlayNoiseVariable); // to prevent stuff breaking, like the fucking bamboo sapling!!!!
if (!noLightCheck) {
overlayNoiseVariable *= (1.0 - pow(lmCoord.x, 1.0 / meltingRadius * 2.5) * 4.3) * pow(lmCoord.y, 14.0); // first part to turn off at light sources, second part to turn off if under blocks
}
float depthTransparency = 1.0;
if (decreaseWithDepth) {
depthTransparency = 10.0 / abs(min(worldPos.y, 0.001)) - 0.3 + clamp(removeNoise * 1.3, 0.0, 0.1); // increase transparency beginning at y=0 at increasing with decreasing y level
}
overlayNoiseVariable = clamp(overlayNoiseVariable, 0.0, depthTransparency); // to prevent artifacts near light sources
vec2 result = vec2(overlayNoiseVariable, noise);
return result;
}