MCPcopy Create free account
hub / github.com/NVIDIA-RTX/RTXPT / Init

Method Init

Rtxpt/SampleCommon/SampleBaseApp.cpp:63–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63SampleBaseApp::InitReturnCodes SampleBaseApp::Init(int argc, const char* const* argv)
64{
65 donut::app::DeviceCreationParameters deviceParams = GetDefaultDeviceParams();
66
67 std::string preferredScene = "bistro-programmer-art.scene.json"; // "kitchen.scene.json";
68 LocalConfig::PreferredSceneOverride(preferredScene);
69
70 // Process command line arguments
71 if (!ProcessCommandLine(argc, argv, deviceParams, preferredScene))
72 {
73 return InitReturnCodes::FailProcessingCommandLine;
74 }
75
76 if (!InitDeviceAndWindow(deviceParams))
77 {
78 return InitReturnCodes::FailToCreateDevice;
79 }
80
81 // Check API feature support
82 if (!CheckDeviceFeatureSupport(deviceParams))
83 {
84 return InitReturnCodes::FailDeviceFeatureSupport;
85 }
86
87 CreateShaderFactory();
88
89 // -- Register render passes into Donut --
90 // Create the main render pass. This is where path tracing happens
91 m_MainSceneRender = CreateMainRenderPass(*m_DeviceManager, m_CmdLine);
92 m_MainSceneRender->Init(preferredScene, m_ShaderFactory);
93 m_DeviceManager->AddRenderPassToBack(m_MainSceneRender.get());
94
95#if DONUT_WITH_DX12 && (RTXPT_D3D_AGILITY_SDK_VERSION >= 619) // temporary
96 // When using AgilitySDK >= 619, we require shader model 6.9
97 if (m_DeviceManager->GetDevice()->getGraphicsAPI() == nvrhi::GraphicsAPI::D3D12)
98 {
99 ID3D12Device* d3d12Device = static_cast<ID3D12Device*>(
100 m_DeviceManager->GetDevice()->getNativeObject(nvrhi::ObjectTypes::D3D12_Device)
101 );
102
103 D3D12_FEATURE_DATA_SHADER_MODEL shaderModel = { D3D_SHADER_MODEL_6_9 };
104
105 HRESULT hr = d3d12Device->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &shaderModel, sizeof(shaderModel));
106 assert(SUCCEEDED(hr));
107 if (shaderModel.HighestShaderModel < D3D_SHADER_MODEL_6_9)
108 {
109 donut::log::fatal("Shader Model 6.9 is required when compiled with Agility SDK 1.619 or newer, but is unsupported on the current device. Please check for newer graphics drivers, or recompile without Agility SDK");
110 return InitReturnCodes::FailToCreateDevice;
111 }
112 }
113#endif
114
115 // Optionally create the UP render pass. This exposes run time parameter controls.
116 if (!m_CmdLine.noWindow)
117 {
118 m_UIRender = std::make_unique<SampleUI>(m_DeviceManager.get(), *this, *m_MainSceneRender, g_sampleUIData, IsSERSupported(), m_CmdLine);
119 m_UIRender->Init(m_ShaderFactory);
120 m_DeviceManager->AddRenderPassToBack(m_UIRender.get());

Callers

nothing calls this directly

Calls 1

GetDeviceMethod · 0.45

Tested by

no test coverage detected