HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
materialAdapter.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_USD_IMAGING_USD_IMAGING_MATERIAL_ADAPTER_H
8 #define PXR_USD_IMAGING_USD_IMAGING_MATERIAL_ADAPTER_H
9 
10 /// \file usdImaging/materialAdapter.h
11 
12 #include "pxr/pxr.h"
15 
17 
19 
20 
21 /// \class UsdImagingMaterialAdapter
22 /// \brief Provides information that can be used to generate a material.
24 {
25 public:
27 
30  {}
31 
33  ~UsdImagingMaterialAdapter() override;
34 
35 
36 
37  // ---------------------------------------------------------------------- //
38  /// \name Scene Index Support
39  // ---------------------------------------------------------------------- //
40 
42  TfTokenVector GetImagingSubprims(UsdPrim const& prim) override;
43 
46  UsdPrim const& prim,
47  TfToken const& subprim) override;
48 
50  HdContainerDataSourceHandle GetImagingSubprimData(
51  UsdPrim const& prim,
52  TfToken const& subprim,
53  const UsdImagingDataSourceStageGlobals &stageGlobals) override;
54 
57  UsdPrim const& prim,
58  TfToken const& subprim,
59  TfTokenVector const& properties,
60  UsdImagingPropertyInvalidationType invalidationType) override;
61 
62  /// Returns RepresentsSelfAndDescendents to suppress population of child
63  /// Shader prims and receive notice when their properties change/
66 
69  UsdPrim const& prim,
70  UsdPrim const& descendentPrim,
71  TfToken const& subprim,
72  TfTokenVector const& properties,
73  UsdImagingPropertyInvalidationType invalidationType) override;
74 
75  // ---------------------------------------------------------------------- //
76  /// \name Initialization
77  // ---------------------------------------------------------------------- //
78 
80  SdfPath Populate(UsdPrim const& prim,
82  UsdImagingInstancerContext const* instancerContext = NULL) override;
83 
85  bool IsSupported(UsdImagingIndexProxy const* index) const override;
86 
87  // ---------------------------------------------------------------------- //
88  /// \name Parallel Setup and Resolve
89  // ---------------------------------------------------------------------- //
90 
91  /// Thread Safe.
93  void TrackVariability(UsdPrim const& prim,
94  SdfPath const& cachePath,
95  HdDirtyBits* timeVaryingBits,
97  instancerContext = NULL) const override;
98 
99 
100  /// Thread Safe.
102  void UpdateForTime(UsdPrim const& prim,
103  SdfPath const& cachePath,
105  HdDirtyBits requestedBits,
107  instancerContext = NULL) const override;
108 
109  // ---------------------------------------------------------------------- //
110  /// \name Change Processing
111  // ---------------------------------------------------------------------- //
112 
113  /// Returns a bit mask of attributes to be updated, or
114  /// HdChangeTracker::AllDirty if the entire prim must be resynchronized.
117  SdfPath const& cachePath,
118  TfToken const& propertyName) override;
119 
121  void MarkDirty(UsdPrim const& prim,
122  SdfPath const& cachePath,
123  HdDirtyBits dirty,
124  UsdImagingIndexProxy* index) override;
125 
127  void MarkMaterialDirty(UsdPrim const& prim,
128  SdfPath const& cachePath,
129  UsdImagingIndexProxy* index) override;
130 
132  void ProcessPrimResync(SdfPath const& cachePath,
133  UsdImagingIndexProxy* index) override;
134 
135  // ---------------------------------------------------------------------- //
136  /// \name Utilities
137  // ---------------------------------------------------------------------- //
138 
140  VtValue GetMaterialResource(UsdPrim const &prim,
141  SdfPath const& cachePath,
142  UsdTimeCode time) const override;
143 
144 protected:
146  void _RemovePrim(SdfPath const& cachePath,
147  UsdImagingIndexProxy* index) final;
148 };
149 
150 /// \class UsdImagingShaderAdapter
151 /// \brief Delegates invalidation responsibility of a Shader prim to an
152 /// ancestor Material prim
155 {
156 public:
158 
161 };
162 
163 /// \class UsdImagingNodeGraphAdapter
164 /// \brief Delegates invalidation responsibility of a Noge Graph prim to an
165 /// ancestor Material prim
168 {
169 public:
171 
174 };
175 
177 
178 #endif // PXR_USD_IMAGING_USD_IMAGING_MATERIAL_ADAPTER_H
USDIMAGING_API void ProcessPrimResync(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=NULL) override
USDIMAGING_API bool IsSupported(UsdImagingIndexProxy const *index) const override
Returns true if the adapter can be populated into the target index.
USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprimFromDescendent(UsdPrim const &prim, UsdPrim const &descendentPrim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType) override
#define USDIMAGING_API
Definition: api.h:23
GT_API const UT_StringHolder time
uint32_t HdDirtyBits
Definition: types.h:143
USDIMAGING_API TfTokenVector GetImagingSubprims(UsdPrim const &prim) override
USDIMAGING_API HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
USDIMAGING_API TfToken GetImagingSubprimType(UsdPrim const &prim, TfToken const &subprim) override
USDIMAGING_API void MarkDirty(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits dirty, UsdImagingIndexProxy *index) override
USDIMAGING_API void TrackVariability(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
Thread Safe.
Definition: token.h:70
USDIMAGING_API VtValue GetMaterialResource(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
The root transform provided by the delegate.
USDIMAGING_API void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
Thread Safe.
Definition: prim.h:116
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
Definition: path.h:273
USDIMAGING_API HdContainerDataSourceHandle GetImagingSubprimData(UsdPrim const &prim, TfToken const &subprim, const UsdImagingDataSourceStageGlobals &stageGlobals) override
USDIMAGING_API ~UsdImagingMaterialAdapter() override
Delegates invalidation responsibility of a Noge Graph prim to an ancestor Material prim...
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
Delegates invalidation responsibility of a Shader prim to an ancestor Material prim.
USDIMAGING_API void MarkMaterialDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API PopulationMode GetPopulationMode() override
GLuint index
Definition: glcorearb.h:786
USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType) override
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
Provides information that can be used to generate a material.
Definition: value.h:146
UsdImagingPropertyInvalidationType
Definition: types.h:17
USDIMAGING_API void _RemovePrim(SdfPath const &cachePath, UsdImagingIndexProxy *index) final
Returns whether custom shading of prims is enabled.