42 {
SOCK_RGBA,
N_(
"Image"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
43 {
SOCK_FLOAT,
N_(
"Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
75 #define MAX_LEGACY_SOCKET_INDEX 30
97 if (rres_index >= 0) {
115 const int after_index = (*prev_index)++;
245 if (node_view_layer != view_layer) {
260 data->available_sockets,
274 const char *
UNUSED(chanid),
284 for (
Scene *sce =
G_MAIN->scenes.first; sce; sce = sce->id.next) {
285 if (sce->nodetree && sce !=
scene) {
303 data->available_sockets = available_sockets;
304 data->prev_index = -1;
373 for (sock =
node->outputs.first; sock; sock = sock_next, sock_index++) {
374 sock_next = sock->
next;
411 node->storage = iuser;
426 for (sock =
node->outputs.first; sock; sock = sock->
next) {
435 const bNode *src_node)
441 while (dest_output_sock !=
NULL) {
444 src_output_sock = src_output_sock->
next;
445 dest_output_sock = dest_output_sock->
next;
471 const char *sock_to_passname[] = {
507 return sock_to_passname[sock_index];
519 for (
bNodeSocket *sock =
node->outputs.first; sock; sock = sock->next, sock_index++) {
521 sock->storage = sockdata;
531 const char **r_disabled_hint)
534 *r_disabled_hint =
"Not a compositor node tree";
551 *r_disabled_hint =
"The node tree must be the compositing node tree of any scene in the file";
562 for (sock =
node->outputs.first; sock; sock = sock->
next) {
571 const bNode *src_node)
576 while (dest_output_sock !=
NULL) {
579 src_output_sock = src_output_sock->
next;
580 dest_output_sock = dest_output_sock->
next;
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 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 node_type_label(struct bNodeType *ntype, void(*labelfunc)(struct bNodeTree *ntree, struct bNode *, char *label, int maxlen))
void ntreeCompositRegisterPass(struct bNodeTree *ntree, struct Scene *scene, struct ViewLayer *view_layer, const char *name, eNodeSocketDatatype type)
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
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT 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)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const 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_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 RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set CMP_NODE_IMAGE
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)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void cmp_node_image_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets)
void register_node_type_cmp_rlayers(void)
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)
static void node_composit_free_image(bNode *node)
static void node_composit_copy_rlayers(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
static void cmp_node_rlayer_create_outputs_cb(void *UNUSED(userdata), Scene *scene, ViewLayer *view_layer, const char *name, int UNUSED(channels), const char *UNUSED(chanid), eNodeSocketDatatype type)
static void cmp_node_rlayers_update(bNodeTree *ntree, bNode *node)
const char * node_cmp_rlayers_sock_to_pass(int sock_index)
static bNodeSocketTemplate cmp_node_rlayers_out[]
static void node_composit_copy_image(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
static void node_composit_free_rlayers(bNode *node)
static void node_composit_init_rlayers(const bContext *C, PointerRNA *ptr)
void node_cmp_rlayers_register_pass(bNodeTree *ntree, bNode *node, Scene *scene, ViewLayer *view_layer, const char *name, eNodeSocketDatatype type)
void register_node_type_cmp_image(void)
static void cmp_node_rlayer_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets)
struct RLayerUpdateData RLayerUpdateData
static void node_composit_init_image(bNodeTree *ntree, bNode *node)
void node_cmp_rlayers_outputs(bNodeTree *ntree, bNode *node)
static bool node_composit_poll_rlayers(bNodeType *UNUSED(ntype), bNodeTree *ntree, const char **r_disabled_hint)
static void cmp_node_image_verify_outputs(bNodeTree *ntree, bNode *node, bool rlayer)
static void cmp_node_image_update(bNodeTree *ntree, bNode *node)
#define MAX_LEGACY_SOCKET_INDEX
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
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(bNodeTree *UNUSED(ntree), bNode *node, char *label, int maxlen)
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)