1 //
2 // Copyright 2017 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 //    names, trademarks, service marks, or product names of the Licensor
11 //    and its affiliates, except as required to comply with Section 4(c) of
12 //    the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 //     http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_USD_IMAGING_USD_IMAGING_LIGHT_ADAPTER_H
25 #define PXR_USD_IMAGING_USD_IMAGING_LIGHT_ADAPTER_H
26 
27 /// \file usdImaging/lightAdapter.h
28 
29 #include "pxr/pxr.h"
30 #include "pxr/usdImaging/usdImaging/api.h"
31 #include "pxr/usdImaging/usdImaging/primAdapter.h"
32 
33 PXR_NAMESPACE_OPEN_SCOPE
34 
35 
36 class UsdPrim;
37 
38 /// \class UsdImagingLightAdapter
39 ///
40 /// Base class for all lights.
41 ///
42 class UsdImagingLightAdapter : public UsdImagingPrimAdapter {
43 public:
44     typedef UsdImagingPrimAdapter BaseAdapter;
45 
46     USDIMAGING_API
47     static bool IsEnabledSceneLights();
48 
UsdImagingLightAdapter()49     UsdImagingLightAdapter()
50         : UsdImagingPrimAdapter()
51     {}
52 
53     USDIMAGING_API
54     ~UsdImagingLightAdapter() override;
55 
56     USDIMAGING_API
57     SdfPath Populate(UsdPrim const& prim,
58                      UsdImagingIndexProxy* index,
59                      UsdImagingInstancerContext const* instancerContext = NULL) override;
60 
61     USDIMAGING_API
62     bool IsSupported(UsdImagingIndexProxy const* index) const override;
63 
64     // ---------------------------------------------------------------------- //
65     /// \name Parallel Setup and Resolve
66     // ---------------------------------------------------------------------- //
67 
68     /// Thread Safe.
69     USDIMAGING_API
70     void TrackVariability(UsdPrim const& prim,
71                           SdfPath const& cachePath,
72                           HdDirtyBits* timeVaryingBits,
73                           UsdImagingInstancerContext const*
74                               instancerContext = NULL) const override;
75 
76 
77     /// Thread Safe.
78     USDIMAGING_API
79     void UpdateForTime(UsdPrim const& prim,
80                        SdfPath const& cachePath,
81                        UsdTimeCode time,
82                        HdDirtyBits requestedBits,
83                        UsdImagingInstancerContext const*
84                            instancerContext = NULL) const override;
85 
86     // ---------------------------------------------------------------------- //
87     /// \name Change Processing
88     // ---------------------------------------------------------------------- //
89 
90     /// Returns a bit mask of attributes to be udpated, or
91     /// HdChangeTracker::AllDirty if the entire prim must be resynchronized.
92     USDIMAGING_API
93     HdDirtyBits ProcessPropertyChange(UsdPrim const& prim,
94                                       SdfPath const& cachePath,
95                                       TfToken const& propertyName) override;
96 
97     USDIMAGING_API
98     void MarkDirty(UsdPrim const& prim,
99                    SdfPath const& cachePath,
100                    HdDirtyBits dirty,
101                    UsdImagingIndexProxy* index) override;
102 
103     USDIMAGING_API
104     void MarkTransformDirty(UsdPrim const& prim,
105                             SdfPath const& cachePath,
106                             UsdImagingIndexProxy* index) override;
107 
108     USDIMAGING_API
109     void MarkVisibilityDirty(UsdPrim const& prim,
110                              SdfPath const& cachePath,
111                              UsdImagingIndexProxy* index) override;
112 
113     USDIMAGING_API
114     void MarkLightParamsDirty(UsdPrim const& prim,
115                               SdfPath const& cachePath,
116                               UsdImagingIndexProxy* index) override;
117 
118     // ---------------------------------------------------------------------- //
119     /// \name Utilities
120     // ---------------------------------------------------------------------- //
121 
122     USDIMAGING_API
123     VtValue GetMaterialResource(UsdPrim const &prim,
124                                 SdfPath const& cachePath,
125                                 UsdTimeCode time) const override;
126 
127 protected:
128     void _RemovePrim(SdfPath const& cachePath,
129                      UsdImagingIndexProxy* index) override;
130 
131 };
132 
133 
134 PXR_NAMESPACE_CLOSE_SCOPE
135 
136 #endif // PXR_USD_IMAGING_USD_IMAGING_LIGHT_ADAPTER_H
137