7 #ifndef PXR_IMAGING_HDSI_MATERIAL_OVERRIDE_RESOLVING_SCENE_INDEX_H 8 #define PXR_IMAGING_HDSI_MATERIAL_OVERRIDE_RESOLVING_SCENE_INDEX_H 11 #include "pxr/imaging/hd/filteringSceneIndex.h" 14 #include "pxr/imaging/hdsi/api.h" 17 #include <unordered_map> 18 #include <unordered_set> 20 PXR_NAMESPACE_OPEN_SCOPE
22 using PathSet = std::unordered_set<SdfPath, SdfPath::Hash>;
176 class HdsiMaterialOverrideResolvingSceneIndex final :
184 using PrimDataMap = std::unordered_map<SdfPath, PrimData, SdfPath::Hash>;
185 using MaterialPathsMap = std::unordered_map<SdfPath, PathSet, SdfPath::Hash>;
186 using MaterialDataMap = std::unordered_map<
SdfPath, MaterialData,
188 using HashToMaterialPathMap = std::unordered_map<uint64_t, SdfPath>;
189 using MaterialHashMap = std::unordered_map<
SdfPath, HashToMaterialPathMap,
193 static HdsiMaterialOverrideResolvingSceneIndexRefPtr New(
194 const HdSceneIndexBaseRefPtr &inputScene)
196 return TfCreateRefPtr(
197 new HdsiMaterialOverrideResolvingSceneIndex(inputScene));
210 HdsiMaterialOverrideResolvingSceneIndex(
211 const HdSceneIndexBaseRefPtr &inputScene);
230 const SdfPath& primPath)
const;
264 void _DirtyBaseMaterial(
266 const PathSet& generatedMaterials,
267 PathSet* dirtiedPaths)
const;
283 const HdSceneIndexBaseRefPtr inputScene,
284 const PrimData& primData,
285 PathSet* processedPrimsSet,
287 PathSet* dirtiedPaths,
288 PathSet* removedPaths);
297 void _DirtyMaterialOverrideLocator(
299 const HdSceneIndexBaseRefPtr inputScene,
301 PathSet* dirtiedPaths);
305 PathSet _GetGeneratedMaterials(
const SdfPath& primPath)
const;
309 bool _IsGeneratedMaterial(
const SdfPath& primPath)
const;
313 void _CreateGeneratedMaterialDataSource(
315 const SdfPath& primPath)
const;
322 void _InvalidateMaps(
const SdfPath& primPath);
344 uint64_t materialOverrideHash;
350 MaterialPathsMap _scopeToNewMaterialPaths;
353 MaterialPathsMap _oldToNewMaterialPaths;
359 PrimDataMap _primData;
363 MaterialDataMap _materialData;
375 MaterialHashMap _materialHashMap;
378 PXR_NAMESPACE_CLOSE_SCOPE
380 #endif // PXR_IMAGING_HDSI_MATERIAL_OVERRIDE_RESOLVING_SCENE_INDEX_H
virtual HdSceneIndexPrim GetPrim(const SdfPath &primPath) const =0
Returns a pair of (prim type, datasource).
Standard pointer typedefs.
#define TF_DECLARE_WEAK_AND_REF_PTRS(type)
Define standard weak, ref, and vector pointer types.
Small struct representing a 'prim' in the Hydra scene index.
Token for efficient comparison, assignment, and hashing of known strings.
virtual SdfPathVector GetChildPrimPaths(const SdfPath &primPath) const =0
Returns the paths of all scene index prims located immediately below primPath.
Abstract interface to scene data.
A path value used to locate objects in layers or scenegraphs.
The MaterialOverride schema allows overrides to be made to various parts of materials,...
A notice indicating a prim was invalidated.