Add static helper methods to D3D12RootSignature and D3D12PipelineState
This commit is contained in:
@@ -39,5 +39,91 @@ void D3D12RootSignature::Shutdown() {
|
||||
m_rootSignature.Reset();
|
||||
}
|
||||
|
||||
D3D12_ROOT_SIGNATURE_DESC D3D12RootSignature::CreateDesc(
|
||||
D3D12_ROOT_PARAMETER* parameters,
|
||||
uint32_t parameterCount,
|
||||
D3D12_STATIC_SAMPLER_DESC* samplers,
|
||||
uint32_t samplerCount,
|
||||
D3D12_ROOT_SIGNATURE_FLAGS flags) {
|
||||
D3D12_ROOT_SIGNATURE_DESC desc = {};
|
||||
desc.NumParameters = parameterCount;
|
||||
desc.pParameters = parameters;
|
||||
desc.NumStaticSamplers = samplerCount;
|
||||
desc.pStaticSamplers = samplers;
|
||||
desc.Flags = flags;
|
||||
return desc;
|
||||
}
|
||||
|
||||
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateCBV(uint32_t shaderRegister, ShaderVisibility visibility, uint32_t registerSpace) {
|
||||
D3D12_ROOT_PARAMETER param = {};
|
||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
|
||||
param.ShaderVisibility = ToD3D12(visibility);
|
||||
param.Descriptor.RegisterSpace = registerSpace;
|
||||
param.Descriptor.ShaderRegister = shaderRegister;
|
||||
return param;
|
||||
}
|
||||
|
||||
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateSRV(uint32_t shaderRegister, ShaderVisibility visibility, uint32_t registerSpace) {
|
||||
D3D12_ROOT_PARAMETER param = {};
|
||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
|
||||
param.ShaderVisibility = ToD3D12(visibility);
|
||||
param.Descriptor.RegisterSpace = registerSpace;
|
||||
param.Descriptor.ShaderRegister = shaderRegister;
|
||||
return param;
|
||||
}
|
||||
|
||||
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateUAV(uint32_t shaderRegister, ShaderVisibility visibility, uint32_t registerSpace) {
|
||||
D3D12_ROOT_PARAMETER param = {};
|
||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
|
||||
param.ShaderVisibility = ToD3D12(visibility);
|
||||
param.Descriptor.RegisterSpace = registerSpace;
|
||||
param.Descriptor.ShaderRegister = shaderRegister;
|
||||
return param;
|
||||
}
|
||||
|
||||
D3D12_ROOT_PARAMETER D3D12RootSignature::Create32BitConstants(uint32_t shaderRegister, uint32_t num32BitValues, ShaderVisibility visibility, uint32_t registerSpace) {
|
||||
D3D12_ROOT_PARAMETER param = {};
|
||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
|
||||
param.ShaderVisibility = ToD3D12(visibility);
|
||||
param.Constants.RegisterSpace = registerSpace;
|
||||
param.Constants.ShaderRegister = shaderRegister;
|
||||
param.Constants.Num32BitValues = num32BitValues;
|
||||
return param;
|
||||
}
|
||||
|
||||
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateDescriptorTable(uint32_t shaderRegister, uint32_t numDescriptors, D3D12_DESCRIPTOR_RANGE_TYPE rangeType, ShaderVisibility visibility, uint32_t registerSpace) {
|
||||
static D3D12_DESCRIPTOR_RANGE range;
|
||||
range.RangeType = rangeType;
|
||||
range.NumDescriptors = numDescriptors;
|
||||
range.BaseShaderRegister = shaderRegister;
|
||||
range.RegisterSpace = registerSpace;
|
||||
range.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
|
||||
|
||||
D3D12_ROOT_PARAMETER param = {};
|
||||
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
|
||||
param.ShaderVisibility = ToD3D12(visibility);
|
||||
param.DescriptorTable.NumDescriptorRanges = 1;
|
||||
param.DescriptorTable.pDescriptorRanges = ⦥
|
||||
return param;
|
||||
}
|
||||
|
||||
D3D12_STATIC_SAMPLER_DESC D3D12RootSignature::CreateStaticSampler(uint32_t shaderRegister, const D3D12_SAMPLER_DESC& desc, ShaderVisibility visibility) {
|
||||
D3D12_STATIC_SAMPLER_DESC samplerDesc = {};
|
||||
samplerDesc.Filter = desc.Filter;
|
||||
samplerDesc.AddressU = desc.AddressU;
|
||||
samplerDesc.AddressV = desc.AddressV;
|
||||
samplerDesc.AddressW = desc.AddressW;
|
||||
samplerDesc.MipLODBias = desc.MipLODBias;
|
||||
samplerDesc.MaxAnisotropy = desc.MaxAnisotropy;
|
||||
samplerDesc.ComparisonFunc = desc.ComparisonFunc;
|
||||
samplerDesc.BorderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK;
|
||||
samplerDesc.MinLOD = desc.MinLOD;
|
||||
samplerDesc.MaxLOD = desc.MaxLOD;
|
||||
samplerDesc.RegisterSpace = 0;
|
||||
samplerDesc.ShaderRegister = shaderRegister;
|
||||
samplerDesc.ShaderVisibility = ToD3D12(visibility);
|
||||
return samplerDesc;
|
||||
}
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
|
||||
Reference in New Issue
Block a user