feat(render): add ECS-based test render pipeline

Introduce TestRenderPipeline and settings, replacing MeshRenderPass.
The new pipeline manages per-frame instance, view, and global data buffers,
and uploads them for each render request. Refactor GraphicsTestWindow to use
ECS World, setting up camera and mesh entities. Remove MeshRenderPass and
related demo code. Add TotalRecordCount to RenderList, new data structs for
buffer uploads, and static masks to RenderingLayerMask. Update project
references and InternalsVisibleTo for Ghost.Graphics.Test access.
This commit is contained in:
2026-03-24 20:14:26 +09:00
parent 92e3d33361
commit 7860e5e341
9 changed files with 308 additions and 354 deletions

View File

@@ -41,15 +41,29 @@ public static class RootSignatureLayout
public const int ROOT_PARAMETER_COUNT = 1;
}
[StructLayout(LayoutKind.Sequential, Size = 16)]
[StructLayout(LayoutKind.Sequential, Size = 20)]
public struct PushConstantsData
{
public uint globalIndex;
public uint viewIndex;
public uint instanceIndex;
public uint objectIndex;
public uint materialIndex;
}
[StructLayout(LayoutKind.Sequential, Size = 8)]
public struct GlobalFrameData
{
public uint viewBufferIndex;
public uint instanceBufferIndex;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct InstanceData
{
public float4x4 localToWorld;
}
// The size should be 176 bytes (16-byte aligned)
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct PerViewData