17void RenderLayersNode::test_socket_link(
NodeConverter &converter,
23 bool is_preview)
const
38void RenderLayersNode::test_render_link(NodeConverter &converter,
39 const CompositorContext &context,
46 missing_render_link(converter);
50 if (view_layer ==
nullptr) {
51 missing_render_link(converter);
56 missing_render_link(converter);
64 if (rpass ==
nullptr) {
65 missing_socket_link(converter, output);
68 RenderLayersProg *operation;
71 STREQ(output->get_bnode_socket()->name,
"Alpha"))
97 operation =
new RenderLayersProg(rpass->
name, type, rpass->
channels);
98 is_preview =
STREQ(output->get_bnode_socket()->name,
"Image");
100 test_socket_link(converter, context, output, operation, scene, layer_id, is_preview);
104void RenderLayersNode::missing_socket_link(NodeConverter &converter, NodeOutput *output)
const
106 NodeOperation *operation;
107 switch (output->get_data_type()) {
109 const float color[4] = {0.0f, 0.0f, 0.0f, 0.0f};
110 SetColorOperation *color_operation =
new SetColorOperation();
111 color_operation->set_channels(color);
112 operation = color_operation;
116 const float vector[3] = {0.0f, 0.0f, 0.0f};
117 SetVectorOperation *vector_operation =
new SetVectorOperation();
118 vector_operation->set_vector(
vector);
119 operation = vector_operation;
123 SetValueOperation *value_operation =
new SetValueOperation();
124 value_operation->set_value(0.0f);
125 operation = value_operation;
134 converter.map_output_socket(output, operation->get_output_socket());
135 converter.add_operation(operation);
138void RenderLayersNode::missing_render_link(NodeConverter &converter)
const
140 for (NodeOutput *output :
outputs_) {
141 missing_socket_link(converter, output);
152 test_render_link(converter, context, re);
156 missing_render_link(converter);
#define BLI_assert_msg(a, msg)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define RE_PASSNAME_COMBINED
Overall context of the compositor.
void map_output_socket(NodeOutput *node_socket, NodeOperationOutput *operation_socket)
void add_preview(NodeOperationOutput *output)
void add_operation(NodeOperation *operation)
NodeOperationOutput * get_output_socket(unsigned int index=0)
NodeOutput are sockets that can send data/input.
const bNode * get_bnode() const
get the reference to the SDNA bNode struct
Span< NodeOutput * > get_output_sockets() const
get access to the vector of input sockets
Vector< NodeOutput * > outputs_
the list of actual output-sockets
void convert_to_operations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
RenderLayersNode(bNode *editor_node)
void set_layer_id(short layer_id)
void set_view_name(const char *view_name)
void set_render_data(const RenderData *rd)
void set_scene(Scene *scene)
@ Vector
Vector data type.
RenderResult * RE_AcquireResultRead(Render *re)
RenderLayer * RE_GetRenderLayer(RenderResult *rr, const char *name)
void RE_ReleaseResult(Render *re)
Render * RE_GetSceneRender(const Scene *scene)