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_FILTER_ADAPTER_H
25 #define PXR_USD_IMAGING_USD_IMAGING_LIGHT_FILTER_ADAPTER_H
26 
27 /// \file usdImaging/lightFilterAdapter.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 UsdImagingLightFilterAdapter
39 ///
40 /// Base class for all light filters.
41 ///
42 class UsdImagingLightFilterAdapter : public UsdImagingPrimAdapter {
43 public:
44     typedef UsdImagingPrimAdapter BaseAdapter;
45 
46 
UsdImagingLightFilterAdapter()47     UsdImagingLightFilterAdapter()
48         : UsdImagingPrimAdapter()
49     {}
50 
51     USDIMAGING_API
52     ~UsdImagingLightFilterAdapter() override;
53 
54     USDIMAGING_API
55     SdfPath Populate(UsdPrim const& prim,
56                      UsdImagingIndexProxy* index,
57                      UsdImagingInstancerContext const* instancerContext = NULL) override;
58 
59     USDIMAGING_API
60     bool IsSupported(UsdImagingIndexProxy const* index) const override;
61 
62     // ---------------------------------------------------------------------- //
63     /// \name Parallel Setup and Resolve
64     // ---------------------------------------------------------------------- //
65 
66     /// Thread Safe.
67     USDIMAGING_API
68     void TrackVariability(UsdPrim const& prim,
69                                   SdfPath const& cachePath,
70                                   HdDirtyBits* timeVaryingBits,
71                                   UsdImagingInstancerContext const*
72                                       instancerContext = NULL) const override;
73 
74 
75     /// Thread Safe.
76     USDIMAGING_API
77     void UpdateForTime(UsdPrim const& prim,
78                                SdfPath const& cachePath,
79                                UsdTimeCode time,
80                                HdDirtyBits requestedBits,
81                                UsdImagingInstancerContext const*
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.
90     USDIMAGING_API
91     HdDirtyBits ProcessPropertyChange(UsdPrim const& prim,
92                                       SdfPath const& cachePath,
93                                       TfToken const& propertyName) override;
94 
95     USDIMAGING_API
96     void MarkDirty(UsdPrim const& prim,
97                            SdfPath const& cachePath,
98                            HdDirtyBits dirty,
99                            UsdImagingIndexProxy* index) override;
100 
101     USDIMAGING_API
102     void MarkTransformDirty(UsdPrim const& prim,
103                             SdfPath const& cachePath,
104                             UsdImagingIndexProxy* index) override;
105 
106     USDIMAGING_API
107     void MarkVisibilityDirty(UsdPrim const& prim,
108                              SdfPath const& cachePath,
109                              UsdImagingIndexProxy* index) override;
110 
111     // ---------------------------------------------------------------------- //
112     /// \name Utilities
113     // ---------------------------------------------------------------------- //
114 
115     USDIMAGING_API
116     VtValue GetMaterialResource(UsdPrim const &prim,
117                                 SdfPath const& cachePath,
118                                 UsdTimeCode time) const override;
119 
120 protected:
121     USDIMAGING_API
122     void _RemovePrim(SdfPath const& cachePath,
123                      UsdImagingIndexProxy* index) override;
124 
125 };
126 
127 
128 PXR_NAMESPACE_CLOSE_SCOPE
129 
130 #endif // PXR_USD_IMAGING_USD_IMAGING_LIGHT_FILTER_ADAPTER_H
131