From 2bf519d211b1c51353b827f994494badfdf2569f Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Mon, 24 Jan 2022 16:18:30 -0600 Subject: Cleanup: Correct location of node function declarations Currently there are many function declarations in `BKE_node.h` that don't actually have implementations in blenkernel. This commit moves the declarations to `NOD_composite.h`, `NOD_texture.h`, and `NOD_shader.h` instead. This helps to clarify the purpose of the different modules. Differential Revision: https://developer.blender.org/D13869 --- source/blender/nodes/NOD_composite.h | 69 ++++++++++++++++++++++++++++++++++++ source/blender/nodes/NOD_shader.h | 22 ++++++++++++ source/blender/nodes/NOD_texture.h | 16 +++++++++ 3 files changed, 107 insertions(+) (limited to 'source/blender/nodes') diff --git a/source/blender/nodes/NOD_composite.h b/source/blender/nodes/NOD_composite.h index c80d0bcdd1e..82faccc2c2d 100644 --- a/source/blender/nodes/NOD_composite.h +++ b/source/blender/nodes/NOD_composite.h @@ -152,6 +152,75 @@ const char *node_cmp_rlayers_sock_to_pass(int sock_index); void register_node_type_cmp_custom_group(bNodeType *ntype); +void ntreeCompositExecTree(struct Scene *scene, + struct bNodeTree *ntree, + struct RenderData *rd, + int rendering, + int do_previews, + const struct ColorManagedViewSettings *view_settings, + const struct ColorManagedDisplaySettings *display_settings, + const char *view_name); + +/** + * Called from render pipeline, to tag render input and output. + * need to do all scenes, to prevent errors when you re-render 1 scene. + */ +void ntreeCompositTagRender(struct Scene *scene); + +/** + * Update the outputs of the render layer nodes. + * Since the outputs depend on the render engine, this part is a bit complex: + * - #ntreeCompositUpdateRLayers is called and loops over all render layer nodes. + * - Each render layer node calls the update function of the + * render engine that's used for its scene. + * - The render engine calls RE_engine_register_pass for each pass. + * - #RE_engine_register_pass calls #node_cmp_rlayers_register_pass. + */ +void ntreeCompositUpdateRLayers(struct bNodeTree *ntree); + +void ntreeCompositClearTags(struct bNodeTree *ntree); + +struct bNodeSocket *ntreeCompositOutputFileAddSocket(struct bNodeTree *ntree, + struct bNode *node, + const char *name, + struct ImageFormatData *im_format); + +int ntreeCompositOutputFileRemoveActiveSocket(struct bNodeTree *ntree, struct bNode *node); +void ntreeCompositOutputFileSetPath(struct bNode *node, + struct bNodeSocket *sock, + const char *name); +void ntreeCompositOutputFileSetLayer(struct bNode *node, + struct bNodeSocket *sock, + const char *name); +/* needed in do_versions */ +void ntreeCompositOutputFileUniquePath(struct ListBase *list, + struct bNodeSocket *sock, + const char defname[], + char delim); +void ntreeCompositOutputFileUniqueLayer(struct ListBase *list, + struct bNodeSocket *sock, + const char defname[], + char delim); + +void ntreeCompositColorBalanceSyncFromLGG(bNodeTree *ntree, bNode *node); +void ntreeCompositColorBalanceSyncFromCDL(bNodeTree *ntree, bNode *node); + +void ntreeCompositCryptomatteSyncFromAdd(const Scene *scene, bNode *node); +void ntreeCompositCryptomatteSyncFromRemove(bNode *node); +bNodeSocket *ntreeCompositCryptomatteAddSocket(bNodeTree *ntree, bNode *node); +int ntreeCompositCryptomatteRemoveSocket(bNodeTree *ntree, bNode *node); +void ntreeCompositCryptomatteLayerPrefix(const Scene *scene, + const bNode *node, + char *r_prefix, + size_t prefix_len); + +/** + * Update the runtime layer names with the crypto-matte layer names of the references render layer + * or image. + */ +void ntreeCompositCryptomatteUpdateLayerNames(const Scene *scene, bNode *node); +struct CryptomatteSession *ntreeCompositCryptomatteSession(const Scene *scene, bNode *node); + #ifdef __cplusplus } #endif diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h index 76c174201e8..65720fc119b 100644 --- a/source/blender/nodes/NOD_shader.h +++ b/source/blender/nodes/NOD_shader.h @@ -143,6 +143,28 @@ void register_node_type_sh_tex_white_noise(void); void register_node_type_sh_custom_group(bNodeType *ntype); +struct bNodeTreeExec *ntreeShaderBeginExecTree(struct bNodeTree *ntree); +void ntreeShaderEndExecTree(struct bNodeTreeExec *exec); + + +/** + * Find an output node of the shader tree. + * + * \note it will only return output which is NOT in the group, which isn't how + * render engines works but it's how the GPU shader compilation works. This we + * can change in the future and make it a generic function, but for now it stays + * private here. + */ +struct bNode *ntreeShaderOutputNode(struct bNodeTree *ntree, int target); + +/** + * This one needs to work on a local tree. + */ +void ntreeGPUMaterialNodes(struct bNodeTree *localtree, + struct GPUMaterial *mat, + bool *has_surface_output, + bool *has_volume_output); + #ifdef __cplusplus } #endif diff --git a/source/blender/nodes/NOD_texture.h b/source/blender/nodes/NOD_texture.h index af59fefd925..c08bc814915 100644 --- a/source/blender/nodes/NOD_texture.h +++ b/source/blender/nodes/NOD_texture.h @@ -74,6 +74,22 @@ void register_node_type_tex_proc_noise(void); void register_node_type_tex_proc_stucci(void); void register_node_type_tex_proc_distnoise(void); +void ntreeTexCheckCyclics(struct bNodeTree *ntree); +struct bNodeTreeExec *ntreeTexBeginExecTree(struct bNodeTree *ntree); +void ntreeTexEndExecTree(struct bNodeTreeExec *exec); +int ntreeTexExecTree(struct bNodeTree *ntree, + struct TexResult *target, + const float co[3], + float dxt[3], + float dyt[3], + int osatex, + short thread, + const struct Tex *tex, + short which_output, + int cfra, + int preview, + struct MTex *mtex); + #ifdef __cplusplus } #endif -- cgit v1.2.3