diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-03-24 16:13:13 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-03-24 16:13:13 +0400 |
commit | 385c72f5f26ae9c86bf40c127c44216ceea0e6c1 (patch) | |
tree | 6c0432578abee5437adc94e96b5a91c593b866b4 /source/blender/nodes | |
parent | 5841d1c8145ba50addeb17fa0231705d949d8b3d (diff) | |
parent | b5ce1b1a23a3befbcc4cd3c67a5ec6a76d77aa5a (diff) |
Merged changes in the trunk up to revision 55546.
Conflicts resolved:
source/blenderplayer/bad_level_call_stubs/SConscript
Partly reverted changes to intern/cycles/blender/addon/ui.py in revision 52899
to make it easier to merge trunk changes.
Diffstat (limited to 'source/blender/nodes')
9 files changed, 49 insertions, 20 deletions
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index 200e5341868..841dde3302b 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -162,8 +162,9 @@ static void localize(bNodeTree *localtree, bNodeTree *ntree) } } -static void local_sync(bNodeTree *UNUSED(localtree), bNodeTree *UNUSED(ntree)) +static void local_sync(bNodeTree *localtree, bNodeTree *ntree) { + BKE_node_preview_sync_tree(ntree, localtree); } static void local_merge(bNodeTree *localtree, bNodeTree *ntree) @@ -172,6 +173,8 @@ static void local_merge(bNodeTree *localtree, bNodeTree *ntree) bNodeSocket *lsock; /* move over the compbufs and previews */ + BKE_node_preview_merge_tree(ntree, localtree, true); + for (lnode= localtree->nodes.first; lnode; lnode= lnode->next) { if (ntreeNodeExists(ntree, lnode->new_node)) { if (ELEM(lnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { diff --git a/source/blender/nodes/composite/node_composite_util.c b/source/blender/nodes/composite/node_composite_util.c index 6209ca6aa4f..02a5f410d83 100644 --- a/source/blender/nodes/composite/node_composite_util.c +++ b/source/blender/nodes/composite/node_composite_util.c @@ -41,7 +41,7 @@ void cmp_node_update_default(bNodeTree *UNUSED(ntree), bNode *node) { bNodeSocket *sock; for (sock= node->outputs.first; sock; sock= sock->next) { - if(sock->cache) { + if (sock->cache) { //free_compbuf(sock->cache); //sock->cache= NULL; } diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index aa218252472..c09903ad6c5 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -31,6 +31,9 @@ #include "node_composite_util.h" +#include "BKE_global.h" +#include "BKE_main.h" + /* **************** IMAGE (and RenderResult, multilayer image) ******************** */ static bNodeSocketTemplate cmp_node_rlayers_out[] = { @@ -333,11 +336,20 @@ void register_node_type_cmp_image(void) static int node_composit_poll_rlayers(bNodeType *UNUSED(ntype), bNodeTree *ntree) { - PointerRNA ptr; - - /* render layers node can only be used in local scene->nodetree, since it directly links to the scene */ - RNA_id_pointer_create((ID *)ntree, &ptr); - return (strcmp(ntree->idname, "CompositorNodeTree")==0 && RNA_boolean_get(&ptr, "is_local_tree")); + if (strcmp(ntree->idname, "CompositorNodeTree")==0) { + Scene *scene; + + /* XXX ugly: check if ntree is a local scene node tree. + * Render layers node can only be used in local scene->nodetree, + * since it directly links to the scene. + */ + for (scene = G.main->scene.first; scene; scene = scene->id.next) + if (scene->nodetree == ntree) + break; + + return (scene != NULL); + } + return false; } void register_node_type_cmp_rlayers(void) diff --git a/source/blender/nodes/composite/nodes/node_composite_movieclip.c b/source/blender/nodes/composite/nodes/node_composite_movieclip.c index 34d7eeb570d..2369bf221e6 100644 --- a/source/blender/nodes/composite/nodes/node_composite_movieclip.c +++ b/source/blender/nodes/composite/nodes/node_composite_movieclip.c @@ -35,6 +35,7 @@ static bNodeSocketTemplate cmp_node_movieclip_out[] = { { SOCK_RGBA, 0, N_("Image")}, + { SOCK_FLOAT, 0, N_("Alpha")}, { SOCK_FLOAT, 1, N_("Offset X")}, { SOCK_FLOAT, 1, N_("Offset Y")}, { SOCK_FLOAT, 1, N_("Scale")}, diff --git a/source/blender/nodes/intern/node_exec.c b/source/blender/nodes/intern/node_exec.c index f6bf1db5254..62a937b106c 100644 --- a/source/blender/nodes/intern/node_exec.c +++ b/source/blender/nodes/intern/node_exec.c @@ -47,7 +47,7 @@ /* supported socket types in old nodes */ int node_exec_socket_use_stack(bNodeSocket *sock) { - return ELEM3(sock->type, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA); + return ELEM4(sock->type, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA, SOCK_SHADER); } /* for a given socket, find the actual stack entry */ @@ -156,8 +156,6 @@ bNodeTreeExec *ntree_exec_begin(bNodeExecContext *context, bNodeTree *ntree, bNo bNode **nodelist; int totnodes, n; - BLI_assert(ntreeIsValid(ntree)); - /* ensure all sock->link pointers and node levels are correct */ ntreeUpdateTree(ntree); diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index 68846255983..50ef122fe60 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -80,15 +80,14 @@ static void shader_get_from_context(const bContext *C, bNodeTreeType *UNUSED(tre if (snode->shaderfrom == SNODE_SHADER_OBJECT) { if (ob) { + *r_from = &ob->id; if (ob->type == OB_LAMP) { - *r_from = &ob->id; *r_id = ob->data; *r_ntree = ((Lamp *)ob->data)->nodetree; } else { Material *ma = give_current_material(ob, ob->actcol); if (ma) { - *r_from = &ob->id; *r_id = &ma->id; *r_ntree = ma->nodetree; } @@ -138,8 +137,14 @@ static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree)) } } -static void local_sync(bNodeTree *UNUSED(localtree), bNodeTree *UNUSED(ntree)) +static void local_sync(bNodeTree *localtree, bNodeTree *ntree) { + BKE_node_preview_sync_tree(ntree, localtree); +} + +static void local_merge(bNodeTree *localtree, bNodeTree *ntree) +{ + BKE_node_preview_merge_tree(ntree, localtree, true); } static void update(bNodeTree *ntree) @@ -169,6 +174,7 @@ void register_node_tree_type_sh(void) tt->foreach_nodeclass = foreach_nodeclass; tt->localize = localize; tt->local_sync = local_sync; + tt->local_merge = local_merge; tt->update = update; tt->poll = shader_tree_poll; tt->get_from_context = shader_get_from_context; diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c index 077fd71d191..f1415dcac1b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c +++ b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c @@ -30,7 +30,7 @@ /* **************** OUTPUT ******************** */ static bNodeSocketTemplate sh_node_mix_shader_in[] = { - { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_SHADER, 1, N_("Shader")}, { SOCK_SHADER, 1, N_("Shader")}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_value.c b/source/blender/nodes/shader/nodes/node_shader_value.c index f4aef926f64..642b5061a76 100644 --- a/source/blender/nodes/shader/nodes/node_shader_value.c +++ b/source/blender/nodes/shader/nodes/node_shader_value.c @@ -34,7 +34,7 @@ /* **************** VALUE ******************** */ static bNodeSocketTemplate sh_node_value_out[] = { - { SOCK_FLOAT, 0, N_("Value"), 0.5f, 0, 0, 0, -FLT_MAX, FLT_MAX, PROP_NONE}, + { SOCK_FLOAT, 0, N_("Value"), 0.5f, 0, 0, 0, -FLT_MAX, FLT_MAX, PROP_NONE}, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index e1a29a67446..bab8ef0c631 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -83,11 +83,13 @@ static void texture_get_from_context(const bContext *C, bNodeTreeType *UNUSED(tr } } else if (snode->texfrom == SNODE_TEX_WORLD) { - tx = give_current_world_texture(scene->world); - if (tx) { + if (scene->world) { *r_from = (ID *)scene->world; - *r_id = &tx->id; - *r_ntree = tx->nodetree; + tx = give_current_world_texture(scene->world); + if (tx) { + *r_id = &tx->id; + *r_ntree = tx->nodetree; + } } } else { @@ -138,8 +140,14 @@ static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree)) } } -static void local_sync(bNodeTree *UNUSED(localtree), bNodeTree *UNUSED(ntree)) +static void local_sync(bNodeTree *localtree, bNodeTree *ntree) +{ + BKE_node_preview_sync_tree(ntree, localtree); +} + +static void local_merge(bNodeTree *localtree, bNodeTree *ntree) { + BKE_node_preview_merge_tree(ntree, localtree, true); } static void update(bNodeTree *ntree) @@ -168,6 +176,7 @@ void register_node_tree_type_tex(void) tt->update = update; tt->localize = localize; tt->local_sync = local_sync; + tt->local_merge = local_merge; tt->get_from_context = texture_get_from_context; tt->ext.srna = &RNA_TextureNodeTree; |