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