Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2011-10-12 17:07:30 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2011-10-12 17:07:30 +0400
commit89dd5e933f01853abdba9249dd2823ac53562c6d (patch)
tree6ba45d6d7e32df05cb1f2f68d06f987cd6379a2e /source
parenta85f595721e44cb214262b688f8c418018f1c5c2 (diff)
Fix for #28876, alpha over with empty image node gives black result.
The image node output is the default value when no image is selected. In pre-2.60 this was always initialized to 0 alpha, the defaults written in the node socket templates were completely ignored for outputs (except for value and RGB input nodes, which use these as button values). Now the stack values are initialized with the template defaults, which are all 0 by default. This patch changes alpha to 0 for image and render layer outputs too.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/readfile.c24
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_image.c2
2 files changed, 25 insertions, 1 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 38b4a773650..331eeb9a959 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7068,6 +7068,19 @@ void convert_tface_mt(FileData *fd, Main *main)
}
}
+static void do_versions_nodetree_image_default_alpha_output(bNodeTree *ntree)
+{
+ bNode *node;
+ bNodeSocket *sock;
+ for (node=ntree->nodes.first; node; node=node->next) {
+ if (ELEM(node->type, CMP_NODE_IMAGE, CMP_NODE_R_LAYERS)) {
+ /* default Image output value should have 0 alpha */
+ sock = node->outputs.first;
+ ((bNodeSocketValueRGBA*)sock->default_value)->value[3] = 0.0f;
+ }
+ }
+}
+
static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -12145,6 +12158,17 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
/* put compatibility code here until next subversion bump */
{
+ {
+ /* set default alpha value of Image outputs in image and render layer nodes to 0 */
+ Scene *sce;
+ bNodeTree *ntree;
+
+ for (sce=main->scene.first; sce; sce=sce->id.next)
+ if (sce->nodetree)
+ do_versions_nodetree_image_default_alpha_output(sce->nodetree);
+ for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next)
+ do_versions_nodetree_image_default_alpha_output(ntree);
+ }
}
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c
index c18a35fdd98..5e32800fe45 100644
--- a/source/blender/nodes/composite/nodes/node_composite_image.c
+++ b/source/blender/nodes/composite/nodes/node_composite_image.c
@@ -38,7 +38,7 @@
/* **************** IMAGE (and RenderResult, multilayer image) ******************** */
static bNodeSocketTemplate cmp_node_rlayers_out[]= {
- { SOCK_RGBA, 0, "Image", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
+ { SOCK_RGBA, 0, "Image", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_FLOAT, 0, "Alpha", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_FLOAT, 0, "Z", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_VECTOR, 0, "Normal", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},