[Bf-blender-cvs] [789b53d8bd4] greasepencil-object: Create a separated struct to hold shading groups

Antonio Vazquez noreply at git.blender.org
Tue May 23 17:44:53 CEST 2017


Commit: 789b53d8bd4a0fcf84ad3abb6b3b35468c15bcf0
Author: Antonio Vazquez
Date:   Tue May 23 17:44:41 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB789b53d8bd4a0fcf84ad3abb6b3b35468c15bcf0

Create a separated struct to hold shading groups

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

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

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
index 6f0ac02de65..294b924c587 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -235,8 +235,8 @@ static DRWShadingGroup *DRW_gpencil_shgroup_fill_create(GPENCIL_Data *vedata, DR
 	/* e_data.gpencil_fill_sh */
 	DRWShadingGroup *grp = DRW_shgroup_create(shader, pass);
 	DRW_shgroup_uniform_vec4(grp, "color2", palcolor->scolor, 1);
-	stl->storage->fill_style[id] = palcolor->fill_style;
-	DRW_shgroup_uniform_int(grp, "fill_type", &stl->storage->fill_style[id], 1);
+	stl->storage->shgroups[id].fill_style = palcolor->fill_style;
+	DRW_shgroup_uniform_int(grp, "fill_type", &stl->storage->shgroups[id].fill_style, 1);
 	DRW_shgroup_uniform_float(grp, "mix_factor", &palcolor->mix_factor, 1);
 
 	DRW_shgroup_uniform_float(grp, "g_angle", &palcolor->g_angle, 1);
@@ -250,11 +250,11 @@ static DRWShadingGroup *DRW_gpencil_shgroup_fill_create(GPENCIL_Data *vedata, DR
 	DRW_shgroup_uniform_vec2(grp, "t_shift", palcolor->t_shift, 1);
 	DRW_shgroup_uniform_float(grp, "t_opacity", &palcolor->t_opacity, 1);
 
-	stl->storage->t_mix[id] = palcolor->flag & PAC_COLOR_TEX_MIX ? 1 : 0;
-	DRW_shgroup_uniform_int(grp, "t_mix", &stl->storage->t_mix[id], 1);
+	stl->storage->shgroups[id].t_mix = palcolor->flag & PAC_COLOR_TEX_MIX ? 1 : 0;
+	DRW_shgroup_uniform_int(grp, "t_mix", &stl->storage->shgroups[id].t_mix, 1);
 
-	stl->storage->t_flip[id] = palcolor->flag & PAC_COLOR_FLIP_FILL ? 1 : 0;
-	DRW_shgroup_uniform_int(grp, "t_flip", &stl->storage->t_flip[id], 1);
+	stl->storage->shgroups[id].t_flip = palcolor->flag & PAC_COLOR_FLIP_FILL ? 1 : 0;
+	DRW_shgroup_uniform_int(grp, "t_flip", &stl->storage->shgroups[id].t_flip, 1);
 
 	DRW_shgroup_uniform_int(grp, "xraymode", (const int *) &gpd->xray_mode, 1);
 
@@ -276,8 +276,8 @@ static DRWShadingGroup *DRW_gpencil_shgroup_fill_create(GPENCIL_Data *vedata, DR
 			GPUTexture *texture = GPU_texture_from_blender(palcolor->ima, &iuser, GL_TEXTURE_2D, true, 0.0, 0);
 			DRW_shgroup_uniform_texture(grp, "myTexture", texture);
 
-			stl->storage->t_clamp[id] = palcolor->flag & PAC_COLOR_TEX_CLAMP ? 1 : 0;
-			DRW_shgroup_uniform_int(grp, "t_clamp", &stl->storage->t_clamp[id], 1);
+			stl->storage->shgroups[id].t_clamp = palcolor->flag & PAC_COLOR_TEX_CLAMP ? 1 : 0;
+			DRW_shgroup_uniform_int(grp, "t_clamp", &stl->storage->shgroups[id].t_clamp, 1);
 
 			BKE_image_release_ibuf(image, ibuf, NULL);
 		}
@@ -466,12 +466,12 @@ static void gpencil_draw_strokes(GpencilBatchCache *cache, GPENCIL_e_data *e_dat
 
 		if (gps->totpoints > 1) {
 			int id = stl->storage->pal_id;
-			stl->storage->shgrps_fill[id] = DRW_gpencil_shgroup_fill_create(vedata, psl->stroke_pass, e_data->gpencil_fill_sh, gpd, gps->palcolor, id);
-			stl->storage->shgrps_stroke[id] = DRW_gpencil_shgroup_stroke_create(vedata, psl->stroke_pass, e_data->gpencil_stroke_sh, gpd);
+			stl->storage->shgroups[id].shgrps_fill = DRW_gpencil_shgroup_fill_create(vedata, psl->stroke_pass, e_data->gpencil_fill_sh, gpd, gps->palcolor, id);
+			stl->storage->shgroups[id].shgrps_stroke = DRW_gpencil_shgroup_stroke_create(vedata, psl->stroke_pass, e_data->gpencil_stroke_sh, gpd);
 			++stl->storage->pal_id;
 
-			fillgrp = stl->storage->shgrps_fill[id];
-			strokegrp = stl->storage->shgrps_stroke[id];
+			fillgrp = stl->storage->shgroups[id].shgrps_fill;
+			strokegrp = stl->storage->shgroups[id].shgrps_stroke;
 		}
 		/* fill */
 		gpencil_add_fill_shgroup(cache, fillgrp, gpd, gpl, gpf, gps, tintcolor, onion, custonion);
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index ae58e79ce23..d70479a93cb 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -119,8 +119,7 @@ static void GPENCIL_cache_init(void *vedata)
 		DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND | DRW_STATE_DEPTH_LESS;
 		psl->stroke_pass = DRW_pass_create("Gpencil Stroke Pass", state);
 		stl->storage->pal_id = 0;
-		memset(stl->storage->shgrps_fill, 0, sizeof(DRWShadingGroup *) * GPENCIL_MAX_SHGROUPS);
-		memset(stl->storage->shgrps_stroke, 0, sizeof(DRWShadingGroup *) * GPENCIL_MAX_SHGROUPS);
+		memset(stl->storage->shgroups, 0, sizeof(GPENCIL_shgroup *) * GPENCIL_MAX_SHGROUPS);
 		stl->g_data->shgrps_point_volumetric = DRW_gpencil_shgroup_point_volumetric_create(psl->stroke_pass, e_data.gpencil_volumetric_sh);
 
 		state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND;
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 587161eee84..0107ec233ae 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -41,14 +41,18 @@ typedef struct tGPencilObjectCache {
 } tGPencilObjectCache;
 
  /* *********** LISTS *********** */
+typedef struct GPENCIL_shgroup {
+	int t_mix;
+	int t_flip;
+	int t_clamp;
+	int fill_style;
+	DRWShadingGroup *shgrps_fill;
+	DRWShadingGroup *shgrps_stroke;
+} GPENCIL_shgroup;
+
 typedef struct GPENCIL_Storage {
 	int pal_id; /* total elements */
-	int t_mix[GPENCIL_MAX_SHGROUPS];
-	int t_flip[GPENCIL_MAX_SHGROUPS];
-	int t_clamp[GPENCIL_MAX_SHGROUPS];
-	int fill_style[GPENCIL_MAX_SHGROUPS];
-	DRWShadingGroup *shgrps_fill[GPENCIL_MAX_SHGROUPS];
-	DRWShadingGroup *shgrps_stroke[GPENCIL_MAX_SHGROUPS];
+	GPENCIL_shgroup shgroups[GPENCIL_MAX_SHGROUPS];
 	float unit_matrix[4][4];
 	int is_persp;   /* rv3d->is_persp (1-yes) */
 	int xray;




More information about the Bf-blender-cvs mailing list