MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / setScene

Method setScene

Source/RenderPasses/SceneDebugger/SceneDebugger.cpp:166–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164}
165
166void SceneDebugger::setScene(RenderContext* pRenderContext, const ref<Scene>& pScene)
167{
168 mUpdateFlagsConnection = {};
169 mUpdateFlags = IScene::UpdateFlags::None;
170
171 mpScene = pScene;
172 mpMeshToBlasID = nullptr;
173 mpDebugPass = nullptr;
174 mUpdateFlags = IScene::UpdateFlags::None;
175
176 if (mpScene)
177 {
178 mUpdateFlagsConnection = mpScene->getUpdateFlagsSignal().connect([&](IScene::UpdateFlags flags) { mUpdateFlags |= flags; });
179
180 // Prepare our programs for the scene.
181 ProgramDesc desc;
182 desc.addShaderModules(mpScene->getShaderModules());
183 desc.addShaderLibrary(kShaderFile).csEntry("main");
184 desc.addTypeConformances(mpScene->getTypeConformances());
185
186 DefineList defines = mpScene->getSceneDefines();
187 defines.add(mpSampleGenerator->getDefines());
188 mpDebugPass = ComputePass::create(mpDevice, desc, defines);
189
190 // Create lookup table for mesh to BLAS ID.
191 auto blasIDs = mpScene->getMeshBlasIDs();
192 if (!blasIDs.empty())
193 {
194 mpMeshToBlasID = mpDevice->createStructuredBuffer(
195 sizeof(uint32_t),
196 (uint32_t)blasIDs.size(),
197 ResourceBindFlags::ShaderResource,
198 MemoryType::DeviceLocal,
199 blasIDs.data(),
200 false
201 );
202 }
203
204 // Create instance metadata.
205 initInstanceInfo();
206
207 // Bind variables.
208 auto var = mpDebugPass->getRootVar()["CB"]["gSceneDebugger"];
209 if (!mpPixelData)
210 {
211 mpPixelData = mpDevice->createStructuredBuffer(
212 var["pixelData"],
213 1,
214 ResourceBindFlags::ShaderResource | ResourceBindFlags::UnorderedAccess,
215 MemoryType::DeviceLocal,
216 nullptr,
217 false
218 );
219 mpPixelDataStaging =
220 mpDevice->createStructuredBuffer(var["pixelData"], 1, ResourceBindFlags::None, MemoryType::ReadBack, nullptr, false);
221 }
222 var["pixelData"] = mpPixelData;
223 var["meshToBlasID"] = mpMeshToBlasID;

Callers

nothing calls this directly

Calls 13

getSceneDefinesMethod · 0.80
getMeshBlasIDsMethod · 0.80
getRootVarMethod · 0.80
createFunction · 0.70
connectMethod · 0.45
getShaderModulesMethod · 0.45
getTypeConformancesMethod · 0.45
addMethod · 0.45
getDefinesMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected