[Bf-blender-cvs] [badab5cb7db] blender2.8-workbench: Workbench: Hair rendering

Jeroen Bakker noreply at git.blender.org
Thu Apr 26 08:47:12 CEST 2018


Commit: badab5cb7dbc83238616f7505c4b357ecbb6941e
Author: Jeroen Bakker
Date:   Thu Apr 26 08:46:58 2018 +0200
Branches: blender2.8-workbench
https://developer.blender.org/rBbadab5cb7dbc83238616f7505c4b357ecbb6941e

Workbench: Hair rendering

===================================================================

M	source/blender/draw/engines/workbench/workbench_materials.c

===================================================================

diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index 2ee87c9f2ce..1b6927ed3ed 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -29,6 +29,8 @@
 
 #include "BKE_particle.h"
 
+#include "DNA_modifier_types.h"
+
 #include "GPU_shader.h"
 
 #include "UI_resources.h"
@@ -328,22 +330,26 @@ static void workbench_cache_populate_particles(WORKBENCH_Data *vedata, IDPropert
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 
 	if (ob != draw_ctx->object_edit) {
-		for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
-			if (psys_check_enabled(ob, psys, false)) {
-				ParticleSettings *part = psys->part;
-				int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
-
-				if (draw_as == PART_DRAW_PATH && !psys->pathcache && !psys->childcache) {
-					draw_as = PART_DRAW_DOT;
-				}
-
-				static float mat[4][4];
-				unit_m4(mat);
-
-				if (draw_as == PART_DRAW_PATH) {
-					struct Gwn_Batch *geom = DRW_cache_particles_get_hair(psys, NULL);
-					WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, props, ob);
-					DRW_shgroup_call_add(material->shgrp, geom, mat);
+		for (ModifierData *md = ob->modifiers.first; md; md = md->next) {
+			if (md->type == eModifierType_ParticleSystem) {
+				ParticleSystem *psys = ((ParticleSystemModifierData *)md)->psys;
+
+				if (psys_check_enabled(ob, psys, false)) {
+					ParticleSettings *part = psys->part;
+					int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
+
+					if (draw_as == PART_DRAW_PATH && !psys->pathcache && !psys->childcache) {
+						draw_as = PART_DRAW_DOT;
+					}
+
+					static float mat[4][4];
+					unit_m4(mat);
+
+					if (draw_as == PART_DRAW_PATH) {
+						struct Gwn_Batch *geom = DRW_cache_particles_get_hair(psys, NULL);
+						WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, props, ob);
+						DRW_shgroup_call_add(material->shgrp, geom, mat);
+					}
 				}
 			}
 		}



More information about the Bf-blender-cvs mailing list