While I still think my idea for the depth slices would be easiest all around, another option to consider is rendering to a voxel array, or deep opacity maps, or Field3D or whatever. Let’s take the simple voxel case…
You define a voxel bounding box, and a resolution. Then after the particles are lit, you splat and accumulate them to the voxels. Assuming the particles are sorted to the longest axis of the voxel array, you can just stream them out, so you don’t need to have both a massive pointset and voxelset in memory at the same time. You would populate the appropriate channels, just like you would when saving a PRT. So maybe you save out density, emission, scattering, and absorption. You don’t need position, just a transform matrix for the whole array. You might end up with 30 points in one voxel, while another voxel gets none. When you finish splatting, the voxel array is optionally compressed. This will help with the empty voxels.
Now that this dataset is on disk, we can post-process it. We can convert it to deep opacity maps or deep shadow maps, blur it, mesh it, upsample, downsample, composite, clip, etc. Loaded into Fusion or Nuke we can render depth of field, relight, composite with geometry, composite with other voxels or deep opacity maps or deep shadow maps. Back in Krakatoa, we could use the voxels to resample to a new pointset, or we could use the voxels to render reflections/refraction from our favorite raytracer.
Right now you’re probably thinking “but aren’t voxels huge?” Sure, but we could do clever things, like warp the voxel grid so it was packed into the view frustrum, or was hierarchical, or an octree, or we could have a Deadline job that post-processed the raw voxels into deep shadow maps (or deep opacity, I’m not sure where Pixar stands with this darn patent). I don’t think the size is really an issue, just like rendering a billion particles at a time isn’t that big of an issue anymore. But you gain a LOT of flexibility, especially for filtering and compositing.
And if ALL you do is the naive splatting (and we know Frost can splat!), we’d still consider that a pretty cool option that TD’s could use with their voxel-centric pipelines.