Refactor D3D12 Resource Management
Refactored and renamed components related to D3D12 graphics programming, replacing "descriptor" with "viewGroup" to improve resource grouping and management. Updated `D3D12CommandBuffer`, `D3D12DescriptorAllocator`, and `D3D12PipelineLibrary` to reflect these changes. Simplified material and shader creation in `D3D12ResourceAllocator`. Enhanced `D3D12ResourceDatabase` with resource naming for debugging and improved management. Refactored `Shader` and `ShaderPass` to use modern C# features and `IResourceReleasable` interface. Introduced `D3D12Utility` for centralized utility methods. Updated `Material` class for efficient buffer creation. Renamed `ShaderCompiler` to `SDLCompiler` with improved error handling. Updated `MeshRenderPass` to use new shader compilation process. Various improvements in error handling, code readability, and utility methods.
This commit is contained in:
@@ -3,6 +3,7 @@ using Ghost.Graphics.Contracts;
|
||||
using Ghost.Graphics.Data;
|
||||
using Ghost.Graphics.RHI;
|
||||
using Ghost.Graphics.Utilities;
|
||||
using Ghost.Shader.Compiler;
|
||||
using Misaki.HighPerformance.Image;
|
||||
|
||||
namespace Ghost.Graphics.RenderPasses;
|
||||
@@ -27,13 +28,17 @@ internal unsafe class MeshRenderPass : IRenderPass
|
||||
|
||||
public void Initialize(ref readonly RenderingContext ctx, IResourceAllocator resourceAllocator, IPipelineLibrary stateController)
|
||||
{
|
||||
var shaderDescriptor = SDLCompiler.CompileShader("F:\\csharp\\GhostEngine\\Ghost.Graphics\\RenderPasses\\ShaderCode.hlsl").GetValueOrThrow();
|
||||
|
||||
stateController.CompileShader(shaderDescriptor);
|
||||
stateController.PreCookPipelineState();
|
||||
|
||||
MeshBuilder.CreateCube(0.75f, default, out var vertices, out var indices);
|
||||
|
||||
_mesh = ctx.CreateMesh(vertices, indices);
|
||||
ctx.UploadMesh(_mesh, true);
|
||||
|
||||
_shader = resourceAllocator.CreateShader();
|
||||
|
||||
_shader = resourceAllocator.CreateShader(shaderDescriptor);
|
||||
_material = resourceAllocator.CreateMaterial(_shader);
|
||||
|
||||
var imageResults = new ImageResult[_textureFiles.Length];
|
||||
@@ -59,9 +64,6 @@ internal unsafe class MeshRenderPass : IRenderPass
|
||||
_textures[i] = ctx.CreateTexture(ref desc);
|
||||
ctx.UploadTexture(_textures[i], new Span<byte>(imageData.Data, (int)imageData.Size));
|
||||
}
|
||||
|
||||
stateController.CompileShader(_shader, "F:\\csharp\\GhostEngine\\Ghost.Graphics\\RenderPasses\\ShaderCode.hlsl");
|
||||
stateController.PreCookPipelineState();
|
||||
}
|
||||
|
||||
public void Execute(ref readonly RenderingContext ctx)
|
||||
|
||||
Reference in New Issue
Block a user