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
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-25 02:41:40 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-25 02:41:40 +0400
commit454d6e020700195b191e6ff109d8ed0eccdf0254 (patch)
tree67e2eb3dce55b031ada08225b38f655a6a0db3f4 /source/blender/blenkernel/intern/particle.c
parent28dd9c6a40859bf8d707b072174557d37240f162 (diff)
Fix particle hair display percentage not properly getting restored after
rendering. This used to happen in an unneeded frame change update which was removed. For heavy particle systems this could have a bad impact on viewport performance after rendering.
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r--source/blender/blenkernel/intern/particle.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 3ab535febb1..f6901c7b81b 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -734,6 +734,8 @@ void psys_render_restore(Object *ob, ParticleSystem *psys)
{
ParticleRenderData *data;
ParticleSystemModifierData *psmd = psys_get_modifier(ob, psys);
+ float render_disp = psys_get_current_display_percentage(psys);
+ float disp;
data = psys->renderdata;
if (!data)
@@ -777,6 +779,20 @@ void psys_render_restore(Object *ob, ParticleSystem *psys)
MEM_freeN(data);
psys->renderdata = NULL;
+
+ /* restore particle display percentage */
+ disp = psys_get_current_display_percentage(psys);
+
+ if (disp != render_disp) {
+ PARTICLE_P;
+
+ LOOP_PARTICLES {
+ if (PSYS_FRAND(p) > disp)
+ pa->flag |= PARS_NO_DISP;
+ else
+ pa->flag &= ~PARS_NO_DISP;
+ }
+ }
}
/* BMESH_TODO, for orig face data, we need to use MPoly */