MCPcopy Create free account
hub / github.com/Apress/Ray-Tracing-Gems-II / CreateRTProgram

Function CreateRTProgram

Chapter_14/src/Graphics.cpp:1192–1269  ·  view source on GitHub ↗

* Load and create the DXR Ray Generation program and global root signature. */

Source from the content-addressed store, hash-verified

1190* Load and create the DXR Ray Generation program and global root signature.
1191*/
1192void CreateRTProgram(D3D12Global &d3d, DXRGlobal &dxr, D3D12ShaderCompilerInfo &shaderCompiler)
1193{
1194 // Load and compile the ray generation shader
1195 dxr.rtProgram = RtProgram(D3D12ShaderInfo(L"shaders\\PathTracer.hlsl", L"", L"lib_6_3"));
1196 D3DShaders::CompileShader(shaderCompiler, dxr.rtProgram);
1197
1198 // Describe the global root signature
1199 D3D12_DESCRIPTOR_RANGE ranges[6];
1200
1201 ranges[0].BaseShaderRegister = 0;
1202 ranges[0].NumDescriptors = UINT(DescriptorHeapConstants::CBTotal);
1203 ranges[0].RegisterSpace = 0;
1204 ranges[0].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_CBV;
1205 ranges[0].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::CBStart);
1206
1207 ranges[1].BaseShaderRegister = 0;
1208 ranges[1].NumDescriptors = UINT(DescriptorHeapConstants::UAV0Total);
1209 ranges[1].RegisterSpace = 0;
1210 ranges[1].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV;
1211 ranges[1].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::UAV0Start);
1212
1213 ranges[2].BaseShaderRegister = 0;
1214 ranges[2].NumDescriptors = UINT(DescriptorHeapConstants::SRV0Total);
1215 ranges[2].RegisterSpace = 0;
1216 ranges[2].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
1217 ranges[2].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::SRV0Start);
1218
1219 ranges[3].BaseShaderRegister = 0;
1220 ranges[3].NumDescriptors = UINT(DescriptorHeapConstants::SRV1Total);
1221 ranges[3].RegisterSpace = 1;
1222 ranges[3].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
1223 ranges[3].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::SRV1Start);
1224
1225 ranges[4].BaseShaderRegister = 0;
1226 ranges[4].NumDescriptors = UINT(DescriptorHeapConstants::SRV2Total);
1227 ranges[4].RegisterSpace = 2;
1228 ranges[4].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
1229 ranges[4].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::SRV2Start);
1230
1231 ranges[5].BaseShaderRegister = 0;
1232 ranges[5].NumDescriptors = UINT(DescriptorHeapConstants::SRV3Total);
1233 ranges[5].RegisterSpace = 3;
1234 ranges[5].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
1235 ranges[5].OffsetInDescriptorsFromTableStart = UINT(DescriptorHeapConstants::SRV3Start);
1236
1237 D3D12_ROOT_PARAMETER param0 = {};
1238 param0.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
1239 param0.ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
1240 param0.DescriptorTable.NumDescriptorRanges = _countof(ranges);
1241 param0.DescriptorTable.pDescriptorRanges = ranges;
1242
1243 D3D12_ROOT_PARAMETER rootParams[1] = { param0 };
1244
1245 D3D12_STATIC_SAMPLER_DESC staticSampler = {};
1246 staticSampler.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
1247 staticSampler.AddressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP;
1248 staticSampler.AddressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP;
1249 staticSampler.AddressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP;

Callers 2

ReloadShadersFunction · 0.85
InitMethod · 0.85

Calls 4

RtProgramClass · 0.85
D3D12ShaderInfoClass · 0.85
CreateRootSignatureFunction · 0.85
CompileShaderFunction · 0.70

Tested by

no test coverage detected