Here's Tangerine, my main personal project: https://github.com/aeva/tangerine
This is a CSG system built around composing signed distance functions in Racket. These are translated to an evaluator that can be ran on the CPU, and generated shaders for fast rendering. Models can be rendered in real time, or exported to common file formats for other purposes like 3D printing.
I wrote a bit about how it works back in March: http://zone.dog/braindump/sdf_clustering_part_2/
Tangerine uses a strategy I call SDF decomposition, where models are first described as expression trees, and then are split into sets of expression trees that are likely to intersect a given volume element. The current version is using an octree to find the ideal volume elements. These are then used to generate shaders and/or export models.
To illustrate this, here is the cafe dollhouse from the first post.
In the first image, the color indicates what shader rendered the patch. This model has 128 generated shaders.
The second image shows the octree volume elements with an arbitrary coloration. Each voxel has a single shader that will render it.
The third image is the octree again, but with a grayscale coloration that indicates the number of shapes in the local CSG tree. Darker is better.
Generating the SDF evaluator octree runs the range from nearly instant to a few seconds for the models I've made so far. The main pain point is OpenGL shader compiling being hard to make properly asynchronous. I'm hoping switching to Vulkan will give me more control over the parallelism of it, and making this non-blocking.
Mastodon server focused on game development and related topics.