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