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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-09 17:55:09 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-11 13:49:25 +0300
commit327789eaf875195cb2b1374dae330d9a3ec9b478 (patch)
tree7cc33a9e3567eb2955677d00fec7a050aef842b0 /source/blender/draw/engines
parentbac9b047788a53677be7ecdcf755fcd90629185d (diff)
Draw manager: Add utility function to check whether particle systems are to be drawn
Diffstat (limited to 'source/blender/draw/engines')
-rw-r--r--source/blender/draw/engines/basic/basic_engine.c4
-rw-r--r--source/blender/draw/engines/clay/clay_engine.c4
-rw-r--r--source/blender/draw/engines/eevee/eevee_materials.c2
-rw-r--r--source/blender/draw/engines/workbench/workbench_materials.c4
4 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c
index 2e0a0881928..67481a68162 100644
--- a/source/blender/draw/engines/basic/basic_engine.c
+++ b/source/blender/draw/engines/basic/basic_engine.c
@@ -143,6 +143,10 @@ static void basic_cache_populate(void *vedata, Object *ob)
if (!DRW_object_is_renderable(ob))
return;
+ if (!DRW_check_particles_visible_within_active_context(ob)) {
+ return;
+ }
+
const DRWContextState *draw_ctx = DRW_context_state_get();
if (ob != draw_ctx->object_edit) {
diff --git a/source/blender/draw/engines/clay/clay_engine.c b/source/blender/draw/engines/clay/clay_engine.c
index 3eed31b6856..0ae27a4f5ef 100644
--- a/source/blender/draw/engines/clay/clay_engine.c
+++ b/source/blender/draw/engines/clay/clay_engine.c
@@ -833,6 +833,10 @@ static void clay_cache_populate_particles(void *vedata, Object *ob)
return;
}
+ if (!DRW_check_particles_visible_within_active_context(ob)) {
+ return;
+ }
+
for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
if (!psys_check_enabled(ob, psys, false)) {
continue;
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 6819dad8188..304baff6672 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -1472,7 +1472,7 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld
}
if (ob->type == OB_MESH) {
- if (ob != draw_ctx->object_edit) {
+ if (DRW_check_particles_visible_within_active_context(ob)) {
material_hash = stl->g_data->hair_material_hash;
for (ModifierData *md = ob->modifiers.first; md; md = md->next) {
if (md->type != eModifierType_ParticleSystem) {
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index ddc3b5dc698..0fee42619c3 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -452,11 +452,9 @@ static WORKBENCH_MaterialData *get_or_create_material_data(WORKBENCH_Data *vedat
static void workbench_cache_populate_particles(WORKBENCH_Data *vedata, Object *ob)
{
- const DRWContextState *draw_ctx = DRW_context_state_get();
- if (ob == draw_ctx->object_edit) {
+ if (!DRW_check_particles_visible_within_active_context(ob)) {
return;
}
-
for (ParticleSystem *psys = ob->particlesystem.first; psys != NULL; psys = psys->next) {
if (!psys_check_enabled(ob, psys, false)) {
continue;