"All of them" is a simple answer. More details:
- I am mostly developing and testing with the built-in render pipeline (BiRP). This one does not need any extra setup;
just have
GaussianSplatRenderer
components. - URP: add
GaussianSplatURPFeature
to the URP renderer settings. - HDRP: add CustomPass volume object and a
GaussianSplatHDRPPass
entry to it. It can be setup to render before transparencies, or after postprocess. Doing it after postprocess often produces better results, since before transparencies does not play well with HDRP auto-exposure thingamabobs.
Note that the project requires DX12 or Vulkan on Windows, i.e. DX11 will not work. Go to player settings graphics APIs section and change Windows to use DX12.
GaussianSplatRenderer objects are rendered after all opaque objects and skybox is rendered, and are tested against Z buffer. This means you can have opaque objects inside the "gaussian scene", and the splats will be occluded properly.
However this does not work the other way around - the gaussians do not write into the Z buffer, and they are rendered before all transparencies. So they will not interact with "regular" semitransparent objects well.
No. No lights, shadows, reflection probes, lightmaps, skybox, any of that stuff.
If you have multiple GaussianSplatRenderer objects, they will be very roughly ordered, by their Transform positions. This means that if GS objects are "sufficiently not overlapping", they will render and composite correctly, but if one of them is inside another one, or overlapping "a lot", then depending on the viewing direction and their relative ordering, you can get incorrect rendering results.
This is very much the same issue as you'd have with overlapping particle systems, or overlapping semitransparent objects in "regular" rendering. It's hard to solve properly!