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)
 {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to