Blender  V3.3
material.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2022 NVIDIA Corporation
3  * Copyright 2022 Blender Foundation */
4 
5 #pragma once
6 
7 #include "hydra/config.h"
8 
9 #include <pxr/imaging/hd/material.h>
10 
12 
13 class HdCyclesMaterial final : public PXR_NS::HdMaterial {
14  public:
15  HdCyclesMaterial(const PXR_NS::SdfPath &sprimId);
16  ~HdCyclesMaterial() override;
17 
18  PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override;
19 
20  void Sync(PXR_NS::HdSceneDelegate *sceneDelegate,
21  PXR_NS::HdRenderParam *renderParam,
22  PXR_NS::HdDirtyBits *dirtyBits) override;
23 
24 #if PXR_VERSION < 2011
25  void Reload() override
26  {
27  }
28 #endif
29 
30  void Finalize(PXR_NS::HdRenderParam *renderParam) override;
31 
33  {
34  return _shader;
35  }
36 
37  private:
38  struct NodeDesc {
39  CCL_NS::ShaderNode *node;
40  const class UsdToCyclesMapping *mapping;
41  };
42 
43  void Initialize(PXR_NS::HdRenderParam *renderParam);
44 
45  void UpdateParameters(NodeDesc &nodeDesc,
46  const std::map<PXR_NS::TfToken, PXR_NS::VtValue> &parameters,
47  const PXR_NS::SdfPath &nodePath);
48 
49  void UpdateParameters(const PXR_NS::HdMaterialNetwork &network);
50  void UpdateParameters(const PXR_NS::HdMaterialNetwork2 &network);
51 
52  void UpdateConnections(NodeDesc &nodeDesc,
53  const PXR_NS::HdMaterialNode2 &matNode,
54  const PXR_NS::SdfPath &nodePath,
55  CCL_NS::ShaderGraph *shaderGraph);
56 
57  void PopulateShaderGraph(const PXR_NS::HdMaterialNetwork2 &network);
58 
59  CCL_NS::Shader *_shader = nullptr;
60  std::unordered_map<PXR_NS::SdfPath, NodeDesc, PXR_NS::SdfPath::Hash> _nodes;
61 };
62 
#define final(a, b, c)
Definition: BLI_hash.h:21
static void Initialize(const btConvexTemplate &a, const btConvexTemplate &b, btGjkEpaSolver3::sResults &results, MinkowskiDiff< btConvexTemplate > &shape)
Definition: btGjkEpa3.h:878
PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override
Definition: material.cpp:194
void Finalize(PXR_NS::HdRenderParam *renderParam) override
Definition: material.cpp:558
HdCyclesMaterial(const PXR_NS::SdfPath &sprimId)
Definition: material.cpp:186
void Reload() override
Definition: material.h:25
~HdCyclesMaterial() override
Definition: material.cpp:190
CCL_NS::Shader * GetCyclesShader() const
Definition: material.h:32
void Sync(PXR_NS::HdSceneDelegate *sceneDelegate, PXR_NS::HdRenderParam *renderParam, PXR_NS::HdDirtyBits *dirtyBits) override
Definition: material.cpp:199
OperationNode * node
#define HDCYCLES_NAMESPACE_CLOSE_SCOPE
Definition: hydra/config.h:17
double parameters[NUM_PARAMETERS]
static const pxr::TfToken Shader("Shader", pxr::TfToken::Immortal)