[Bf-blender-cvs] [e1a798c375c] greasepencil-object: Cleanup: Reorganize code

Antonio Vazquez noreply at git.blender.org
Tue Aug 8 11:19:12 CEST 2017


Commit: e1a798c375c308b594e814dd07fc7d9863bebcf2
Author: Antonio Vazquez
Date:   Sun Aug 6 15:55:52 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rBe1a798c375c308b594e814dd07fc7d9863bebcf2

Cleanup: Reorganize code

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

M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/engines/gpencil/gpencil_engine.h
M	source/blender/draw/engines/gpencil/gpencil_vfx.c

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 5d634717114..9a3106d3743 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -155,6 +155,10 @@ static void GPENCIL_cache_init(void *vedata)
 		 */
 		stl->shgroups = MEM_mallocN(sizeof(GPENCIL_shgroup) * GPENCIL_MAX_SHGROUPS, "GPENCIL_shgroup");
 	}
+
+	if (!stl->vfx) {
+		stl->vfx = MEM_mallocN(sizeof(GPENCIL_vfx) * GPENCIL_MAX_GP_OBJ, "GPENCIL_vfx");
+	}
 	
 	/* init gp objects cache */
 	stl->g_data->gp_cache_used = 0;
@@ -275,7 +279,7 @@ static void GPENCIL_cache_finish(void *vedata)
 			}
 			/* VFX pass */
 			cache = &stl->g_data->gp_object_cache[i];
-			DRW_gpencil_vfx_blur(&e_data, vedata, ob, cache);
+			DRW_gpencil_vfx_blur(i, &e_data, vedata, ob, cache);
 		}
 	}
 }
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 97cba5a717f..f7afc034246 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -33,6 +33,8 @@ struct ModifierData;
 struct GPENCIL_StorageList;
 
  /* TODO: these could be system parameter in userprefs screen */
+#define GPENCIL_MAX_GP_OBJ 256 
+
 #define GPENCIL_CACHE_BLOCK_SIZE 8 
 #define GPENCIL_MAX_SHGROUPS 65536
 #define GPENCIL_MIN_BATCH_SLOTS_CHUNK 8
@@ -42,10 +44,10 @@ struct GPENCIL_StorageList;
 #define GPENCIL_COLOR_PATTERN 2
 
  /* *********** OBJECTS CACHE *********** */
-typedef struct tGPencilVFXBlur {
+typedef struct GPencilVFXBlur {
 	float x;
 	float y;
-} tGPencilVFXBlur;
+} GPencilVFXBlur;
 
  /* used to save gpencil objects */
 typedef struct tGPencilObjectCache {
@@ -57,6 +59,10 @@ typedef struct tGPencilObjectCache {
 } tGPencilObjectCache;
 
   /* *********** LISTS *********** */
+typedef struct GPENCIL_vfx {
+	GPencilVFXBlur vfx_blur;
+} GPENCIL_vfx;
+
 typedef struct GPENCIL_shgroup {
 	int s_clamp;
 	int stroke_style;
@@ -67,9 +73,6 @@ typedef struct GPENCIL_shgroup {
 	int fill_style;
 	int keep_size;
 	float obj_scale;
-	/* vfx data */
-	tGPencilVFXBlur vfx_blur;
-
 	struct DRWShadingGroup *shgrps_fill;
 	struct DRWShadingGroup *shgrps_stroke;
 } GPENCIL_shgroup;
@@ -89,6 +92,7 @@ typedef struct GPENCIL_StorageList {
 	struct GPENCIL_Storage *storage;
 	struct g_data *g_data;
 	struct GPENCIL_shgroup *shgroups;
+	struct GPENCIL_vfx *vfx;
 } GPENCIL_StorageList;
 
 typedef struct GPENCIL_PassList {
@@ -199,6 +203,6 @@ void gpencil_object_cache_add(struct tGPencilObjectCache *cache, struct Object *
 
 void gpencil_array_modifiers(struct GPENCIL_StorageList *stl, struct Object *ob);
 
-void DRW_gpencil_vfx_blur(struct GPENCIL_e_data *e_data, struct GPENCIL_Data *vedata, struct Object *ob, struct tGPencilObjectCache *cache);
+void DRW_gpencil_vfx_blur(int ob_idx, struct GPENCIL_e_data *e_data, struct GPENCIL_Data *vedata, struct Object *ob, struct tGPencilObjectCache *cache);
 
 #endif /* __GPENCIL_ENGINE_H__ */
diff --git a/source/blender/draw/engines/gpencil/gpencil_vfx.c b/source/blender/draw/engines/gpencil/gpencil_vfx.c
index a8a68b4f538..dd05dbe988e 100644
--- a/source/blender/draw/engines/gpencil/gpencil_vfx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_vfx.c
@@ -67,7 +67,7 @@ static ModifierData *modifier_available(Object *ob, ModifierType type)
  * The effect is done using two shading groups because is faster to apply horizontal
  * and vertical in different operations.
  */
-void DRW_gpencil_vfx_blur(GPENCIL_e_data *e_data, GPENCIL_Data *vedata, Object *ob, tGPencilObjectCache *cache)
+void DRW_gpencil_vfx_blur(int ob_idx, GPENCIL_e_data *e_data, GPENCIL_Data *vedata, Object *ob, tGPencilObjectCache *cache)
 {
 	ModifierData *md = modifier_available(ob, eModifierType_GpencilBlur);
 	if (md == NULL) {
@@ -79,9 +79,8 @@ void DRW_gpencil_vfx_blur(GPENCIL_e_data *e_data, GPENCIL_Data *vedata, Object *
 	GPENCIL_StorageList *stl = ((GPENCIL_Data *)vedata)->stl;
 	GPENCIL_PassList *psl = ((GPENCIL_Data *)vedata)->psl;
 	const float *viewport_size = DRW_viewport_size_get();
-	int id = cache->init_grp;
-	stl->shgroups[id].vfx_blur.x = mmd->radius[0];
-	stl->shgroups[id].vfx_blur.y = mmd->radius[1] * (viewport_size[1] / viewport_size[0]);
+	stl->vfx[ob_idx].vfx_blur.x = mmd->radius[0];
+	stl->vfx[ob_idx].vfx_blur.y = mmd->radius[1] * (viewport_size[1] / viewport_size[0]);
 
 	struct Gwn_Batch *vfxquad = DRW_cache_fullscreen_quad_get();
 	/* horizontal blur */
@@ -90,7 +89,7 @@ void DRW_gpencil_vfx_blur(GPENCIL_e_data *e_data, GPENCIL_Data *vedata, Object *
 	DRW_shgroup_uniform_buffer(vfx_shgrp, "strokeColor", &e_data->temp_fbcolor_color_tx);
 	DRW_shgroup_uniform_buffer(vfx_shgrp, "strokeDepth", &e_data->temp_fbcolor_depth_tx);
 	DRW_shgroup_uniform_vec2(vfx_shgrp, "dir", stl->storage->blur1, 1);
-	DRW_shgroup_uniform_float(vfx_shgrp, "blur", &stl->shgroups[id].vfx_blur.x, 1);
+	DRW_shgroup_uniform_float(vfx_shgrp, "blur", &stl->vfx[ob_idx].vfx_blur.x, 1);
 
 	/* set first effect sh */
 	if (cache->init_vfx_sh == NULL) {
@@ -103,7 +102,7 @@ void DRW_gpencil_vfx_blur(GPENCIL_e_data *e_data, GPENCIL_Data *vedata, Object *
 	DRW_shgroup_uniform_buffer(vfx_shgrp, "strokeColor", &e_data->temp_fbcolor_color_tx);
 	DRW_shgroup_uniform_buffer(vfx_shgrp, "strokeDepth", &e_data->temp_fbcolor_depth_tx);
 	DRW_shgroup_uniform_vec2(vfx_shgrp, "dir", stl->storage->blur2, 1);
-	DRW_shgroup_uniform_float(vfx_shgrp, "blur", &stl->shgroups[id].vfx_blur.y, 1);
+	DRW_shgroup_uniform_float(vfx_shgrp, "blur", &stl->vfx[ob_idx].vfx_blur.y, 1);
 
 	/* set last effect sh */
 	cache->end_vfx_sh = vfx_shgrp;




More information about the Bf-blender-cvs mailing list