My project uses DXR to render signed distance field objects. Geometry is built from procedural AABBs, and associated distance data is stored in a 3D volume and sphere-traced within an intersection shader.
Volumes are compacted so that no empty space is wasted, and an indirection table is used to associate raytracing AABBs with distance data.
Async compute is used to rebuild geometry in real-time without stalling the rendering queue. Resources are double-buffered and their states managed to prevent simultaneous reading and writing.
Objects are built hierarchically, starting with very large, coarse bricks, each of which can be refined into up to 64 sub-bricks with each iteration.
Each brick evaluates which edits (the primitive shapes that make up an object) are relevant, and stores a list of indices of these edits. When the brick is later evaluated, only the relevant edits need to be evaluated which speeds up construction massively.


