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

Method createParameterBlock

Source/Falcor/DiffRendering/SceneGradients.cpp:66–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void SceneGradients::createParameterBlock()
67{
68 DefineList defines;
69 defines.add("SCENE_GRADIENTS_BLOCK");
70 auto pPass = ComputePass::create(mpDevice, kShaderFilename, "main", defines);
71 auto pReflector = pPass->getProgram()->getReflector()->getParameterBlock(kSceneGradientsBlockName);
72 FALCOR_ASSERT(pReflector);
73
74 // Create GPU buffers.
75 auto bindFlags = ResourceBindFlags::ShaderResource | ResourceBindFlags::UnorderedAccess;
76 for (size_t i = 0; i < size_t(GradientType::Count); i++)
77 {
78 if (mGradInfos[i].active)
79 {
80 mpGrads[i] = mpDevice->createBuffer(
81 mGradInfos[i].dim * sizeof(float), bindFlags | ResourceBindFlags::Shared, MemoryType::DeviceLocal, nullptr
82 );
83 mpTmpGrads[i] = mpDevice->createBuffer(
84 mGradInfos[i].dim * mGradInfos[i].hashSize * sizeof(float), bindFlags, MemoryType::DeviceLocal, nullptr
85 );
86 }
87 else
88 {
89 mpGrads[i] = mpTmpGrads[i] = nullptr;
90 }
91 }
92
93 // Bind resources to parameter block.
94 mpSceneGradientsBlock = ParameterBlock::create(mpDevice, pReflector);
95 auto var = mpSceneGradientsBlock->getRootVar();
96 for (size_t i = 0; i < size_t(GradientType::Count); i++)
97 {
98 var["gradDim"][i] = mGradInfos[i].dim;
99 var["hashSize"][i] = mGradInfos[i].hashSize;
100 var[kTmpGradsBufferName][i] = mpTmpGrads[i];
101 }
102}
103
104void SceneGradients::clearGrads(RenderContext* pRenderContext, GradientType _gradType)
105{

Callers

nothing calls this directly

Calls 6

getProgramMethod · 0.80
createBufferMethod · 0.80
getRootVarMethod · 0.80
createFunction · 0.70
addMethod · 0.45
getParameterBlockMethod · 0.45

Tested by

no test coverage detected