]> git.smokeofanarchy.ru Git - space-station-14.git/commit
Fix render target caching in overlays (#40181)
authorPieter-Jan Briers <pieterjan.briers+git@gmail.com>
Sun, 21 Sep 2025 05:16:17 +0000 (07:16 +0200)
committerGitHub <noreply@github.com>
Sun, 21 Sep 2025 05:16:17 +0000 (17:16 +1200)
commit8c16b4580b7a48aa3f9bc581a4d1044ba427044d
treedad72e4a2efd9047c9e7b39251e5905953e36b4d
parentcc4cab5677316487319a5b89e6d111a116175a20
Fix render target caching in overlays (#40181)

Many newer overlays use IRenderTextures that are sized to the rendered viewport. This was completely broken, because a single viewport can be rendered on multiple viewports in a single frame.

The end result of this was that in the better case, constant render targets were allocated and freed, which is  extremely inefficient. In the worse case, many of these overlays completely failed to Dispose() their render targets, leading to *extremely* swift VRAM OOMs.

This fixes all the overlays to properly cache resources per viewport. This uses new engine functionality, so it requires engine master.

This is still a pretty lousy way to do GPU resource management but, well, anything better needs a render graph, so...
12 files changed:
Content.Client/Graphics/OverlayResourceCache.cs [new file with mode: 0644]
Content.Client/Light/AfterLightTargetOverlay.cs
Content.Client/Light/AmbientOcclusionOverlay.cs
Content.Client/Light/BeforeLightTargetOverlay.cs
Content.Client/Light/LightBlurOverlay.cs
Content.Client/Light/RoofOverlay.cs
Content.Client/Light/SunShadowOverlay.cs
Content.Client/Light/TileEmissionOverlay.cs
Content.Client/Overlays/StencilOverlay.RestrictedRange.cs
Content.Client/Overlays/StencilOverlay.Weather.cs
Content.Client/Overlays/StencilOverlay.cs
Content.Client/Silicons/StationAi/StationAiOverlay.cs