23 const char *layer_name,
24 const char *pass_name,
28 int outputsocket_index,
68 int framenumber = context.get_framenumber();
73 bool is_multilayer_ok =
false;
79 is_multilayer_ok =
true;
99 operation = do_multilayer_check(converter,
112 operation = do_multilayer_check(converter,
123 operation = do_multilayer_check(converter,
137 if (operation && index == 0) {
144 bNodeSocket *bnode_alpha_socket = alpha_socket->get_bnode_socket();
145 if (!
STREQ(bnode_alpha_socket->
name,
"Alpha")) {
165 if (operation ==
nullptr) {
175 if (is_multilayer_ok ==
false) {
183 if (number_of_outputs > 0) {
192 if (output_straight_alpha) {
207 if (number_of_outputs > 1) {
221 for (
int i = 2; i < number_of_outputs; i++) {
224 switch (output->get_data_type()) {
228 operation = valueoperation;
233 vectoroperation->
setX(0.0f);
234 vectoroperation->
setY(0.0f);
235 vectoroperation->
setW(0.0f);
236 operation = vectoroperation;
245 operation = coloroperation;
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
void BKE_image_release_renderresult(Scene *scene, Image *ima, RenderResult *render_result)
RenderResult * BKE_image_acquire_renderresult(Scene *scene, Image *ima)
#define BLI_assert_unreachable()
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)
@ CMP_NODE_IMAGE_USE_STRAIGHT_OUTPUT
#define RE_PASSNAME_COMBINED
void set_framenumber(int framenumber)
void set_render_data(const RenderData *rd)
void set_image_user(const ImageUser &imageuser)
void set_image(Image *image)
void set_view_name(const char *view_name)
Overall context of the compositor.
ImageNode(bNode *editor_node)
void convert_to_operations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
void set_pass_name(std::string pass_name)
void set_layer_name(std::string layer_name)
void add_link(NodeOperationOutput *from, NodeOperationInput *to)
void map_output_socket(NodeOutput *node_socket, NodeOperationOutput *operation_socket)
void add_preview(NodeOperationOutput *output)
void add_operation(NodeOperation *operation)
NodeOperation * set_invalid_output(NodeOutput *output)
NodeOperation contains calculation logic.
NodeOperationOutput * get_output_socket(unsigned int index=0)
NodeOperationInput * get_input_socket(unsigned int index)
NodeOutput are sockets that can send data/input.
bNodeSocket * get_bnode_socket() const
NodeOutput * get_output_socket(unsigned int index=0) const
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 set_channel(int channel)
void set_channel2(float value)
void set_channel1(float value)
void set_channel4(const float value)
void set_channel3(float value)
void set_value(float value)
DataType
possible data types for sockets
@ Vector
Vector data type.
@ Float2
Float2 data type.