Files
tbd-station-14/Content.Client/Parallax/Data/IParallaxTextureSource.cs
Pieter-Jan Briers 1d5a06612a Optimize parallax VRAM usage (#37180)
* Disable parallax texture preloading

Many parallax layers are specific to a single map and will likely never be loaded for the duration of the game. Save VRAM by not loading them always.

Requires engine master

* Put generated parallax identifier in texture name

Makes it show up properly in debugging tools

* Don't load generated parallaxes multiple times

Many parallax prototypes re-use the same generated parallax configs. These generated parallaxes were being loaded multiple times at once, which was a massive waste of VRAM.

We now move these into a separate cache for deduplication. I had to write a lot of logic to handle loading cancellation and ref counting. Yay.

Also fixes some spaghetti with the previous parallax loading system: cancellation didn't work properly, give proper names to generated texture names, etc.

This saves like 100+ MB of VRAM.
2025-05-22 11:22:08 +10:00

25 lines
684 B
C#

using System.Threading;
using System.Threading.Tasks;
using Robust.Client.Graphics;
namespace Content.Client.Parallax.Data
{
[ImplicitDataDefinitionForInheritors]
public partial interface IParallaxTextureSource
{
/// <summary>
/// Generates or loads the texture.
/// Note that this should be cached, but not necessarily *here*.
/// </summary>
Task<Texture> GenerateTexture(CancellationToken cancel = default);
/// <summary>
/// Called when the parallax texture is no longer necessary, and may be unloaded.
/// </summary>
void Unload(IDependencyCollection dependencies)
{
}
}
}