1 // 2 // Copyright 2020 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_MATERIAL_PARAM_UTILS_H 25 #define PXR_USD_IMAGING_MATERIAL_PARAM_UTILS_H 26 27 #include "pxr/pxr.h" 28 29 #include "pxr/base/tf/token.h" 30 31 PXR_NAMESPACE_OPEN_SCOPE 32 33 struct HdMaterialNetworkMap; 34 class UsdAttribute; 35 class UsdPrim; 36 class UsdTimeCode; 37 class VtValue; 38 39 /// Get the value from the usd attribute at given time. If it is an 40 /// SdfAssetPath containing a UDIM pattern, e.g., //SHOW/myImage.<UDIM>.exr, 41 /// the resolved path of the SdfAssetPath will be updated to a file path 42 /// with a UDIM pattern, e.g., /filePath/myImage.<UDIM>.exr. 43 /// There might be support for different patterns, e.g., myImage._MAPID_.exr, 44 /// but this function always normalizes it to myImage.<UDIM>.exr. 45 /// 46 /// The function assumes that the correct ArResolverContext is bound. 47 /// 48 VtValue 49 UsdImaging_ResolveMaterialParamValue( 50 const UsdAttribute& attr, const UsdTimeCode& time); 51 52 /// Builds an HdMaterialNetwork for the usdTerminal prim and 53 /// populates it in the materialNetworkMap under the terminalIdentifier. 54 /// This shared implementation is usable for populating material networks for 55 /// any connectable source including lights and light filters in addition to 56 /// materials. 57 void 58 UsdImaging_BuildHdMaterialNetworkFromTerminal( 59 UsdPrim const& usdTerminal, 60 TfToken const& terminalIdentifier, 61 TfTokenVector const& shaderSourceTypes, 62 TfTokenVector const& renderContexts, 63 HdMaterialNetworkMap *materialNetworkMap, 64 UsdTimeCode time); 65 66 /// Returns whether the material network built by 67 /// UsdImaging_BuildHdMaterialNetworkFromTerminal for the given usdTerminal 68 /// prim is time varying. 69 bool 70 UsdImaging_IsHdMaterialNetworkTimeVarying( 71 UsdPrim const& usdTerminal); 72 73 PXR_NAMESPACE_CLOSE_SCOPE 74 75 #endif // PXR_USD_IMAGING_MATERIAL_PARAM_UTILS_H 76