24 int outputsocket_index,
61 int framenumber =
context.get_framenumber();
66 bool is_multilayer_ok =
false;
71 is_multilayer_ok =
true;
90 const int view_image = imageuser->view;
91 const bool is_allview = (view_image == 0);
103 view = view_image - 1;
108 switch (rpass->channels) {
110 operation = do_multilayer_check(converter,
123 operation = do_multilayer_check(converter,
134 operation = do_multilayer_check(converter,
148 if (index == 0 && operation) {
153 bNodeSocket *bnode_alpha_socket = alpha_socket->get_bnode_socket();
154 if (!
STREQ(bnode_alpha_socket->
name,
"Alpha")) {
174 if (operation ==
nullptr) {
183 if (is_multilayer_ok ==
false) {
191 if (number_of_outputs > 0) {
200 if (output_straight_alpha) {
215 if (number_of_outputs > 1) {
227 if (number_of_outputs > 2) {
239 if (number_of_outputs > 3) {
241 for (
int i = 3; i < number_of_outputs; i++) {
244 switch (
output->get_data_type()) {
248 operation = valueoperation;
253 vectoroperation->
setX(0.0f);
254 vectoroperation->
setY(0.0f);
255 vectoroperation->
setW(0.0f);
256 operation = vectoroperation;
265 operation = coloroperation;
void BKE_image_release_ibuf(struct Image *ima, struct ImBuf *ibuf, void *lock)
struct ImBuf * BKE_image_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, void **r_lock)
void BKE_image_user_frame_calc(struct Image *ima, struct ImageUser *iuser, int cfra)
int BLI_listbase_count_at_most(const struct ListBase *listbase, int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_findstringindex(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)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define 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(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 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
bNode * get_bnode() const
get the reference to the SDNA bNode struct
const Vector< 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)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
DataType
possible data types for sockets
@ Vector
Vector data type.
ccl_global KernelShaderEvalInput ccl_global float * output