* 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.
25 lines
684 B
C#
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)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|