Here's a clunky sort of first step (maybe not towards where you want to go):
Make a height-map of the subject (Mist Pass, 0-1, front to back of a containing cube)
Set up a node tree something like this:
Where each shading point asks whether, in 0-1 generated texture coordinate space, its Z value is close to the R value in the depth map for its XY. If it is, it lights up.
(Sorry to be confusing, but here, XY has been mapped to XZ, and Y checked against the map, to get Suzanne facing down Y)
The 'Close to' node group just returns 1 if Value1 and Value2 are within Delta of one another, 0 otherwise.
The 'Less Than' node checks if the Y value is close to 1, to get rid of the background, 'beyond everything' values in the depth map.
This is the result:
I tried projecting height-maps down X and Z as well, which could be encoded in G and B of the texture, but they were not automatically calibrated for position or scale, I may just have slipped up somewhere.
But I thought , anyway, it would be better to go for a spherical height map: bake a displacement map of the subject from an enclosing sphere, and store it as, say, a Mercator projection? And then, instead of using Z as the lookup, use the shading point's angles, theta and phi from the origin, to look up the point in the texture to check against.
Then you could use Alpha to store depth, and R,G and B to store R,G and B, to get colored (but not fully covered) volumes.
But since there will be lots of gotchas, and I'm not @Rich Sedman, that may take a while.