We are building a custom environment reflection probe system in order to be able to have multiple probes for different purposes. For those of you who don't know, a
Lighting Probe is effectively a 360 degree snapshot of the surrounding area at a certain location, used during the shading computations of any surface to simulate reflections and/or indirect lighting.
A very obvious case already discussed in other sections is, for example, one probe relative to the player position (low resolution) and one global probe (high resolution) for water reflections. Unfortunately, Unity adds a massive overhead when rendering probes, I'm guessing due to a combination of having to get accurate results across all potential usage cases, some underlying inefficiencies in their implementation and lack of quality/performance options.
In Rust, on the other hand, we have a lot of margin to reduce surface and shader quality, exclude shadows from multiple lights, use lower resolution textures and tradeoff a bunch of other features without any significant changes to the final result. Because of this we decided to roll our own solution. The results so far are extremely promising and we will be rolling it out next month, after a few weeks of intensive testing.
In the image above, you can take a peek at the performance boost (lower is better) that we get from our new custom/optimized HDR probe at a resolution of 512.
Not only is it more than twice as fast, it's also more accurate and allows complete control over quality tradeoffs: