New Sparse Simulation Technology and Rendering Nicholas Seavert
Posted on April 17, 2025
Completed
325 Simulate only in active regions where there is present voxel data. The active region is implicitly controlled by where there’s visible stuff (e.g. smoke), or through a explicit use-controllable activity map to combine with a pre-defined region.
Currently limited to a huge 8192x8192x8192 virtual simulation space for technical and performance reasons, meaning anything that fits within a 8192x8192x8192 bounding box is supported. Further lifting this restriction is planned for post-2.0.
EmberGen 2.0 combines both more efficient memory utilization techniques and sparsity to effectively simulate roughly 10-15x more voxels when directly compared to EmberGen 1.x, how much depends primarily on the sparsity of the simulation setup, with the possibility of even greater improvements. Roughly speaking you can take the bounding box of an EmberGen 1.x setup and multiply the voxels on each axis by 2-2.5x and get the equivalent level of detail in a similar setup in EmberGen 2.0.
A 6 GiB GPU can simulate up to 200 million active (sparse) voxels, which is roughly equivalent to 1 billion (dense) voxels in EmberGen 1.0
A 8 GiB GPU can simulate up to 300 million active voxels, which is roughly equivalent to 1.5 billion voxels in EmberGen 1.0
A 16 GiB GPU can simulate up to 600 million active voxels, which is roughly equivalent to 3 billion voxels in EmberGen 1.0
A 24 GiB GPU can simulate up to 1 billion active voxels, which is roughly equivalent to 5 billion voxels in EmberGen 1.0
A 32 GiB GPU can simulate up to 1.5 billion active voxels, which is roughly equivalent to 7.5 billion voxels in EmberGen 1.0
A 48 GiB GPU can simulate up to 2 billion active voxels, which is roughly equivalent to 10 billion voxels in EmberGen 1.0
The maximum number of active voxels by design is 2,147,450,880, which requires roughly 48 GiB of VRAM alone too store and operate.
All numbers above are without any kind of upscaling (higher resolution for certain components, e.g. 2x smoke resolution for 1x velocity resolution). It will be possible to simulate over 8 billion active upscaled voxels, which will be able to use more than 48 GiB of VRAM. This is roughly equivalent to 40 billion upscaled voxels in EmberGen 1.x.
It is also possible to trade VRAM efficiency for performance efficiency in certain ways if you don't need to simulate as many voxels as your GPU supports.
All of this comes with a newly optimized renderer for sparse volume representations.