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

Method update

Source/Falcor/Scene/Material/RGLMaterial.cpp:82–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80 }
81
82 Material::UpdateFlags RGLMaterial::update(MaterialSystem* pOwner)
83 {
84 FALCOR_ASSERT(pOwner);
85
86 auto flags = Material::UpdateFlags::None;
87 if (mUpdates != Material::UpdateFlags::None)
88 {
89 auto checkBuffer = [&](ref<Buffer>& buf, uint& handle)
90 {
91 // If a BRDF was already loaded and we're just updating data,
92 // then buffer handles are already assigned.
93 // Replace the buffer contents instead of adding a new buffer.
94 if (mBRDFUploaded)
95 {
96 pOwner->replaceBuffer(handle, buf);
97 }
98 else
99 {
100 uint32_t bufferID = pOwner->addBuffer(buf);
101 if (bufferID != handle) mUpdates |= Material::UpdateFlags::DataChanged;
102 handle = bufferID;
103 }
104 };
105
106 checkBuffer(mpThetaBuf, mData.thetaBufID);
107 checkBuffer(mpPhiBuf, mData.phiBufID);
108 checkBuffer(mpSigmaBuf, mData.sigmaBufID);
109 checkBuffer(mpNDFBuf, mData.ndfBufID);
110 checkBuffer(mpVNDFBuf, mData.vndfBufID);
111 checkBuffer(mpLumiBuf, mData.lumiBufID);
112 checkBuffer(mpRGBBuf, mData.rgbBufID);
113 checkBuffer(mpVNDFMarginalBuf, mData.vndfMarginalBufID);
114 checkBuffer(mpLumiMarginalBuf, mData.lumiMarginalBufID);
115 checkBuffer(mpVNDFConditionalBuf, mData.vndfConditionalBufID);
116 checkBuffer(mpLumiConditionalBuf, mData.lumiConditionalBufID);
117 updateTextureHandle(pOwner, mpAlbedoLUT, mData.texAlbedoLUT);
118 mBRDFUploaded = true;
119
120 flags |= mUpdates;
121 mUpdates = Material::UpdateFlags::None;
122 }
123
124 return flags;
125 }
126
127 bool RGLMaterial::isEqual(const ref<Material>& pOther) const
128 {

Callers 2

computeAlbedoLUTMethod · 0.45
computeAlbedoLUTMethod · 0.45

Calls 2

replaceBufferMethod · 0.80
addBufferMethod · 0.80

Tested by

no test coverage detected