Hi everybody! My name is Rasmus and I’m a graphics engineer in Unity’s lighting team. As some of you already know, we have been working on a new dynamic global illumination feature for Unity called Surface Cache GI (SCGI). This is part of a larger effort to improve lighting quality in dynamic worlds where light baking may not be suitable.
Unity internal test content, indirect diffuse lighting contributed through Surface Cache GI in URP.
We already had several rounds of internal testing. While the feature is still not quite ready for release, it is reaching a level of maturity where it makes sense to invite everybody in the community to test it and to provide feedback. Our motivation for doing this is two-fold. First, we want your feedback on its design and how it works. Second, we hope we can collaborate to identify and squash as many bugs as possible before releasing in 6.7 LTS.
Getting Started
Below we show examples of what Surface Cache GI can do. If you are ready to jump in right away, head over to Unity Surface Cache GI - Getting Started to learn how to enable SCGI and start using it.
Please make sure to provide us with feedback about the feature either in this thread, or through Surface Cache GI - Product Experience Feedback.
New Capabilities
Surface Cache unlocks these new capabilities:
-
Dynamic geometry: Indirect lighting that adapts when geometry changes. This includes situations like destructible or procedural worlds, adding/removing props and buildings (e.g. city builders), opening/closing doors, dynamic content loading (e.g. product configurators, archviz).
-
Dynamic lighting: Indirect lighting that adapts when lights change. This includes situations like day/night cycles, turning lights on/off, torch and flash lights. With Enlighten and APV Lighting Scenarios, Unity already has some support for dynamic indirect lighting but these methods require a precomputation step and they only work with static geometry. Surface Cache GI lifts both limitations.
-
Faster iteration: Without the need to rebake lighting it becomes much faster and more enjoyable to iterate on your game worlds and lighting environments. For optimal performance you may optionally switch to baked lighting for the final release of your game.
Design Goals
People use Unity in a lot of very different ways. No rendering technique is perfect for all cases so designing something like Surface Cache GI involves difficult compromises. In our design, we aimed for a balance between runtime performance and visual quality. We prioritized platform reach, performance, ease of use, and robustness over high-end graphical fidelity.
Next Steps
For more information about this feature, its limitations, how it compares to existing GI methods, and how to get started, please checkout Unity Surface Cache GI - Getting Started. We have poured our minds and hearts into Surface Cache GI and we hope you are as excited about it as we are. We look forward to hearing your feedback.
FAQ
Does Surface Cache require hardware ray-tracing?
No. Surface Cache is built on top of the UnifiedRayTracing library, and therefore it will use hardware raytracing when it is available and use a compute shader fallback when it is not.
Does Surface Cache work with Metal Ray Tracing or Vulkan Ray Tracing?
Surface Cache works with Metal and Vulkan but it cannot exploit hardware ray tracing on these APIs because Unity itself does not support this. Unity’s Ray Tracing team is currently investigating the feasibility of adding support for Metal Ray Tracing and Vulkan Ray Tracing. If support is added, Surface Cache will automatically benefit from this.
What papers/techniques are Surface Cache based on?
Surface Cache is heavily inspired by Frostbite’s GIBS, Kajiya renderer’s irradiance cache, and Nvidia’s SHARC. It is not a direct implementation of either of these. Instead, it takes aspects of each solution and combines them in a new way that is tailored for Unity’s users.
What about specular indirect lighting?
Surface Cache GI is diffuse-only, but you may combine it with Reflection Probes and/or the upcoming Screen Space Reflections (aka SSR).






