1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-28 01:47:33 +08:00

Apply changes to custom ShaderManager

This commit is contained in:
Dan Balasescu 2023-04-18 11:31:56 +09:00
parent 7aeab174eb
commit c0a25144cf
3 changed files with 6 additions and 22 deletions

View File

@ -164,7 +164,7 @@ namespace osu.Game.Tests.Rulesets
this.parentManager = parentManager; this.parentManager = parentManager;
} }
public override byte[] LoadRaw(string name) => parentManager.LoadRaw(name); public override byte[] GetRawData(string fileName) => parentManager.GetRawData(fileName);
public bool IsDisposed { get; private set; } public bool IsDisposed { get; private set; }

View File

@ -51,8 +51,8 @@ namespace osu.Game.Tests.Testing
{ {
AddStep("ruleset shaders retrieved without error", () => AddStep("ruleset shaders retrieved without error", () =>
{ {
Dependencies.Get<ShaderManager>().LoadRaw(@"sh_TestVertex.vs"); Dependencies.Get<ShaderManager>().GetRawData(@"sh_TestVertex.vs");
Dependencies.Get<ShaderManager>().LoadRaw(@"sh_TestFragment.fs"); Dependencies.Get<ShaderManager>().GetRawData(@"sh_TestFragment.fs");
}); });
} }

View File

@ -206,27 +206,11 @@ namespace osu.Game.Rulesets.UI
this.parent = parent; this.parent = parent;
} }
// When the debugger is attached, exceptions are expensive. public override IShader? GetCachedShader(string vertex, string fragment) => base.GetCachedShader(vertex, fragment) ?? parent.GetCachedShader(vertex, fragment);
// Manually work around this by caching failed lookups and falling back straight to parent.
private readonly HashSet<(string, string)> failedLookups = new HashSet<(string, string)>();
public override IShader Load(string vertex, string fragment) public override IShaderPart? GetCachedShaderPart(string name) => base.GetCachedShaderPart(name) ?? parent.GetCachedShaderPart(name);
{
if (!failedLookups.Contains((vertex, fragment)))
{
try
{
return base.Load(vertex, fragment);
}
catch
{
// Shader lookup is very non-standard. Rather than returning null on missing shaders, exceptions are thrown.
failedLookups.Add((vertex, fragment));
}
}
return parent.Load(vertex, fragment); public override byte[]? GetRawData(string fileName) => base.GetRawData(fileName) ?? parent.GetRawData(fileName);
}
} }
} }
} }