summaryrefslogtreecommitdiff
path: root/graphics.h
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-09-20 21:44:07 +0000
committerrodri <rgl@antares-labs.eu>2024-09-20 21:44:07 +0000
commitd8f71404ffd54af08bc84dbb04e60cb07e83a021 (patch)
tree51eea850a374f92569332ddb3bca7fcc021f6142 /graphics.h
parent2fd16cbf190d5c37fc627f79bf586f66129fea46 (diff)
downloadlibgraphics-d8f71404ffd54af08bc84dbb04e60cb07e83a021.tar.gz
libgraphics-d8f71404ffd54af08bc84dbb04e60cb07e83a021.tar.bz2
libgraphics-d8f71404ffd54af08bc84dbb04e60cb07e83a021.zip
implement clipped drawing. take branching out of the upscaler loop.
the rasterizers now produce a bbox of used fragments/pixels that are unified at the end of every job/frame. we use that when drawing so only the part that was rasterized gets sent to devdraw.
Diffstat (limited to 'graphics.h')
-rw-r--r--graphics.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/graphics.h b/graphics.h
index bc18069..089156a 100644
--- a/graphics.h
+++ b/graphics.h
@@ -258,6 +258,8 @@ struct Renderjob
Scene *scene;
Shadertab *shaders;
Channel *donec;
+ Rectangle *cliprects; /* one per rasterizer */
+ int ncliprects;
struct {
/* renderer, entityproc, tilers, rasterizers */
@@ -302,6 +304,7 @@ struct Raster
struct Framebuf
{
Rectangle r;
+ Rectangle clipr;
Raster *rasters; /* [0] color, [1] depth, [n] user-defined */
Abuf abuf; /* A-buffer */
@@ -432,6 +435,8 @@ void freecubemap(Cubemap*);
Color samplecubemap(Cubemap*, Point3, Color(*)(Texture*, Point2));
/* util */
+Point minpt(Point, Point);
+Point maxpt(Point, Point);
Point2 modulapt2(Point2, Point2);
Point2 minpt2(Point2, Point2);
Point2 maxpt2(Point2, Point2);