Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/composite/nodes/node_composite_image.c
| Show First 20 Lines • Show All 185 Lines • ▼ Show 20 Lines | static void cmp_node_image_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets) | ||||
| } | } | ||||
| } | } | ||||
| typedef struct RLayerUpdateData { | typedef struct RLayerUpdateData { | ||||
| LinkNodePair *available_sockets; | LinkNodePair *available_sockets; | ||||
| int prev_index; | int prev_index; | ||||
| } RLayerUpdateData; | } RLayerUpdateData; | ||||
| void node_cmp_rlayers_register_pass(bNodeTree *ntree, bNode *node, Scene *scene, SceneLayer *scene_layer, const char *name, int type) | void node_cmp_rlayers_register_pass(bNodeTree *ntree, bNode *node, Scene *scene, ViewLayer *view_layer, const char *name, int type) | ||||
| { | { | ||||
| RLayerUpdateData *data = node->storage; | RLayerUpdateData *data = node->storage; | ||||
| if (scene == NULL || scene_layer == NULL || data == NULL || node->id != (ID *)scene) { | if (scene == NULL || view_layer == NULL || data == NULL || node->id != (ID *)scene) { | ||||
| return; | return; | ||||
| } | } | ||||
| SceneLayer *node_scene_layer = BLI_findlink(&scene->render_layers, node->custom1); | ViewLayer *node_view_layer = BLI_findlink(&scene->view_layers, node->custom1); | ||||
| if (node_scene_layer != scene_layer) { | if (node_view_layer != view_layer) { | ||||
| return; | return; | ||||
| } | } | ||||
| /* Special handling for the Combined pass to ensure compatibility. */ | /* Special handling for the Combined pass to ensure compatibility. */ | ||||
| if (STREQ(name, RE_PASSNAME_COMBINED)) { | if (STREQ(name, RE_PASSNAME_COMBINED)) { | ||||
| cmp_node_image_add_pass_output(ntree, node, "Image", name, -1, type, true, data->available_sockets, &data->prev_index); | cmp_node_image_add_pass_output(ntree, node, "Image", name, -1, type, true, data->available_sockets, &data->prev_index); | ||||
| cmp_node_image_add_pass_output(ntree, node, "Alpha", name, -1, SOCK_FLOAT, true, data->available_sockets, &data->prev_index); | cmp_node_image_add_pass_output(ntree, node, "Alpha", name, -1, SOCK_FLOAT, true, data->available_sockets, &data->prev_index); | ||||
| } | } | ||||
| else { | else { | ||||
| cmp_node_image_add_pass_output(ntree, node, name, name, -1, type, true, data->available_sockets, &data->prev_index); | cmp_node_image_add_pass_output(ntree, node, name, name, -1, type, true, data->available_sockets, &data->prev_index); | ||||
| } | } | ||||
| } | } | ||||
| static void cmp_node_rlayer_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets) | static void cmp_node_rlayer_create_outputs(bNodeTree *ntree, bNode *node, LinkNodePair *available_sockets) | ||||
| { | { | ||||
| Scene *scene = (Scene *)node->id; | Scene *scene = (Scene *)node->id; | ||||
| if (scene) { | if (scene) { | ||||
| RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); | RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); | ||||
| if (engine_type && engine_type->update_render_passes) { | if (engine_type && engine_type->update_render_passes) { | ||||
| SceneLayer *scene_layer = BLI_findlink(&scene->render_layers, node->custom1); | ViewLayer *view_layer = BLI_findlink(&scene->view_layers, node->custom1); | ||||
| if (scene_layer) { | if (view_layer) { | ||||
| RLayerUpdateData *data = MEM_mallocN(sizeof(RLayerUpdateData), "render layer update data"); | RLayerUpdateData *data = MEM_mallocN(sizeof(RLayerUpdateData), "render layer update data"); | ||||
| data->available_sockets = available_sockets; | data->available_sockets = available_sockets; | ||||
| data->prev_index = -1; | data->prev_index = -1; | ||||
| node->storage = data; | node->storage = data; | ||||
| RenderEngine *engine = RE_engine_create(engine_type); | RenderEngine *engine = RE_engine_create(engine_type); | ||||
| engine_type->update_render_passes(engine, scene, scene_layer); | engine_type->update_render_passes(engine, scene, view_layer); | ||||
| RE_engine_free(engine); | RE_engine_free(engine); | ||||
| MEM_freeN(data); | MEM_freeN(data); | ||||
| node->storage = NULL; | node->storage = NULL; | ||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 205 Lines • Show Last 20 Lines | |||||