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

Method registerField

Source/Falcor/RenderGraph/ResourceCache.cpp:88–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88void ResourceCache::registerField(
89 const std::string& name,
90 const RenderPassReflection::Field& field,
91 uint32_t timePoint,
92 const std::string& alias
93)
94{
95 FALCOR_ASSERT(mNameToIndex.find(name) == mNameToIndex.end());
96
97 bool addAlias = (alias.empty() == false);
98 if (addAlias && mNameToIndex.count(alias) == 0)
99 {
100 FALCOR_THROW("Field named '{}' not found. Cannot register '{}' as an alias.", alias, name);
101 }
102
103 // Add a new field
104 if (addAlias == false)
105 {
106 FALCOR_ASSERT(mNameToIndex.count(name) == 0);
107 mNameToIndex[name] = (uint32_t)mResourceData.size();
108 bool resolveBindFlags = (field.getBindFlags() == ResourceBindFlags::None);
109 mResourceData.push_back({field, {timePoint, timePoint}, nullptr, resolveBindFlags, name});
110 }
111 else // Add alias
112 {
113 uint32_t index = mNameToIndex[alias];
114 mNameToIndex[name] = index;
115 mResourceData[index].field.merge(field);
116 mergeTimePoint(mResourceData[index].lifetime, timePoint);
117 mResourceData[index].pResource = nullptr;
118 mResourceData[index].resolveBindFlags = mResourceData[index].resolveBindFlags || (field.getBindFlags() == ResourceBindFlags::None);
119 }
120}
121
122inline ref<Resource> createResourceForPass(
123 ref<Device> pDevice,

Callers 1

allocateResourcesMethod · 0.80

Calls 7

mergeTimePointFunction · 0.85
countMethod · 0.80
mergeMethod · 0.80
endMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected