Daryl Zuniga
darzu.bsky.social
Daryl Zuniga
@darzu.bsky.social
Loves gpu programming, compilers, optimization, and building things from scratch.
https://mastodon.gamedev.place/@sprig, https://darzu.io, https://sprig.land

Rendering Engineer at Bitshift Entertainment
In case it's not obvious, every chunk is rendered as an inside out ~cube and the fragment shader of the cube shader does the ray trace / DDA through the 3d texture.
June 7, 2025 at 3:35 AM
If we needed it to be way faster I would create a mip-like pyramid for each model w/ 1 bit per voxel, like Teardown does
June 7, 2025 at 3:30 AM
Here's a heat map showing how many steps were needed per pixel. Rainbow wraps after 64 steps.

We also have an oct-tree renderer that we're thinking we'll use for very large levels but i'm not actually sure it'll be faster.
June 7, 2025 at 3:28 AM
Yeah 3D DDA, pretty close to how Teardown does it:
acko.net/blog/teardow...

64^3 is just to cap the max number of steps any thread needs to take. I haven't investigated how important this is. We run at 360p for stylistic reasons, and worlds with 4000 chunks is <20us so our bottlenecks r elsewhere.
Teardown Frame Teardown
Frame breakdown of Tuxedo Labs' voxel-based game
acko.net
June 7, 2025 at 3:25 AM
Oh i didn’t realize “Build” is a specific engine. I don’t know what they do.
June 7, 2025 at 2:42 AM
.vox is popular too. I work on an engine with a .kvx and .vox importer. We convert it to a 3D texture and render it using ray tracing / dda. We tried some other approaches like generating slice planes but ray tracing is faster. For big files we chunk to 64x64x64, or use oct tree
June 7, 2025 at 2:41 AM