20const std::unordered_map<TfToken, PassType, TfToken::HashFunctor>
kAovToPass = {
31 : scene(static_cast<const
HdCyclesSession *>(renderParam)->session->scene),
32 sceneLock(scene->
mutex)
39 : session(session_), keep_nodes(
true), _ownCyclesSession(
false)
50 ShaderGraph *graph =
new ShaderGraph();
52 BackgroundNode *bgNode = graph->
create_node<BackgroundNode>();
58 scene->default_background->set_graph(graph);
64 ShaderGraph *graph =
new ShaderGraph();
66 ObjectInfoNode *objectNode = graph->
create_node<ObjectInfoNode>();
67 graph->
add(objectNode);
69 DiffuseBsdfNode *diffuseNode = graph->
create_node<DiffuseBsdfNode>();
70 graph->
add(diffuseNode);
77 const ustring instanceId(HdAovTokens->instanceId.GetString());
79 OutputAOVNode *aovNode = graph->
create_node<OutputAOVNode>();
80 aovNode->set_name(instanceId);
83 AttributeNode *instanceIdNode = graph->
create_node<AttributeNode>();
84 instanceIdNode->set_attribute(instanceId);
85 graph->
add(instanceIdNode);
90 scene->default_surface->set_graph(graph);
97 if (_ownCyclesSession) {
108 Light *background_light =
nullptr;
111 background_light = light;
116 if (!background_light) {
123 if (node->
is_a(BackgroundNode::get_node_type())) {
130 scene->
background->set_shader(background_light->get_shader());
146 _aovBindings = aovBindings;
147 for (
const HdRenderPassAovBinding &aovBinding : aovBindings) {
148 const auto cyclesAov = kAovToPass.find(aovBinding.aovName);
149 if (cyclesAov == kAovToPass.end()) {
151 TF_WARN(
"Unknown pass %s", aovBinding.aovName.GetText());
155 const PassType type = cyclesAov->second;
159 pass->set_type(type);
160 pass->set_mode(mode);
161 pass->set_name(ustring(aovBinding.aovName.GetString()));
167 for (HdRenderPassAovBinding &aovBinding : _aovBindings) {
168 if (renderBuffer == aovBinding.renderBuffer) {
169 aovBinding.renderBuffer =
nullptr;
174 if (renderBuffer == _displayAovBinding.renderBuffer) {
175 _displayAovBinding.renderBuffer =
nullptr;
KDTree *BLI_kdtree_nd_ new(unsigned int nodes_len_capacity)
void tag_update(Scene *scene)
HdCyclesSession(CCL_NS::Session *session_, const bool keep_nodes)
~HdCyclesSession() override
CCL_NS::Session * session
void RemoveAovBinding(PXR_NS::HdRenderBuffer *renderBuffer)
void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings)
list< ShaderNode * > nodes
T * create_node(Args &&...args)
void connect(ShaderOutput *from, ShaderInput *to)
ShaderNode * add(ShaderNode *node)
ShaderInput * input(const char *name)
ShaderOutput * output(const char *name)
NODE_DECLARE ShaderGraph * graph
#define HDCYCLES_NAMESPACE_CLOSE_SCOPE
ccl_device_inline float3 one_float3()
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
const std::unordered_map< TfToken, PassType, TfToken::HashFunctor > kAovToPass
bool is_a(const NodeType *type)
SceneLock(const PXR_NS::HdRenderParam *renderParam)
Shader * default_background
void delete_nodes(const set< T * > &nodes)
LightManager * light_manager
T * create_node(Args &&...args)