Hello!
- Is URP’s Forward+ tiled (2D) or clustered (3D)?
- Is a depth pre-pass required to use it?
- Are there any plans to use it for more than just real-time lights, like how DOOM (2016) used their clustered rendering for decals and probes?
Hello!
Hi!
It is an in-between, but closer to 3D. It is based on this technique, which combines tiling (2D XY) with Z-bins (1D). The advantage is that you get the much better tile size of tiling (because memory usage is XY + Z instead of XY*Z), which allows for tighter culling, but with some of the depth advantages from clustering. So each light is tiled, but it only applies to a pixel if the pixel position is within the view space Z-range covered by the light.
Not required, all setup is handled on the CPU in Burst jobs running in overlap with a lot of the URP main thread code. In the future, we might take advantage of a pre-pass if it’s available to do some tighter culling for opaque surfaces.
Yes, for sure. We’re actually pretty close to landing support for reflection probes, which gives you a system similar to what HDRP has for reflection probes. I.e. no longer limited to 2 reflection probes per object As for decals, we want to investigate using it to support decals on transparent surfaces. (Decal shaders would not be supported via that path though.) But first, we need to generalize the Forward+ system a bit, so that the decals system can hook into it.
Awesome, thanks! It would be very interesting if you could find a way to generalize the system to also allow user-defined data. I think there are a lot of rendering techniques that could benefit from this optimization.
I can’t promise anything, but I agree that would be amazing
Hi! I was wondering if there was any progress here? Either in the department of integrating decals/reflection probes or allowing custom user data? It would be great to use for submitting custom ambient lighting volumes. (to darken caves without global illumination for example)