]> git.nega.tv - josh/narcissus/commitdiff
shark-shaders: Improve rounded-rect sdf a little
authorJoshua Simmons <josh@nega.tv>
Sat, 18 Oct 2025 23:16:57 +0000 (01:16 +0200)
committerJoshua Simmons <josh@nega.tv>
Sat, 18 Oct 2025 23:17:03 +0000 (01:17 +0200)
title/shark-shaders/shaders/draw_2d.slang

index 539b9647968965802a0854837afa1950279c5ab8..3c668dd2f37a42b680ea2d4f25230513aa36487b 100644 (file)
@@ -592,8 +592,15 @@ void rasterize(uniform RasterizeConstants constants, uint3 thread_id: SV_Dispatc
                         }
 
                         let border_color = unpackUnorm4x8ToFloat(cmd_rect.border_color).bgra;
-                        primitive_color = lerp(background_color, border_color, smoothstep(1.0, 0.0, 1.0 - d - border_width));
-                        primitive_color = lerp(primitive_color, float4(0.0), smoothstep(1.0, 0.0, 1.0 - d));
+
+                        let edge_border = -d;
+                        let alpha_border = clamp(edge_border + 0.5, 0.0, 1.0);
+
+                        let edge = -d - border_width;
+                        let alpha = clamp(edge + 0.5, 0.0, 1.0);
+
+                        let border = lerp(float4(0.0), border_color, alpha_border);
+                        primitive_color = lerp(border, background_color, alpha);
 
                         let clip_b = (scissor.offset_max - scissor.offset_min) / 2.0;
                         let clip_p = scissor.offset_min + clip_b - sample_center;