Writing a Software Renderer With multicore CPU, one has to organize the rendering somehow, so the cores can work without any locking.
Apparently the technology to use is called tiling.
Basically the framebuffer in broken into 32x32 tiles, and the objects are then assigned to the tiles they overlap.
Now CPU threads can be assigned sets unique tiles.
I.e. if your tile overlaps just a few voxel models, you don't need to include the rest into your BVH.
Here are a lecture and an article on that:
https://youtu.be/i3jRPWx21_A?t=2405https://en.wikipedia.org/wiki/Tiled_renderingthese talk about triangles and rasterization, but raycasting needs these even more.
That is important when you have a ton of voxel entities, since storing, rendering and modifying a single large octree is expensive. So you typically break your big octree slab into 32x32x32 chunks, inside which 16bit offsets are valid.
I kinda began transitioning my voxel engine to tiled rendering, but just breaking the octree into chunks gave enough speed on my vintage CPU.
But yeah, you do tiled BVH on a GPU and render only the actually dirty tiles while using the LoD versions for fast moving ones, I do expect lightning editing speeds even for enormously huge models (think 3**(2**16)).
Current Mood: amused