From 5e738340b8f20642b5acd697bd4a13a82fd8eda8 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Sun, 29 Jan 2023 18:51:15 +0100 Subject: [PATCH] Added box-frustum test code, used to experiment with more accurate per-leaf bounding box frustum culling. Not really worth it as it only makes things slower in the end. --- frustum.c | 22 ++++++++++++++++++++++ frustum.h | 1 + ps1bsp.h | 8 ++++---- test.ps1bsp | Bin 434863 -> 441499 bytes world.c | 2 +- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/frustum.c b/frustum.c index f50865f..e8975e8 100644 --- a/frustum.c +++ b/frustum.c @@ -53,6 +53,15 @@ void frustum_update(int width, int height) // left.vx, left.pad, right.vx, right.pad, top.vz, top.pad, bottom.vz, bottom.pad); } +static INLINE u_char frustum_pointInside_(const SVECTOR p) +{ + if (m_dot12(left, p) + left.pad < 0) return 0; + if (m_dot12(right, p) + right.pad < 0) return 0; + if (m_dot12(top, p) + top.pad < 0) return 0; + if (m_dot12(bottom, p) + bottom.pad < 0) return 0; + return 1; +} + u_char frustum_pointInside(const SVECTOR *point) { if (m_dot12(left, *point) + left.pad < 0) return 0; @@ -71,3 +80,16 @@ u_char frustum_sphereInside(const SVECTOR *sphere) if (m_dot12(bottom, *sphere) + bottom.pad < radius) return 0; return 1; } + +u_char frustum_boxInside(const SVECTOR *min, const SVECTOR *max) +{ + if (frustum_pointInside_((SVECTOR) { min->vx, min->vy, min->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { min->vx, min->vy, max->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { min->vx, max->vy, min->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { min->vx, max->vy, max->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { max->vx, min->vy, min->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { max->vx, min->vy, max->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { max->vx, max->vy, min->vz })) return 1; + if (frustum_pointInside_((SVECTOR) { max->vx, max->vy, max->vz })) return 1; + return 0; +} diff --git a/frustum.h b/frustum.h index 244502d..c9e0796 100644 --- a/frustum.h +++ b/frustum.h @@ -4,5 +4,6 @@ void frustum_update(int width, int height); u_char frustum_pointInside(const SVECTOR *point); u_char frustum_sphereInside(const SVECTOR *sphere); +u_char frustum_boxInside(const SVECTOR *min, const SVECTOR *max); #endif // __FRUSTUM_H__ diff --git a/ps1bsp.h b/ps1bsp.h index d9bd4c6..17c3513 100755 --- a/ps1bsp.h +++ b/ps1bsp.h @@ -138,18 +138,18 @@ typedef struct SVECTOR boundingSphere; } ps1bsp_node_t; -typedef struct +typedef struct ps1bsp_leaf_s { - int type; + short type; int vislist; - SVECTOR boundingSphere; + SVECTOR mins, maxs; u_short firstLeafFace; u_short numLeafFaces; // Run-time data - u_short nextLeaf; // For chaining leafs in drawing order + struct ps1bsp_leaf_s *nextLeaf; // For chaining leafs in drawing order u_short leafDepth; // At what depth the leaf's faces should be placed in the ordering table } ps1bsp_leaf_t; diff --git a/test.ps1bsp b/test.ps1bsp index 60d25dbc96b89bda011f9aaeed0b6975fd4fe69d..8c18893656b4b2027a03e1e5d6768d715fc88a51 100755 GIT binary patch delta 20109 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 nKZw@-dJ)77HNEaP7P3h$d46K@y;J@le!=nl diff --git a/world.c b/world.c index 262e70c..31139e2 100644 --- a/world.c +++ b/world.c @@ -200,7 +200,7 @@ static void world_drawnode(const world_t *world, short nodeIdx, u_char *pvs) return; const ps1bsp_leaf_t *leaf = &world->leaves[~nodeIdx]; - // if (!frustum_sphereInside(&leaf->boundingSphere)) // TODO: not sure if it's actually faster to do all these additional frustum checks + // if (!frustum_boxInside(&leaf->mins, &leaf->maxs)) // TODO: these additional frustum checks actually make things slower, probably not worth it // return; u_long frameNum = time_getFrameNumber();