[Bf-blender-cvs] [4545b30dd83] greasepencil-object: Second step to include Pixel Factor

Antonio Vazquez noreply at git.blender.org
Sun Aug 13 13:04:05 CEST 2017


Commit: 4545b30dd83459e22162e0f5093435030d21a42f
Author: Antonio Vazquez
Date:   Fri Aug 11 17:15:59 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB4545b30dd83459e22162e0f5093435030d21a42f

Second step to include Pixel Factor

This add the final changes to use pixfactor in shaders

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

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
M	source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl
M	source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl

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

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 d40a0a690f6..af4c9e4838e 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -332,6 +332,11 @@ DRWShadingGroup *DRW_gpencil_shgroup_stroke_create(GPENCIL_e_data *e_data, GPENC
 	DRW_shgroup_uniform_float(grp, "pixsize", DRW_viewport_pixelsize_get(), 1);
 	DRW_shgroup_uniform_float(grp, "pixelsize", &U.pixelsize, 1);
 
+	/* avoid wrong values */
+	if ((gpd) && (gpd->pixfactor == 0)) {
+		gpd->pixfactor = GP_DEFAULT_PIX_FACTOR;
+	}
+
 	/* object scale and depth */
 	if ((ob) && (id > -1)) {
 		stl->shgroups[id].obj_scale = (ob->size[0] + ob->size[1] + ob->size[2]) / 3.0f;
@@ -348,13 +353,21 @@ DRWShadingGroup *DRW_gpencil_shgroup_stroke_create(GPENCIL_e_data *e_data, GPENC
 			}
 		}
 		DRW_shgroup_uniform_int(grp, "color_type", &stl->shgroups[id].color_type, 1);
+		DRW_shgroup_uniform_int(grp, "pixfactor", &gpd->pixfactor, 1);
 	}
 	else {
 		stl->storage->obj_scale = 1.0f;
 		stl->storage->keep_size = 0;
+		stl->storage->pixfactor = GP_DEFAULT_PIX_FACTOR;
 		DRW_shgroup_uniform_float(grp, "objscale", &stl->storage->obj_scale, 1);
 		DRW_shgroup_uniform_int(grp, "keep_size", &stl->storage->keep_size, 1);
 		DRW_shgroup_uniform_int(grp, "color_type", &stl->storage->color_type, 1);
+		if (gpd) {
+			DRW_shgroup_uniform_int(grp, "pixfactor", &gpd->pixfactor, 1);
+		}
+		else {
+			DRW_shgroup_uniform_int(grp, "pixfactor", &stl->storage->pixfactor, 1);
+		}
 	}
 
 	if (gpd) {
@@ -409,6 +422,11 @@ DRWShadingGroup *DRW_gpencil_shgroup_point_create(GPENCIL_e_data *e_data, GPENCI
 	DRW_shgroup_uniform_vec2(grp, "Viewport", viewport_size, 1);
 	DRW_shgroup_uniform_float(grp, "pixsize", DRW_viewport_pixelsize_get(), 1);
 	DRW_shgroup_uniform_float(grp, "pixelsize", &U.pixelsize, 1);
+	
+	/* avoid wrong values */
+	if ((gpd) && (gpd->pixfactor == 0)) {
+		gpd->pixfactor = GP_DEFAULT_PIX_FACTOR;
+	}
 
 	/* object scale and depth */
 	if ((ob) && (id > -1)) {
@@ -426,14 +444,21 @@ DRWShadingGroup *DRW_gpencil_shgroup_point_create(GPENCIL_e_data *e_data, GPENCI
 			}
 		}
 		DRW_shgroup_uniform_int(grp, "color_type", &stl->shgroups[id].color_type, 1);
-
+		DRW_shgroup_uniform_int(grp, "pixfactor", &gpd->pixfactor, 1);
 	}
 	else {
 		stl->storage->obj_scale = 1.0f;
 		stl->storage->keep_size = 0;
+		stl->storage->pixfactor = GP_DEFAULT_PIX_FACTOR;
 		DRW_shgroup_uniform_float(grp, "objscale", &stl->storage->obj_scale, 1);
 		DRW_shgroup_uniform_int(grp, "keep_size", &stl->storage->keep_size, 1);
 		DRW_shgroup_uniform_int(grp, "color_type", &stl->storage->color_type, 1);
+		if (gpd) {
+			DRW_shgroup_uniform_int(grp, "pixfactor", &gpd->pixfactor, 1);
+		}
+		else {
+			DRW_shgroup_uniform_int(grp, "pixfactor", &stl->storage->pixfactor, 1);
+		}
 	}
 
 	if (gpd) {
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 811730ea5e0..736f2fbb794 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -152,6 +152,8 @@ static void GPENCIL_cache_init(void *vedata)
 
 	GPENCIL_PassList *psl = ((GPENCIL_Data *)vedata)->psl;
 	GPENCIL_StorageList *stl = ((GPENCIL_Data *)vedata)->stl;
+	Object *ob = NULL;
+	bGPdata *gpd = NULL;
 
 	if (!stl->g_data) {
 		/* Alloc transient pointers */
@@ -199,6 +201,10 @@ static void GPENCIL_cache_init(void *vedata)
 		stl->g_data->shgrps_edit_line = DRW_gpencil_shgroup_edit_volumetric_create(psl->edit_pass, e_data.gpencil_line_sh);
 		/* drawing buffer pass */
 		const DRWContextState *draw_ctx = DRW_context_state_get();
+		ob = draw_ctx->obact;
+		if (ob) {
+			gpd = ob->gpd;
+		}
 		Palette *palette = BKE_palette_get_active_from_context(draw_ctx->evil_C);
 		PaletteColor *palcolor = BKE_palette_color_get_active(palette);
 		if (palcolor) {
@@ -220,10 +226,10 @@ static void GPENCIL_cache_init(void *vedata)
 		stl->g_data->shgrps_drawing_fill = DRW_gpencil_shgroup_drawing_fill_create(psl->drawing_pass, e_data.gpencil_drawing_fill_sh);
 
 		if ((palcolor) && (palcolor->flag & PAC_COLOR_DOT) == 0) {
-			stl->g_data->shgrps_drawing_stroke = DRW_gpencil_shgroup_stroke_create(&e_data, vedata, psl->drawing_pass, e_data.gpencil_stroke_sh, NULL, NULL, palcolor, -1);
+			stl->g_data->shgrps_drawing_stroke = DRW_gpencil_shgroup_stroke_create(&e_data, vedata, psl->drawing_pass, e_data.gpencil_stroke_sh, NULL, gpd, palcolor, -1);
 		}
 		else {
-			stl->g_data->shgrps_drawing_stroke = DRW_gpencil_shgroup_point_create(&e_data, vedata, psl->drawing_pass, e_data.gpencil_point_sh, NULL, NULL, palcolor, -1);
+			stl->g_data->shgrps_drawing_stroke = DRW_gpencil_shgroup_point_create(&e_data, vedata, psl->drawing_pass, e_data.gpencil_point_sh, NULL, gpd, palcolor, -1);
 		}
 
 		/* we need a full screen pass to combine the result of zdepth */
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 99de3296045..ea8e7db7e20 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -95,6 +95,7 @@ typedef struct GPENCIL_Storage {
 	int keep_size;
 	float obj_scale;
 	float blur1[2], blur2[2];
+	int pixfactor;
 } GPENCIL_Storage;
 
 typedef struct GPENCIL_StorageList {
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl
index 244aecdd154..77b2061879b 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl
@@ -5,6 +5,7 @@ uniform float pixsize;   /* rv3d->pixsize */
 uniform float pixelsize; /* U.pixelsize */
 uniform int keep_size;    
 uniform float objscale;
+uniform int pixfactor;
 
 in vec3 pos;
 in vec4 color;
@@ -15,7 +16,7 @@ out float finalThickness;
 
 #define TRUE 1
 
-float defaultpixsize = pixsize * pixelsize * 40.0;
+float defaultpixsize = pixsize * pixelsize * float(pixfactor);
 
 void main()
 {
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
index 205d5a02c7e..aa96e4a3cc1 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
@@ -5,6 +5,7 @@ uniform float pixsize;   /* rv3d->pixsize */
 uniform float pixelsize; /* U.pixelsize */
 uniform int keep_size;    
 uniform float objscale;
+uniform int pixfactor;
 
 in vec3 pos;
 in vec4 color;
@@ -15,7 +16,7 @@ out float finalThickness;
 
 #define TRUE 1
 
-float defaultpixsize = pixsize * pixelsize * 40.0;
+float defaultpixsize = pixsize * pixelsize * float(pixfactor);
 
 void main(void)
 {




More information about the Bf-blender-cvs mailing list