33 {
SOCK_RGBA,
N_(
"Image"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
34 {
SOCK_FLOAT,
N_(
"Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
66 #define NUM_LEGACY_SOCKETS (ARRAY_SIZE(cmp_node_rlayers_out) - 1)
88 if (sock ==
nullptr) {
89 if (rres_index >= 0) {
107 const int after_index = (*prev_index)++;
134 load_iuser.framenr =
offset;
145 if (rpass->channels == 1) {
234 if (node_view_layer != view_layer) {
249 data->available_sockets,
268 const char *
UNUSED(chanid),
287 "render layer update data");
288 data->available_sockets = available_sockets;
289 data->prev_index = -1;
306 node->storage =
nullptr;
360 for (sock = (
bNodeSocket *)
node->outputs.first; sock; sock = sock_next, sock_index++) {
361 sock_next = sock->
next;
400 ImageUser *iuser = MEM_cnew<ImageUser>(__func__);
401 node->storage = iuser;
422 const bNode *src_node)
428 while (dest_output_sock !=
nullptr) {
431 src_output_sock = src_output_sock->
next;
432 dest_output_sock = dest_output_sock->
next;
484 sock = sock->next, sock_index++) {
486 sock->storage = sockdata;
496 const char **r_disabled_hint)
499 *r_disabled_hint =
TIP_(
"Not a compositor node tree");
515 if (
scene ==
nullptr) {
516 *r_disabled_hint =
TIP_(
517 "The node tree must be the compositing node tree of any scene in the file");
535 const bNode *src_node)
540 while (dest_output_sock !=
nullptr) {
543 src_output_sock = src_output_sock->
next;
544 dest_output_sock = dest_output_sock->
next;
580 const char *layer_name;
struct Scene * CTX_data_scene(const bContext *C)
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)
int BKE_image_sequence_guess_offset(struct Image *image)
void id_us_plus(struct ID *id)
void node_type_socket_templates(struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs)
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
void nodeSetSocketAvailability(struct bNodeTree *ntree, struct bNodeSocket *sock, bool is_available)
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
struct bNodeSocket * nodeAddStaticSocket(struct bNodeTree *ntree, struct bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
void node_type_size_preset(struct bNodeType *ntype, eNodeSizePreset size)
void node_type_storage(struct bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock)
#define CMP_NODE_R_LAYERS
void nodeRegisterType(struct bNodeType *ntype)
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
void void void void BLI_linklist_append(LinkNodePair *list_pair, void *ptr) ATTR_NONNULL(1)
int BLI_linklist_index(const LinkNode *list, void *ptr) ATTR_WARN_UNUSED_RESULT
#define LISTBASE_FOREACH(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) 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)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
@ FREESTYLE_AS_RENDER_PASS
#define RE_PASSNAME_COMBINED
#define RE_PASSNAME_DIFFUSE_INDIRECT
#define RE_PASSNAME_INDEXMA
#define RE_PASSNAME_SUBSURFACE_DIRECT
#define RE_PASSNAME_NORMAL
#define RE_PASSNAME_TRANSM_DIRECT
#define RE_PASSNAME_VECTOR
#define RE_PASSNAME_TRANSM_COLOR
#define RE_PASSNAME_SUBSURFACE_INDIRECT
#define RE_PASSNAME_GLOSSY_COLOR
#define RE_PASSNAME_SUBSURFACE_COLOR
#define RE_PASSNAME_TRANSM_INDIRECT
#define RE_PASSNAME_GLOSSY_DIRECT
#define RE_PASSNAME_SHADOW
#define RE_PASSNAME_ENVIRONMENT
#define RE_PASSNAME_POSITION
#define RE_PASSNAME_DIFFUSE_COLOR
#define RE_PASSNAME_GLOSSY_INDIRECT
#define RE_PASSNAME_DEPRECATED
#define RE_PASSNAME_FREESTYLE
#define RE_PASSNAME_DIFFUSE_DIRECT
#define RE_PASSNAME_INDEXOB
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiItemFullO(uiLayout *layout, const char *opname, const char *name, int icon, struct IDProperty *properties, wmOperatorCallContext context, int flag, struct PointerRNA *r_opptr)
void uiTemplateID(uiLayout *layout, const struct bContext *C, struct PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, bool live_icon, const char *text)
@ UI_TEMPLATE_ID_FILTER_ALL
RenderEngine * RE_engine_create(RenderEngineType *type)
RenderEngineType * RE_engines_find(const char *idname)
void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer, update_render_passes_cb_t callback, void *callback_data)
void RE_engine_free(RenderEngine *engine)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
static void cmp_node_rlayers_update(bNodeTree *ntree, bNode *node)
static void node_composit_buts_viewlayers(uiLayout *layout, bContext *C, PointerRNA *ptr)
static bool node_composit_poll_rlayers(bNodeType *UNUSED(ntype), bNodeTree *ntree, const char **r_disabled_hint)
static void node_composit_init_rlayers(const bContext *C, PointerRNA *ptr)
static void node_composit_free_image(bNode *node)
static void node_composit_free_rlayers(bNode *node)
static void cmp_node_image_update(bNodeTree *ntree, bNode *node)
static void node_composit_copy_image(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
static void node_composit_copy_rlayers(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
static void node_composit_init_image(bNodeTree *ntree, bNode *node)
static void cmp_node_image_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets)
static void cmp_node_image_add_pass_output(bNodeTree *ntree, bNode *node, const char *name, const char *passname, int rres_index, eNodeSocketDatatype type, int UNUSED(is_rlayers), LinkNodePair *available_sockets, int *prev_index)
void register_node_type_cmp_image()
const char * node_cmp_rlayers_sock_to_pass(int sock_index)
void register_node_type_cmp_rlayers()
static bNodeSocketTemplate cmp_node_rlayers_out[]
void node_cmp_rlayers_register_pass(bNodeTree *ntree, bNode *node, Scene *scene, ViewLayer *view_layer, const char *name, eNodeSocketDatatype type)
static void cmp_node_rlayer_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets)
void node_cmp_rlayers_outputs(bNodeTree *ntree, bNode *node)
static void cmp_node_rlayer_create_outputs_cb(void *userdata, Scene *scene, ViewLayer *view_layer, const char *name, int UNUSED(channels), const char *UNUSED(chanid), eNodeSocketDatatype type)
static void cmp_node_image_verify_outputs(bNodeTree *ntree, bNode *node, bool rlayer)
#define NUM_LEGACY_SOCKETS
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void cmp_node_update_default(bNodeTree *UNUSED(ntree), bNode *node)
struct bNodeSocket * node_add_socket_from_template(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocketTemplate *stemp, eNodeSocketInOut in_out)
void node_image_label(const bNodeTree *UNUSED(ntree), const bNode *node, char *label, int maxlen)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
bool RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
LinkNodePair * available_sockets
void(* update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
struct bNodeTree * nodetree
struct FreestyleConfig freestyle_config
Compact definition of a node socket.
struct bNodeSocket * next
bool(* poll)(struct bNodeType *ntype, struct bNodeTree *nodetree, const char **r_disabled_hint)
void(* initfunc_api)(const struct bContext *C, struct PointerRNA *ptr)
void(* labelfunc)(const struct bNodeTree *ntree, const struct bNode *node, char *label, int maxlen)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)