diff options
author | Ton Roosendaal <ton@blender.org> | 2013-05-12 21:16:43 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2013-05-12 21:16:43 +0400 |
commit | 1ea1f21b63d71b1acb25f734e2c0a4b00f694502 (patch) | |
tree | 56a2c18ccf701d6baf554ecd3b80ff9a3c945c24 /source/blender/render | |
parent | d46480377c733405554237adf64e1bce32b324fc (diff) |
Viewport Render Internal:
Animated characters were not rendering yet, the render code for it
caused a signal for re-draw and re-render, in eternal loop.
Solved by forcing viewport render to use the same derivedmesh data
as for 3d viewport drawing. Faster too.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index eceeebc3814..a941cde37aa 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3379,7 +3379,10 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) mask |= CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE; #endif - dm= mesh_create_derived_render(re->scene, ob, mask); + if (re->r.scemode & R_PREVIEWBUTS) + dm = mesh_get_derived_final(re->scene, ob, mask); + else + dm= mesh_create_derived_render(re->scene, ob, mask); if (dm==NULL) return; /* in case duplicated object fails? */ if (mask & CD_MASK_ORCO) { @@ -4686,7 +4689,10 @@ static void init_render_object_data(Render *re, ObjectRen *obr, int timeoffset) /* the emitter mesh wasn't rendered so the modifier stack wasn't * evaluated with render settings */ DerivedMesh *dm; - dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); + if (re->r.scemode & R_PREVIEWBUTS) + dm = mesh_get_derived_final(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); + else + dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); dm->release(dm); } @@ -4972,7 +4978,10 @@ static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, in /* this is to make sure we get render level duplis in groups: * the derivedmesh must be created before init_render_mesh, * since object_duplilist does dupliparticles before that */ - dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); + if (re->r.scemode & R_PREVIEWBUTS) + dm = mesh_get_derived_final(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); + else + dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); dm->release(dm); for (psys=ob->particlesystem.first; psys; psys=psys->next) |