[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