Refactor render graph error handling and resource APIs

- RenderGraph.Compile/Execute now return Error for better failure detection; error handling is propagated throughout compiler and executor.
- Renamed ScheduleReleaseResource to ReleaseResource for clarity; updated all usages.
- ResourceManager now calls ReleaseResource directly on Mesh, Material, and Shader types.
- Camera exposes Actual/Virtual size properties and Render returns Error.
- RenderingContext now uses IResourceManager for mesh/resource ops.
- Replaced custom BinaryWriter with BufferWriter in RenderGraphHasher.
- Improved variable naming, interface signatures, and code formatting.
- Added Error extension for IsSuccess/IsFailure.
- Minor FMOD/native interop and test code cleanups.
- No breaking API changes except for new Error return values on some methods.
This commit is contained in:
2026-02-25 19:08:54 +09:00
parent 30090f84ab
commit 162b71f309
93 changed files with 537 additions and 593 deletions

View File

@@ -222,14 +222,13 @@ internal sealed class ResourceManager : IResourceManager, IDisposable
{
ObjectDisposedException.ThrowIf(_disposed, this);
ref var mesh = ref _meshes.GetElementReferenceAt(handle.ID, handle.Generation, out var exist);
if (!exist)
if (!_meshes.TryGetElementAt(handle.ID, handle.Generation, out var mesh))
{
return;
}
ReleaseResource(mesh);
_meshes.Remove(handle.ID, handle.Generation);
mesh.ReleaseResource(_resourceDatabase);
}
public bool HasMaterial(Handle<Material> handle)
@@ -253,14 +252,14 @@ internal sealed class ResourceManager : IResourceManager, IDisposable
{
ObjectDisposedException.ThrowIf(_disposed, this);
ref var material = ref _materials.GetElementReferenceAt(handle.ID, handle.Generation, out var exist);
var material = _materials.GetElementReferenceAt(handle.ID, handle.Generation, out var exist);
if (!exist)
{
return;
}
ReleaseResource(material);
_materials.Remove(handle.ID, handle.Generation);
material.ReleaseResource(_resourceDatabase);
}
public bool HasShader(Identifier<Shader> id)
@@ -288,14 +287,8 @@ internal sealed class ResourceManager : IResourceManager, IDisposable
return;
}
ref var shader = ref _shaders[id.Value]!;
ReleaseResource(shader);
}
private void ReleaseResource<T>(T resource)
where T : IResourceReleasable
{
resource.ReleaseResource(_resourceDatabase);
var shader = _shaders[id.Value];
shader.ReleaseResource(_resourceDatabase);
}
public void Dispose()
@@ -307,17 +300,17 @@ internal sealed class ResourceManager : IResourceManager, IDisposable
foreach (var mesh in _meshes)
{
ReleaseResource(mesh);
mesh.ReleaseResource(_resourceDatabase);
}
foreach (var material in _materials)
{
ReleaseResource(material);
material.ReleaseResource(_resourceDatabase);
}
foreach (var shader in _shaders)
{
ReleaseResource(shader);
shader.ReleaseResource(_resourceDatabase);
}
_meshes.Dispose();