# Surface Cache GI Preview

**URL:** https://discussions.unity.com/t/surface-cache-gi-preview/1720494
**Category:** Graphics Product Updates
**Tags:** Universal-Render-Pipeline, Official, Surface-Cache-GI
**Created:** [May 20, 2026, 3:32pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494 "2026-05-20T15:32:16Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 20, 2026, 3:32pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/1 "2026-05-20T15:32:17Z")

</div>

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.

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/f/f/4/ff482f1c9b0c079308f50c3229dd01ce15982ac0.jpeg)  
_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](https://docs.google.com/document/d/1QkYO3IF4G9kWV5swcOP4R3C1U3mkujeTONJcP2ECPzw/edit?tab=t.0#heading=h.csh84vbjdo9u) 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](https://docs.google.com/forms/d/e/1FAIpQLSe3sunZa40ZX9YIL0tw5IMIZDD89y1zq2jRz8qHhMNAfSnqyA/viewform?usp=publish-editor).

## New Capabilities

Surface Cache unlocks these new capabilities:

1. 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).  

2. 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.  

3. 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](https://docs.google.com/document/d/1QkYO3IF4G9kWV5swcOP4R3C1U3mkujeTONJcP2ECPzw/edit?tab=t.0#heading=h.csh84vbjdo9u). 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](https://www.ea.com/seed/news/siggraph21-global-illumination-surfels), [Kajiya renderer’s irradiance cache](https://github.com/EmbarkStudios/kajiya/blob/main/docs/gi-overview.md#irradiance-cache-055ms), and [Nvidia’s SHARC](https://github.com/NVIDIA-RTX/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).

---

<div class="post-metadata">

### Author: ![AndreaGalet](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/andreagalet/32/883621_2.png) [@AndreaGalet](https://discussions.unity.com/u/AndreaGalet)
#### Post date: [May 26, 2026, 10:45am UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/3 "2026-05-26T10:45:55Z")

</div>

> For optimal performance you may optionally switch to baked lighting for the final release of your game

This phrase should be printed on every wall possible. I’m so tired about games using a realtime global illumination system when literally everything is static.

---

<div class="post-metadata">

### Author: ![Redrag0n](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/redrag0n/32/102460_2.png) [@Redrag0n](https://discussions.unity.com/u/Redrag0n)
#### Post date: [May 26, 2026, 11:05am UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/4 "2026-05-26T11:05:12Z")

</div>

Really exiting news, can’t wait to get my hands on it.  
IMO, GI is half the battle in terms of providing excellent lighting, so I’m curious if HDRP’s RTAO (or similar) will be coming to URP, as URP is now embracing RT tech thanks to the URT.

---

<div class="post-metadata">

### Author: ![mgear](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/mgear/32/886412_2.png) [@mgear](https://discussions.unity.com/u/mgear)
#### Post date: [May 26, 2026, 1:05pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/6 "2026-05-26T13:05:42Z")

</div>

first crash : ) it was scene with ~15million vertices. (cad models), used default GI settings.

> D3D12Fence::Wait(132704) error: got 18446744073709551615. Device removal.  
> d3d12: Failed to process DXGI messages. Enable the debug layer!  
> d3d12: Device failed error (887a0006).  
> d3d12: Local memory usage exceeds budget by 167530496  
> d3d12: Local memory reservation exceeds reservation availability by 5445779456  
> d3d12: Local memory usage:  
> Budget: 8837644288  
> CurrentUsage: 9005174784  
> AvailableForReservation: 67108864  
> CurrentReservation: 5512888320  
> d3d12: GfxDevice was not out of Non-Local memory  
> d3d12: Non-Local memory usage:  
> Budget: 67742187520  
> CurrentUsage: 3702747136  
> AvailableForReservation: 0  
> CurrentReservation: 34005311488  
> d3d12: Unrecoverable GPU device error! Run with -force-d3d12-debug and see logs for more info.  
> Cannot use DisplayDialog because it was run from a thread that is not the main thread: Fatal Error! d3d12: Unrecoverable GPU device error! Run with -force-d3d12-debug and see logs for more info.
> 
> Crash!!!

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 1:22pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/7 "2026-05-26T13:22:48Z")

</div>

Should we report bugs here or via the normal bug reporter tool of Unity?

There’s a big one where SCGI is either not able to identify mainTex or not able to reconstruct the material in areas lit by bounced GI:

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/6/4/0/6404e1fc9e0613b3dba46dd40378077d273fcfd4.jpeg)

This scene has no custom shader btw so it’s highly unlikely that it can’t get the default \_mainTex.  
As you can see here when SCGI is enabled these areas turn monochrome:

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/a/2/9/a29a79533201397de369886d90333bf9919acd73.jpeg)  
 ![image](https://europe1.discourse-cdn.com/unity/original/4X/f/d/8/fd8fd59d8573bcb120769653a57b725a74a19b55.jpeg)

Edit: The issue might be irradiance:

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/9/5/7/957960b4fc1346486e037cb752b4f692df75d30f.jpeg)

---

<div class="post-metadata">

### Author: ![thilonel](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@thilonel](https://discussions.unity.com/u/thilonel)
#### Post date: [May 26, 2026, 1:24pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/8 "2026-05-26T13:24:46Z")

</div>

Thank you so much Lighting Team! ⚡

I’m eagerly waiting for this for my upcoming island-empire / city builder game! (full ECS) It will be a total game changer!

Will try it out asap and give you all the feedback I can provide!

Keep up the great work and take some time to celebrate, I will! 😃

---

<div class="post-metadata">

### Author: ![sacb0y](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/sacb0y/32/101976_2.png) [@sacb0y](https://discussions.unity.com/u/sacb0y)
#### Post date: [May 26, 2026, 1:40pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/9 "2026-05-26T13:40:38Z")

</div>

Lovely! Now we just need a realtime reflection solution.

updating probes or using realtime probes is possible but for stuff like opening that door it’s gonna take a lot of doing to make it look natural.

I’m super glad to see this though!

> [@JiRo\_Dev](#):
>
> This scene has no custom shader btw so it’s highly unlikely that it can’t get the default \_mainTex.  
> As you can see here when SCGI is enabled these areas turn monochrome:

This issue I think is reflection probes. If you don’t update reflection probes with this dynamic lighting you will run into problems like this.

Each room here needs a reflection probe to properly represent the lighting there.

Maybe SSR might help with occlusion I think? But it’s hard to say.

---

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 26, 2026, 1:43pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/10 "2026-05-26T13:43:51Z")

</div>

That looks odd indeed.

Here’s a few things to try:

1. You could try to inspect this scene via Window \> Analysis \> Rendering Debugger \> Lighting \> Lighting Debug Mode = Global Illumination. This allows you to see raw irradiance (i.e. incoming light as opposed to outgoing which is the default).
2. In Lighting \> Environment you can try to switch to Color mode and then choose a weird color like green. Does that give you anything meaningful or do you still see “grey”? Surface Cache should react in realtime so you should be able to try a few things out this way. You could disable the sun to make it more clear.
3. Ensure you have no baked lighting: In Lighting window you can click the dropdown array in the lower right and then Clear Baked Data. Surface Cache picks up lights which are not baked (which is not the same as lights which are marked as realtime).
4. In attempt to simplify, you could try removing the directional light and then iteratively removing game object while ensuring the issue still happens. If you can reduce it down to a few objects lit by the environment light, then you could submit a bug report with the minimized project attached. That would allow us to take a look.
5. For simplicity you could (temporarily) set Lighting Window \> Environment \> Environment Reflections \> Intensity Multiplier to 0. This disables all specular reflection from the global ambient probe. Having this enabled can sometimes be confusing when debugging diffuse.

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 1:45pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/11 "2026-05-26T13:45:47Z")

</div>

> [@sacb0y](#):
>
> This issue I think is reflection probes. If you don’t update reflection probes with this dynamic lighting you will run into problems like this.

It’s not, I’ve seen the same issue when I made my own Ray Traced GI solution, you need to take texture properties from shaders and if a custom shader uses non conventional names like Tex instead of \_mainTex you end up with monochrome GI, but that doesn’t seem to be the case here.

---

<div class="post-metadata">

### Author: ![sacb0y](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/sacb0y/32/101976_2.png) [@sacb0y](https://discussions.unity.com/u/sacb0y)
#### Post date: [May 26, 2026, 1:49pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/12 "2026-05-26T13:49:51Z")

</div>

Is that so 🤔

To me it just looks like the default GI/reflection probe getting in the way.

Also a question for @rasmusn while the light propagation is definitely fast for a tool like this i have seen faster. Would ray reconstruction help this in the future?

---

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 26, 2026, 1:56pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/13 "2026-05-26T13:56:02Z")

</div>

> [@sacb0y](#):
>
> while the light propagation is definitely fast for a tool like this i have seen faster.

If you haven’t already you can reduce the lag by setting Temporal Smoothing = 0. This may increase temporal noise which you can solve increasing sample count (if you can afford this). We expect to be able to further reduce the general reaction time before the final release.

> [@sacb0y](#):
>
> Would ray reconstruction help this in the future?

I assume you are referring to technologies like Nvidia DLSS and AMD FSR. Generally, no, this will not help here. These technologies assume a screen space input where each pixel holds “path tracing samples”. This is not what we do. We take “path tracing samples” per Surface Cache patch (to maintain a low ray count). That said, we expect to continue improving the current screen space noise artifacts in the coming months.

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 2:00pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/14 "2026-05-26T14:00:52Z")

</div>

> [@rasmusn](#):
>
> You could try to inspect this scene via Window \> Analysis \> Rendering Debugger \> Lighting \> Lighting Debug Mode = Global Illumination. This allows you to see raw irradiance (i.e. incoming light as opposed to outgoing which is the default).

Yeah irradiance might be the problem, this is not how it’s supposed to look:

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/9/f/0/9f0d707ef90e8531836f5abf8694ffda98a22e28.jpeg)  
Also there’s no baked GI, SCGI works fine"ish" in a different scene on the same project so something scene related?

> [@rasmusn](#):
>
> In attempt to simplify, you could try removing the directional light and then iteratively removing game object while ensuring the issue still happens. If you can reduce it down to a few objects lit by the environment light, then you could submit a bug report with the minimized project attached. That would allow us to take a look.

I can send the whole thing I don’t mind

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 2:09pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/15 "2026-05-26T14:09:26Z")

</div>

In a different scene where SCGI works you can get disocclusion artifacts around thin objects in front of far objects, similar to SSR artifacting:

  
Edit: It’s not exclusive to thin objects, this seems by the design nature of SCGI being a bit like Screen Space GI?

---

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 26, 2026, 2:19pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/16 "2026-05-26T14:19:24Z")

</div>

> [@JiRo\_Dev](#):
>
> Also there’s no baked GI, SCGI works fine"ish" in a different scene on the same project so something scene related?

It seems occlusion is kinda working (interios look dark). It is just the color that is off. I would check that Lighting \> Environment has a proper environment light configuration but probably you already did that. For example, if you set it to Color and choose Red, then irradiance should become red. Note that this would work regardless of albedo color of the surface.

> [@JiRo\_Dev](#):
>
> I can send the whole thing I don’t mind

Thanks, but the simpler the better, actually :).

---

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 26, 2026, 2:21pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/17 "2026-05-26T14:21:41Z")

</div>

You can probably fix this by increasing Surface Cache Volume Override \> Volume Configuration \> Size. Similar to shadow mapping, we require you to define the volume in which you want SCGI to cover. Currently, I think your value is too low. Try bumping it.

If you enable Cell Index debugging mode you can see the patches move in realtime as you play with the settings in the volume override (admittedly, the debugging UX is not great currently but it does work).

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 2:23pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/18 "2026-05-26T14:23:30Z")

</div>

> [@rasmusn](#):
>
> For example, if you it to Color and choose Red, then irradiance should become red

Only transparent materials respond, not opaque:

 ![image](https://europe1.discourse-cdn.com/unity/original/4X/7/1/3/71370c2da32737b43c413a88fe02ade1e15407ac.jpeg)

---

<div class="post-metadata">

### Author: ![sacb0y](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/sacb0y/32/101976_2.png) [@sacb0y](https://discussions.unity.com/u/sacb0y)
#### Post date: [May 26, 2026, 2:29pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/19 "2026-05-26T14:29:49Z")

</div>

> [@rasmusn](#):
>
> I assume you are referring to technologies like Nvidia DLSS and AMD FSR. Generally, no, this will not help here. These technologies assume a screen space input where each pixel holds “path tracing samples”. This is not what we do. We take “path tracing samples” per Surface Cache patch (to maintain a low ray count). That said, we expect to continue improving the current screen space noise artifacts in the coming months.

Hm, I was assuming it was some sort of denoising which RR might help but I guess not? But isn’t that what the temporal smoothing would do?

🤔

Maybe i’ll do some stress testing later, i’ve still been meaning to make a public “lighting test” map

---

<div class="post-metadata">

### Author: ![rasmusn](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/rasmusn/32/267191_2.png) [@rasmusn](https://discussions.unity.com/u/rasmusn)
#### Post date: [May 26, 2026, 2:30pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/20 "2026-05-26T14:30:08Z")

</div>

Thanks for trying this. Perhaps you can send me a small project with a single building (or something like that) exhibiting this issue and I can take a look on my machine. That would be helpful.

---

<div class="post-metadata">

### Author: ![JiRo\_Dev](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/jiro_dev/32/86195_2.png) [@JiRo\_Dev](https://discussions.unity.com/u/JiRo_Dev)
#### Post date: [May 26, 2026, 2:45pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/21 "2026-05-26T14:45:22Z")

</div>

Sadly exporting just a few buildings to a new project removes the issue, I think it might be something with my project config so I have to send the whole thing, will a DM be fine?

---

<div class="post-metadata">

### Author: ![SzopenPogo](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/szopenpogo/32/1011845_2.png) [@SzopenPogo](https://discussions.unity.com/u/SzopenPogo)
#### Post date: [May 26, 2026, 3:44pm UTC](https://discussions.unity.com/t/surface-cache-gi-preview/1720494/22 "2026-05-26T15:44:52Z")

</div>

Even with Surface Cache GL, when I’m trying to achieve realism, URP feels like dropping GTA V assets into the GTA San Andreas engine. The lighting and materials completely ruin the high quality models. The materials especially look really poor. URP is technologically very, very far behind HDRP, and I’m starting to doubt whether you’ll be able to achieve even a remotely similar level of rendering quality in the coming years. Sad because I really like this engine, but this level of graphics is completely unsuitable for my future projects. HDRP looks very unique, and if it received a similar system, it would be a major competitor to UE5.

[Next page](https://discussions.unity.com/t/surface-cache-gi-preview/1720494.md?page=2)
