[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56263] trunk/blender/source/blender: fix relating to r56260, when in vertex paint mode the mesh would have tessfaces allocated, which prevented baking from updating vertex colors.
Campbell Barton
ideasman42 at gmail.com
Wed Apr 24 15:53:09 CEST 2013
Revision: 56263
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56263
Author: campbellbarton
Date: 2013-04-24 13:53:09 +0000 (Wed, 24 Apr 2013)
Log Message:
-----------
fix relating to r56260, when in vertex paint mode the mesh would have tessfaces allocated, which prevented baking from updating vertex colors.
baking now clears tessfaces.
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56260
Modified Paths:
--------------
trunk/blender/source/blender/editors/object/object_bake.c
trunk/blender/source/blender/render/intern/source/bake.c
Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c 2013-04-24 13:52:17 UTC (rev 56262)
+++ trunk/blender/source/blender/editors/object/object_bake.c 2013-04-24 13:53:09 UTC (rev 56263)
@@ -61,6 +61,8 @@
#include "BKE_modifier.h"
#include "BKE_DerivedMesh.h"
#include "BKE_subsurf.h"
+#include "BKE_depsgraph.h"
+#include "BKE_mesh.h"
#include "RE_pipeline.h"
#include "RE_shader_ext.h"
@@ -607,40 +609,58 @@
bkr->scene->r.mode &= ~R_RAYTRACE;
/* force OpenGL reload and mipmap recalc */
- for (ima = G.main->image.first; ima; ima = ima->id.next) {
- ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL);
+ if ((bkr->scene->r.bake_flag & R_BAKE_VCOL) == 0) {
+ for (ima = G.main->image.first; ima; ima = ima->id.next) {
+ ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL);
- /* some of the images could have been changed during bake,
- * so recreate mipmaps regardless bake result status
- */
- if (ima->ok == IMA_OK_LOADED) {
+ /* some of the images could have been changed during bake,
+ * so recreate mipmaps regardless bake result status
+ */
+ if (ima->ok == IMA_OK_LOADED) {
+ if (ibuf) {
+ if (ibuf->userflags & IB_BITMAPDIRTY) {
+ GPU_free_image(ima);
+ imb_freemipmapImBuf(ibuf);
+ }
+
+ /* invalidate display buffers for changed images */
+ if (ibuf->userflags & IB_BITMAPDIRTY)
+ ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
+ }
+ }
+
+ /* freed when baking is done, but if its canceled we need to free here */
if (ibuf) {
- if (ibuf->userflags & IB_BITMAPDIRTY) {
- GPU_free_image(ima);
- imb_freemipmapImBuf(ibuf);
+ if (ibuf->userdata) {
+ BakeImBufuserData *userdata = (BakeImBufuserData *) ibuf->userdata;
+ if (userdata->mask_buffer)
+ MEM_freeN(userdata->mask_buffer);
+ if (userdata->displacement_buffer)
+ MEM_freeN(userdata->displacement_buffer);
+ MEM_freeN(userdata);
+ ibuf->userdata = NULL;
}
+ }
- /* invalidate display buffers for changed images */
- if (ibuf->userflags & IB_BITMAPDIRTY)
- ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
- }
+ BKE_image_release_ibuf(ima, ibuf, NULL);
}
+ }
- /* freed when baking is done, but if its canceled we need to free here */
- if (ibuf) {
- if (ibuf->userdata) {
- BakeImBufuserData *userdata = (BakeImBufuserData *) ibuf->userdata;
- if (userdata->mask_buffer)
- MEM_freeN(userdata->mask_buffer);
- if (userdata->displacement_buffer)
- MEM_freeN(userdata->displacement_buffer);
- MEM_freeN(userdata);
- ibuf->userdata = NULL;
+ if (bkr->scene->r.bake_flag & R_BAKE_VCOL) {
+ /* update all tagged meshes */
+ Object *ob;
+ BLI_assert(BLI_thread_is_main());
+ for (ob = G.main->object.first; ob; ob = ob->id.next) {
+ if (ob->type == OB_MESH) {
+ Mesh *me = ob->data;
+ if (me->id.flag & LIB_DOIT) {
+ DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA);
+ BKE_mesh_tessface_clear(me);
+ }
}
}
+ }
- BKE_image_release_ibuf(ima, ibuf, NULL);
- }
}
static void *do_bake_render(void *bake_v)
Modified: trunk/blender/source/blender/render/intern/source/bake.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/bake.c 2013-04-24 13:52:17 UTC (rev 56262)
+++ trunk/blender/source/blender/render/intern/source/bake.c 2013-04-24 13:53:09 UTC (rev 56263)
@@ -47,7 +47,6 @@
#include "DNA_meshdata_types.h"
#include "BKE_customdata.h"
-#include "BKE_depsgraph.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_main.h"
@@ -1105,19 +1104,6 @@
}
}
- if (R.r.bake_flag & R_BAKE_VCOL) {
- /* update all tagged meshes */
- Object *ob;
- for (ob = G.main->object.first; ob; ob = ob->id.next) {
- if (ob->type == OB_MESH) {
- Mesh *me = ob->data;
- if (me->id.flag & LIB_DOIT) {
- DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA);
- }
- }
- }
- }
-
MEM_freeN(handles);
BLI_end_threads(&threads);
More information about the Bf-blender-cvs
mailing list