For the most part, this just adds boilerplate code for volume support in geometry nodes:
- Add VolumeComponent next to MeshComponent, etc.
- Support VolumeComponent in depsgraph object iterator.
Furthermore, I added initial volume support in a few nodes:
- The Object Info nodes outputs an Object Instance when the input is a volume object (that will be the same for mesh objects soonish, to avoid copies).
- Support transforming a VolumeComponent in the Transform node.
- Support the VolumeComponent in Join Geometry nodes, but only when just one of the inputs has a volume component for now.
Right now there is no way to create a VolumeComponent, because the Object Info node outputs a Volume Object Instance. The VolumeComponent will be necessary for nodes like T84606: Points to Volume modifier for the moss use case. I tested the VolumeComponent code by outputting a copy of the volume from the Object Info node, but didn't want to commit that to master.
Viewport selection does not work correctly with VolumeComponents currently. I don't know why that is. That can be figured out a bit later, once we can actually create new volumes in geometry nodes.
Ref T84604.