using Win32.Graphics.Direct3D12; namespace Ghost.Graphics.D3D12; /// /// Implementation of render target view (RTV) descriptor. /// public readonly struct RenderTargetDescriptor { public uint Index { get; } public CpuDescriptorHandle CpuHandle { get; } public RenderTargetDescriptor(uint index, CpuDescriptorHandle cpuHandle) { Index = index; CpuHandle = cpuHandle; } } /// /// Implementation of depth stencil view (DSV) descriptor. /// public readonly struct DepthStencilDescriptor { public uint Index { get; } public CpuDescriptorHandle CpuHandle { get; } public DepthStencilDescriptor(uint index, CpuDescriptorHandle cpuHandle) { Index = index; CpuHandle = cpuHandle; } } /// /// Implementation of shader resource view (SRV) descriptor. /// public sealed class ShaderResourceDescriptor { public uint Index { get; } public CpuDescriptorHandle CpuHandle { get; } public GpuDescriptorHandle GpuHandle { get; } public ShaderResourceDescriptor(uint index, CpuDescriptorHandle cpuHandle, GpuDescriptorHandle gpuHandle) { Index = index; CpuHandle = cpuHandle; GpuHandle = gpuHandle; } } /// /// Implementation of sampler descriptor. /// public sealed class SamplerDescriptor { public uint Index { get; } public CpuDescriptorHandle CpuHandle { get; } public GpuDescriptorHandle GpuHandle { get; } public SamplerDescriptor(uint index, CpuDescriptorHandle cpuHandle, GpuDescriptorHandle gpuHandle) { Index = index; CpuHandle = cpuHandle; GpuHandle = gpuHandle; } } /// /// Implementation of bindless descriptor for SM 6.6 rendering. /// This descriptor maintains a 1:1 relationship between allocation indices and shader indices. /// public sealed class BindlessDescriptor { public uint Index { get; } public CpuDescriptorHandle CpuHandle { get; } public GpuDescriptorHandle GpuHandle { get; } public BindlessDescriptor(uint index, CpuDescriptorHandle cpuHandle, GpuDescriptorHandle gpuHandle) { Index = index; CpuHandle = cpuHandle; GpuHandle = gpuHandle; } }