diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-09 14:50:16 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-09 14:50:16 +0400 |
commit | 00460458d0cb06d3358c08621b45cb7c8b4548d3 (patch) | |
tree | e23d134a4c89e49f32c5680827c42555e3a1a3be /source/blender | |
parent | a1fafec360ba20740c1c9d56f05f121423a7edfe (diff) |
blender 2.63a: merge last bunch of fixes for 'a' release
This merges commits form trunk: 46423, 46424, 46450, 46439, 46445, 46449, 46453, 46454
Changes checked up to rev46454
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/movieclip.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 8 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 26 | ||||
-rw-r--r-- | source/blender/collada/GeometryExporter.cpp | 2 | ||||
-rw-r--r-- | source/blender/collada/InstanceWriter.cpp | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_nodetree.c | 3 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 33 |
9 files changed, 63 insertions, 23 deletions
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 9a640bcb8eb..7eee478def4 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -1038,7 +1038,7 @@ void BKE_movieclip_update_scopes(MovieClip *clip, MovieClipUser *user, MovieClip scopes->track_disabled = FALSE; - if (ibuf && ibuf->rect) { + if (ibuf && (ibuf->rect || ibuf->rect_float)) { ImBuf *tmpibuf; MovieTrackingMarker undist_marker = *marker; diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 2fb3f81b147..0fac497850f 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -339,15 +339,15 @@ bNode *nodeAddNode(bNodeTree *ntree, struct bNodeTemplate *ntemp) node_add_sockets_from_type(ntree, node, ntype); - if (ntype->initfunc!=NULL) - ntype->initfunc(ntree, node, ntemp); - /* initialize the node name with the node label */ BLI_strncpy(node->name, nodeLabel(node), NODE_MAXSTR); nodeUniqueName(ntree, node); BLI_addtail(&ntree->nodes, node); + if (ntype->initfunc!=NULL) + ntype->initfunc(ntree, node, ntemp); + ntree->update |= NTREE_UPDATE_NODES; return node; diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index baabd4d8ac0..2d5d47e8dd0 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -1166,7 +1166,13 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki x1 = x-(int)(w * (-min[0] / (max[0] - min[0]))); y1 = y-(int)(h * (-min[1] / (max[1] - min[1]))); - tmpibuf = IMB_allocImBuf(w+margin*2, h+margin*2, 32, IB_rect); + if (ibuf->rect_float) + tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rectfloat); + else + tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rect); + + tmpibuf->profile = ibuf->profile; + IMB_rectcpy(tmpibuf, ibuf, 0, 0, x1 - margin, y1 - margin, w + margin * 2, h + margin * 2); if (pos != NULL) { diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 044e874b4a6..4adcf6add2a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -7706,10 +7706,15 @@ static void do_versions_nodetree_multi_file_output_format_2_62_1(Scene *sce, bNo bNodeSocket *old_image = BLI_findlink(&node->inputs, 0); bNodeSocket *old_z = BLI_findlink(&node->inputs, 1); bNodeSocket *sock; + char basepath[FILE_MAXDIR]; + char filename[FILE_MAXFILE]; node->storage= nimf; - BLI_strncpy(nimf->base_path, old_data->name, sizeof(nimf->base_path)); + /* split off filename from the old path, to be used as socket sub-path */ + BLI_split_dirfile(old_data->name, basepath, filename, sizeof(basepath), sizeof(filename)); + + BLI_strncpy(nimf->base_path, basepath, sizeof(nimf->base_path)); nimf->format = old_data->im_format; /* if z buffer is saved, change the image type to multilayer exr. @@ -7717,21 +7722,32 @@ static void do_versions_nodetree_multi_file_output_format_2_62_1(Scene *sce, bNo * i'm just assuming here that IRIZ means IRIS with z buffer ... */ if (ELEM(old_data->im_format.imtype, R_IMF_IMTYPE_IRIZ, R_IMF_IMTYPE_OPENEXR)) { + char sockpath[FILE_MAX]; + nimf->format.imtype = R_IMF_IMTYPE_MULTILAYER; - sock = ntreeCompositOutputFileAddSocket(ntree, node, old_image->name, &nimf->format); + + BLI_snprintf(sockpath, sizeof(sockpath), "%s_Image", filename); + sock = ntreeCompositOutputFileAddSocket(ntree, node, sockpath, &nimf->format); + /* XXX later do_versions copies path from socket name, need to set this explicitely */ + BLI_strncpy(sock->name, sockpath, sizeof(sock->name)); if (old_image->link) { old_image->link->tosock = sock; sock->link = old_image->link; } - sock = ntreeCompositOutputFileAddSocket(ntree, node, old_z->name, &nimf->format); + + BLI_snprintf(sockpath, sizeof(sockpath), "%s_Z", filename); + sock = ntreeCompositOutputFileAddSocket(ntree, node, sockpath, &nimf->format); + /* XXX later do_versions copies path from socket name, need to set this explicitely */ + BLI_strncpy(sock->name, sockpath, sizeof(sock->name)); if (old_z->link) { old_z->link->tosock = sock; sock->link = old_z->link; } } else { - /* saves directly to base path, which is the old image output path */ - sock = ntreeCompositOutputFileAddSocket(ntree, node, "", &nimf->format); + sock = ntreeCompositOutputFileAddSocket(ntree, node, filename, &nimf->format); + /* XXX later do_versions copies path from socket name, need to set this explicitely */ + BLI_strncpy(sock->name, filename, sizeof(sock->name)); if (old_image->link) { old_image->link->tosock = sock; sock->link = old_image->link; diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp index ca112abc0af..3c1c9cb6d6b 100644 --- a/source/blender/collada/GeometryExporter.cpp +++ b/source/blender/collada/GeometryExporter.cpp @@ -177,7 +177,7 @@ void GeometryExporter::createPolylist(short material_index, // sets material name if (ma) { std::ostringstream ostr; - ostr << translate_id(id_name(ma)) << material_index+1; + ostr << translate_id(id_name(ma)); polylist.setMaterial(ostr.str()); } diff --git a/source/blender/collada/InstanceWriter.cpp b/source/blender/collada/InstanceWriter.cpp index a605bdeefcc..f83289ff5f5 100644 --- a/source/blender/collada/InstanceWriter.cpp +++ b/source/blender/collada/InstanceWriter.cpp @@ -52,7 +52,7 @@ void InstanceWriter::add_material_bindings(COLLADASW::BindMaterial& bind_materia std::string matid(get_material_id(ma)); matid = translate_id(matid); std::ostringstream ostr; - ostr << translate_id(id_name(ma)) << a+1; + ostr << translate_id(id_name(ma)); COLLADASW::InstanceMaterial im(ostr.str(), COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid)); // create <bind_vertex_input> for each uv map diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index bb10e781f8f..2b58b627447 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -6544,8 +6544,10 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) zbufoff = 1; dt = OB_SOLID; } - else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) + + if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) { dt = OB_PAINT; + } glEnable(GL_DEPTH_TEST); } diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 58fd936819b..38b12604d5e 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -742,7 +742,8 @@ static bNodeLink *rna_NodeTree_link_new(bNodeTree *ntree, ReportList *reports, ret = nodeAddLink(ntree, fromnode, fromsock, tonode, tosock); if (ret) { - nodeUpdate(ntree, tonode); + if (tonode) + nodeUpdate(ntree, tonode); ntreeUpdateTree(ntree); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index a4a244daf43..0398204e62b 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1803,6 +1803,28 @@ static int check_valid_camera(Scene *scene, Object *camera_override) return 1; } +static int node_tree_has_composite_output(bNodeTree *ntree) +{ + bNode *node; + + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == CMP_NODE_COMPOSITE) { + return TRUE; + } + else if (node->type == NODE_GROUP) { + if (node_tree_has_composite_output((bNodeTree *)node->id)) + return TRUE; + } + } + + return FALSE; +} + +static int check_composite_output(Scene *scene) +{ + return node_tree_has_composite_output(scene->nodetree); +} + int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports) { SceneRenderLayer *srl; @@ -1837,19 +1859,12 @@ int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *r if (scene->r.scemode & R_DOCOMP) { if (scene->use_nodes) { - bNodeTree *ntree= scene->nodetree; - bNode *node; - - if (ntree==NULL) { + if (!scene->nodetree) { BKE_report(reports, RPT_ERROR, "No Nodetree in Scene"); return 0; } - for (node= ntree->nodes.first; node; node= node->next) - if (node->type==CMP_NODE_COMPOSITE) - break; - - if (node==NULL) { + if (!check_composite_output(scene)) { BKE_report(reports, RPT_ERROR, "No Render Output Node in Scene"); return 0; } |