From 50f15bac90638da401d27229969dc502c75d1320 Mon Sep 17 00:00:00 2001 From: rodri Date: Fri, 2 Aug 2024 17:57:42 +0000 Subject: fix line interpolation during rasterization. vertex attributes were not being updated after clipping with their corresponding work rectangles, nor when reordering the points before rasterization, which caused serious artifacts. --- render.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'render.c') diff --git a/render.c b/render.c index 98dd0e9..549ee1a 100644 --- a/render.c +++ b/render.c @@ -128,7 +128,7 @@ rasterize(Rastertask *task) p0 = Pt(prim.v[0].p.x, prim.v[0].p.y); p1 = Pt(prim.v[1].p.x, prim.v[1].p.y); /* clip it against our wr */ - if(rectclipline(task->wr, &p0, &p1) < 0) + if(rectclipline(task->wr, &p0, &p1, &prim.v[0], &prim.v[1]) < 0) break; /* transpose the points */ @@ -140,8 +140,8 @@ rasterize(Rastertask *task) /* make them left-to-right */ if(p0.x > p1.x){ - swapi(&p0.x, &p1.x); - swapi(&p0.y, &p1.y); + swappt(&p0, &p1); + swapvertex(&prim.v[0], &prim.v[1]); } dp = subpt(p1, p0); -- cgit v1.2.3