Update dispersion shader

This commit is contained in:
Kyant0 committed 2025-09-15 11:39:24 +08:00
1 parent 29a733d547
commit 016a140891
1 file changed
+3 -9
@@ -87,10 +87,6 @@ float circleMap(float x) {
return 1.0 - sqrt(1.0 - x * x);
}
float2 normalToTangent(float2 normal) {
return float2(normal.y, -normal.x);
}
half4 main(float2 coord) {
float2 halfSize = size * 0.5;
float2 centeredCoord = coord - halfSize;
@@ -109,7 +105,7 @@ half4 main(float2 coord) {
float4 maxGradRadius = float4(min(halfSize.x, halfSize.y));
float4 gradRadius = min(cornerRadius * 1.5, maxGradRadius);
float2 normal = gradSdRoundedRectangle(centeredCoord, halfSize, gradRadius);
float2 tangent = normalToTangent(normal);
float2 tangent = float2(normal.y, -normal.x);
half4 dispersedColor = half4(0.0);
half4 weight = half4(0.0);
@@ -121,14 +117,12 @@ half4 main(float2 coord) {
half rMask = step(0.5, t);
half gMask = step(0.25, t) * step(t, 0.75);
half bMask = step(t, 0.5);
half4 mask = half4(rMask, gMask, bMask, 0.0);
half4 mask = half4(rMask, gMask, bMask, 1.0);
dispersedColor += color * mask;
weight += mask;
}
dispersedColor /= weight;
dispersedColor.a = image.eval(coord).a;
return dispersedColor;
return dispersedColor / weight;
}"""
@Language("AGSL")