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

Method createParameterBlock

Source/Falcor/Scene/Scene.cpp:746–791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

744 }
745
746 void Scene::createParameterBlock()
747 {
748 // Create parameter block.
749 ref<Program> pProgram = Program::createCompute(mpDevice, "Scene/SceneBlock.slang", "main", getSceneDefines());
750 ref<const ParameterBlockReflection> pReflection = pProgram->getReflector()->getParameterBlock(kParameterBlockName);
751 FALCOR_ASSERT(pReflection);
752
753 mpSceneBlock = ParameterBlock::create(mpDevice, pReflection);
754 auto var = mpSceneBlock->getRootVar();
755
756 // Create GPU buffers.
757 if (!mGeometryInstanceData.empty() &&
758 (!mpGeometryInstancesBuffer || mpGeometryInstancesBuffer->getElementCount() < mGeometryInstanceData.size()))
759 {
760 mpGeometryInstancesBuffer = mpDevice->createStructuredBuffer(var[kGeometryInstanceBufferName], (uint32_t)mGeometryInstanceData.size(), ResourceBindFlags::ShaderResource, MemoryType::DeviceLocal, nullptr, false);
761 mpGeometryInstancesBuffer->setName("Scene::mpGeometryInstancesBuffer");
762 }
763
764 if (!mMeshDesc.empty() &&
765 (!mpMeshesBuffer || mpMeshesBuffer->getElementCount() < mMeshDesc.size()))
766 {
767 mpMeshesBuffer = mpDevice->createStructuredBuffer(var[kMeshBufferName], (uint32_t)mMeshDesc.size(), ResourceBindFlags::ShaderResource, MemoryType::DeviceLocal, nullptr, false);
768 mpMeshesBuffer->setName("Scene::mpMeshesBuffer");
769 }
770
771 if (!mCurveDesc.empty() &&
772 (!mpCurvesBuffer || mpCurvesBuffer->getElementCount() < mCurveDesc.size()))
773 {
774 mpCurvesBuffer = mpDevice->createStructuredBuffer(var[kCurveBufferName], (uint32_t)mCurveDesc.size(), ResourceBindFlags::ShaderResource, MemoryType::DeviceLocal, nullptr, false);
775 mpCurvesBuffer->setName("Scene::mpCurvesBuffer");
776 }
777
778 if (!mLights.empty() &&
779 (!mpLightsBuffer || mpLightsBuffer->getElementCount() < mLights.size()))
780 {
781 mpLightsBuffer = mpDevice->createStructuredBuffer(var[kLightsBufferName], (uint32_t)mLights.size(), ResourceBindFlags::ShaderResource, MemoryType::DeviceLocal, nullptr, false);
782 mpLightsBuffer->setName("Scene::mpLightsBuffer");
783 }
784
785 if (!mGridVolumes.empty() &&
786 (!mpGridVolumesBuffer || mpGridVolumesBuffer->getElementCount() < mGridVolumes.size()))
787 {
788 mpGridVolumesBuffer = mpDevice->createStructuredBuffer(var[kGridVolumesBufferName], (uint32_t)mGridVolumes.size(), ResourceBindFlags::ShaderResource, MemoryType::DeviceLocal, nullptr, false);
789 mpGridVolumesBuffer->setName("Scene::mpGridVolumesBuffer");
790 }
791 }
792
793 void Scene::bindParameterBlock()
794 {

Callers

nothing calls this directly

Calls 8

createComputeFunction · 0.85
getRootVarMethod · 0.80
createFunction · 0.50
getParameterBlockMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
setNameMethod · 0.45

Tested by

no test coverage detected