nitro-orchard-1.21.11.jar

Download file
#version 330

layout(std140) uniform DynamicTransforms {
    mat4 ModelViewMat;
    vec4 ColorModulator;
    vec3 ModelOffset;
    mat4 TextureMat;
};

in vec2 texCoord0;
in vec4 vertexColor;

out vec4 fragColor;

void main() {
    vec4 base = vertexColor;
    if (base.a <= 0.001) {
        discard;
    }

    vec2 p = texCoord0 * 2.0 - 1.0;
    float curve = length(p * vec2(0.92, 1.10));
    float mask = smoothstep(1.18, 0.30, curve);
    float softEdge = clamp(1.0 - curve, 0.0, 1.0);
    softEdge *= softEdge;

    float waveA = sin(p.x * 8.5 + p.y * 4.2);
    float waveB = cos(p.y * 9.5 - p.x * 3.4);
    float waveC = sin((p.x + p.y) * 11.0);
    float caustic = 0.5 + 0.5 * (waveA * 0.34 + waveB * 0.40 + waveC * 0.26);
    caustic = smoothstep(0.18, 0.88, caustic);

    float sweep = exp(-pow(p.y + p.x * 0.28 - 0.18, 2.0) * 18.0);
    float secondary = exp(-pow(p.y - p.x * 0.42 + 0.20, 2.0) * 24.0);
    float topGlow = smoothstep(0.90, -0.20, p.y);

    vec3 tint = clamp(base.rgb, 0.0, 1.0);
    vec3 liquid = tint * (0.12 + softEdge * 0.16);
    liquid += vec3(1.0) * (0.08 + 0.10 * softEdge + 0.08 * topGlow);
    liquid += vec3(1.0) * sweep * 0.18;
    liquid += mix(vec3(0.82, 0.93, 1.0), tint, 0.35) * secondary * 0.12;
    liquid += mix(vec3(0.93, 0.98, 1.0), tint, 0.28) * caustic * 0.08;

    float alpha = base.a * (0.24 + 0.28 * mask + 0.10 * topGlow);
    fragColor = vec4(liquid, alpha) * ColorModulator;
}
Download file