From ee67a0a51511c4520575e655d4c83fef5139765f Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 24 Dec 2020 12:33:07 +0100 Subject: [PATCH] kernel4: simplify a tiny bit Signed-off-by: Elias Naur --- piet-gpu/shader/kernel4.comp | 2 +- piet-gpu/shader/kernel4.spv | Bin 34304 -> 34252 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/piet-gpu/shader/kernel4.comp b/piet-gpu/shader/kernel4.comp index 0ba1ee9..fe55ff9 100644 --- a/piet-gpu/shader/kernel4.comp +++ b/piet-gpu/shader/kernel4.comp @@ -66,7 +66,7 @@ float[CHUNK] computeArea(vec2 xy, int backdrop, uint tile_ref) { vec2 end = start + seg.vector; vec2 window = clamp(vec2(start.y, end.y), 0.0, 1.0); if (window.x != window.y) { - vec2 t = (window - start.y) / (end.y - start.y); + vec2 t = (window - start.y) / seg.vector.y; vec2 xs = vec2(mix(start.x, end.x, t.x), mix(start.x, end.x, t.y)); float xmin = min(min(xs.x, xs.y), 1.0) - 1e-6; float xmax = max(xs.x, xs.y); diff --git a/piet-gpu/shader/kernel4.spv b/piet-gpu/shader/kernel4.spv index 9b4f1826c5a704cd7f08a634acbac394ba39880e..b3843402d26e2f425473d42baabf180350fed2c1 100644 GIT binary patch literal 34252 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