HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lightAdapter.h
Go to the documentation of this file.
1 //
2 // Copyright 2017 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_LIGHT_ADAPTER_H
8 #define PXR_USD_IMAGING_USD_IMAGING_LIGHT_ADAPTER_H
9 
10 /// \file usdImaging/lightAdapter.h
11 
12 #include "pxr/pxr.h"
13 #include "pxr/usd/sdf/path.h"
16 
18 
19 
20 class UsdPrim;
21 
22 /// \class UsdImagingLightAdapter
23 ///
24 /// Base class for all lights.
25 ///
27 public:
29 
31  static bool IsEnabledSceneLights();
32 
33  // ---------------------------------------------------------------------- //
34  /// \name Scene Index Support
35  // ---------------------------------------------------------------------- //
36 
38  HdContainerDataSourceHandle GetImagingSubprimData(
39  UsdPrim const& prim,
40  TfToken const& subprim,
41  const UsdImagingDataSourceStageGlobals &stageGlobals) override;
42 
45  UsdPrim const& prim,
46  TfToken const& subprim,
47  TfTokenVector const& properties,
48  UsdImagingPropertyInvalidationType invalidationType) override;
49 
50  // ---------------------------------------------------------------------- //
51  /// \name Initialization
52  // ---------------------------------------------------------------------- //
53 
55  SdfPath Populate(UsdPrim const& prim,
57  UsdImagingInstancerContext const* instancerContext = NULL) override;
58 
60  bool IsSupported(UsdImagingIndexProxy const* index) const override;
61 
62  // ---------------------------------------------------------------------- //
63  /// \name Parallel Setup and Resolve
64  // ---------------------------------------------------------------------- //
65 
66  /// Thread Safe.
68  void TrackVariability(UsdPrim const& prim,
69  SdfPath const& cachePath,
70  HdDirtyBits* timeVaryingBits,
72  instancerContext = NULL) const override;
73 
74 
75  /// Thread Safe.
77  void UpdateForTime(UsdPrim const& prim,
78  SdfPath const& cachePath,
80  HdDirtyBits requestedBits,
82  instancerContext = NULL) const override;
83 
84  // ---------------------------------------------------------------------- //
85  /// \name Change Processing
86  // ---------------------------------------------------------------------- //
87 
88  /// Returns a bit mask of attributes to be udpated, or
89  /// HdChangeTracker::AllDirty if the entire prim must be resynchronized.
92  SdfPath const& cachePath,
93  TfToken const& propertyName) override;
94 
96  void MarkDirty(UsdPrim const& prim,
97  SdfPath const& cachePath,
98  HdDirtyBits dirty,
99  UsdImagingIndexProxy* index) override;
100 
102  void MarkTransformDirty(UsdPrim const& prim,
103  SdfPath const& cachePath,
104  UsdImagingIndexProxy* index) override;
105 
107  void MarkVisibilityDirty(UsdPrim const& prim,
108  SdfPath const& cachePath,
109  UsdImagingIndexProxy* index) override;
110 
112  void MarkLightParamsDirty(UsdPrim const& prim,
113  SdfPath const& cachePath,
114  UsdImagingIndexProxy* index) override;
115 
117  void MarkCollectionsDirty(UsdPrim const& prim,
118  SdfPath const& cachePath,
119  UsdImagingIndexProxy* index) override;
120 
121  // ---------------------------------------------------------------------- //
122  /// \name Utilities
123  // ---------------------------------------------------------------------- //
124 
126  VtValue GetMaterialResource(UsdPrim const &prim,
127  SdfPath const& cachePath,
128  UsdTimeCode time) const override;
129 
130  // Helper function: add a given type of sprim, potentially with instancer
131  // name mangling
133  SdfPath
134  _AddSprim(
135  const TfToken& primType,
136  const UsdPrim& usdPrim,
138  const UsdImagingInstancerContext* instancerContext = nullptr);
139 
141  void
142  _RemoveSprim(
143  const TfToken& primType,
144  const SdfPath& cachePath,
146 
147 protected:
149  void _RemovePrim(SdfPath const& cachePath,
150  UsdImagingIndexProxy* index) override;
151 
152  // To be called from the Light Populate method
153  void _UnregisterLightCollections(SdfPath const& cachePath);
154 
155  // To be called from the Light _RemovePrim method
156  void _RegisterLightCollections(UsdPrim const& prim);
157 
158 private:
159  /// Updates the collection cache content
160  /// Checks for collection hash change and returns true if they are different
161  bool _UpdateCollectionsChanged(UsdPrim const& prim) const;
162 };
163 
165 
166 #endif // PXR_USD_IMAGING_USD_IMAGING_LIGHT_ADAPTER_H
USDIMAGING_API void _RemovePrim(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
#define USDIMAGING_API
Definition: api.h:23
GT_API const UT_StringHolder time
uint32_t HdDirtyBits
Definition: types.h:143
USDIMAGING_API SdfPath _AddSprim(const TfToken &primType, const UsdPrim &usdPrim, UsdImagingIndexProxy *index, const UsdImagingInstancerContext *instancerContext=nullptr)
USDIMAGING_API SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=NULL) override
USDIMAGING_API HdContainerDataSourceHandle GetImagingSubprimData(UsdPrim const &prim, TfToken const &subprim, const UsdImagingDataSourceStageGlobals &stageGlobals) override
static USDIMAGING_API bool IsEnabledSceneLights()
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
void _UnregisterLightCollections(SdfPath const &cachePath)
USDIMAGING_API void MarkTransformDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API void MarkCollectionsDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
Definition: prim.h:116
USDIMAGING_API void MarkLightParamsDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
void _RegisterLightCollections(UsdPrim const &prim)
Definition: path.h:273
USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType) override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
GLuint index
Definition: glcorearb.h:786
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
USDIMAGING_API void MarkVisibilityDirty(UsdPrim const &prim, SdfPath const &cachePath, UsdImagingIndexProxy *index) override
USDIMAGING_API bool IsSupported(UsdImagingIndexProxy const *index) const override
Returns true if the adapter can be populated into the target index.
USDIMAGING_API void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
Thread Safe.
USDIMAGING_API VtValue GetMaterialResource(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Definition: value.h:146
UsdImagingPropertyInvalidationType
Definition: types.h:17
USDIMAGING_API void _RemoveSprim(const TfToken &primType, const SdfPath &cachePath, UsdImagingIndexProxy *index)