forked from bartvdbraak/blender
Fix #20928: difference boolean modifier is not applied during rendering,
fixed by last depsgraph commit and this extra check to avoid unnecessary free of derivedmesh for sculpt/multires.
This commit is contained in:
parent
6920a0cc1d
commit
c2122f01ad
@ -40,6 +40,7 @@ struct Object;
|
|||||||
void multires_mark_as_modified(struct Object *ob);
|
void multires_mark_as_modified(struct Object *ob);
|
||||||
|
|
||||||
void multires_force_update(struct Object *ob);
|
void multires_force_update(struct Object *ob);
|
||||||
|
void multires_force_render_update(struct Object *ob);
|
||||||
|
|
||||||
struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
|
struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
|
||||||
int local_mmd, struct DerivedMesh*, struct Object *, int, int);
|
int local_mmd, struct DerivedMesh*, struct Object *, int, int);
|
||||||
|
@ -122,6 +122,7 @@ void multires_mark_as_modified(Object *ob)
|
|||||||
|
|
||||||
void multires_force_update(Object *ob)
|
void multires_force_update(Object *ob)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(ob && ob->derivedFinal) {
|
if(ob && ob->derivedFinal) {
|
||||||
ob->derivedFinal->needsFree =1;
|
ob->derivedFinal->needsFree =1;
|
||||||
ob->derivedFinal->release(ob->derivedFinal);
|
ob->derivedFinal->release(ob->derivedFinal);
|
||||||
@ -129,6 +130,12 @@ void multires_force_update(Object *ob)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void multires_force_render_update(Object *ob)
|
||||||
|
{
|
||||||
|
if(ob && (ob->mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires))
|
||||||
|
multires_force_update(ob);
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX */
|
/* XXX */
|
||||||
#if 0
|
#if 0
|
||||||
void multiresModifier_join(Object *ob)
|
void multiresModifier_join(Object *ob)
|
||||||
|
@ -3173,7 +3173,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
WM_cursor_wait(1);
|
WM_cursor_wait(1);
|
||||||
|
|
||||||
/* flush multires changes (for sculpt) */
|
/* flush multires changes (for sculpt) */
|
||||||
multires_force_update(CTX_data_active_object(C));
|
multires_force_render_update(CTX_data_active_object(C));
|
||||||
|
|
||||||
/* get editmode results */
|
/* get editmode results */
|
||||||
ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */
|
ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */
|
||||||
|
Loading…
Reference in New Issue
Block a user