Commit: 5a37f69467ac06d2d1bb78553b9901c984d17422
Author: Antonio Vazquez
Date:   Wed Feb 28 10:28:24 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB5a37f69467ac06d2d1bb78553b9901c984d17422

New Draw mode "Boxes"

This draw rectangles instead of Dots and allow new artistic effects.

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

M       source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M       source/blender/draw/engines/gpencil/gpencil_engine.h
M       source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl
M       source/blender/makesdna/DNA_brush_types.h
M       source/blender/makesrna/intern/rna_palette.c

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

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 224b68e3599..09de1ce5f74 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -457,6 +457,7 @@ DRWShadingGroup 
*DRW_gpencil_shgroup_point_create(GPENCIL_e_data *e_data, GPENCI
                stl->shgroups[id].keep_size = (int)((gpd) && (gpd->flag & 
GP_DATA_STROKE_KEEPTHICKNESS));
                DRW_shgroup_uniform_int(grp, "keep_size", 
&stl->shgroups[id].keep_size, 1);
 
+               stl->shgroups[id].mode = palcolor->mode;
                stl->shgroups[id].stroke_style = palcolor->stroke_style;
                stl->shgroups[id].color_type = GPENCIL_COLOR_SOLID;
                if ((palcolor->stroke_style == STROKE_STYLE_TEXTURE) && 
(!onion)) {
@@ -472,9 +473,11 @@ DRWShadingGroup 
*DRW_gpencil_shgroup_point_create(GPENCIL_e_data *e_data, GPENCI
                stl->storage->obj_scale = 1.0f;
                stl->storage->keep_size = 0;
                stl->storage->pixfactor = GP_DEFAULT_PIX_FACTOR;
+               stl->storage->mode = palcolor->mode;
                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);
+               DRW_shgroup_uniform_int(grp, "mode", &stl->storage->mode, 1);
                if (gpd) {
                        DRW_shgroup_uniform_float(grp, "pixfactor", 
&gpd->pixfactor, 1);
                }
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h 
b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 65887aa2a7e..f5fdaba4ea6 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -143,6 +143,7 @@ typedef struct GPENCIL_shgroup {
        int s_clamp;
        int stroke_style;
        int color_type;
+       int mode;
        int t_mix;
        int t_flip;
        int t_clamp;
@@ -158,6 +159,7 @@ typedef struct GPENCIL_Storage {
        float unit_matrix[4][4];
        int stroke_style;
        int color_type;
+       int mode;
        int xray;
        int keep_size;
        float obj_scale;
diff --git 
a/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl 
b/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl
index e77e3df13aa..ad90a30af4a 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl
@@ -1,4 +1,5 @@
 uniform int color_type;
+uniform int mode;
 uniform sampler2D myTexture;
 
 in vec4 mColor;
@@ -7,6 +8,9 @@ out vec4 fragColor;
 
 #define texture2D texture
 
+#define GPENCIL_MODE_DOTS   1
+#define GPENCIL_MODE_BOX    2
+
 /* keep this list synchronized with list in gpencil_engine.h */
 #define GPENCIL_COLOR_SOLID   0
 #define GPENCIL_COLOR_TEXTURE 1
@@ -19,7 +23,7 @@ void main()
        const float rad_squared = 0.25;
 
        // round point with jaggy edges
-       if (dist_squared > rad_squared)
+       if ((mode == GPENCIL_MODE_DOTS) && (dist_squared > rad_squared))
                discard;
 
        vec4 tmp_color = texture2D(myTexture, mTexCoord);
diff --git a/source/blender/makesdna/DNA_brush_types.h 
b/source/blender/makesdna/DNA_brush_types.h
index 9692c849b30..01913e021e4 100644
--- a/source/blender/makesdna/DNA_brush_types.h
+++ b/source/blender/makesdna/DNA_brush_types.h
@@ -194,6 +194,7 @@ typedef enum ePaletteColor_Flag {
 typedef enum ePaletteColor_Mode {
        PAC_MODE_LINE = 0, /* line */
        PAC_MODE_DOTS = 1, /* dots */
+       PAC_MODE_BOX  = 2, /* rectangles */
 } ePaletteColor_Mode;
 
 typedef struct Palette {
diff --git a/source/blender/makesrna/intern/rna_palette.c 
b/source/blender/makesrna/intern/rna_palette.c
index db1dee1f651..49ff54f74f7 100644
--- a/source/blender/makesrna/intern/rna_palette.c
+++ b/source/blender/makesrna/intern/rna_palette.c
@@ -236,6 +236,7 @@ static void rna_def_palettecolor(BlenderRNA *brna)
        static EnumPropertyItem palettecolor_mode_types_items[] = {
                { PAC_MODE_LINE, "LINE", 0, "Line", "Draw strokes using a 
continuous line" },
                { PAC_MODE_DOTS, "DOTS", 0, "Dots", "Draw strokes using 
separated dots" },
+               { PAC_MODE_BOX, "BOX", 0, "Boxes", "Draw strokes using 
separated rectangle boxes" },
                { 0, NULL, 0, NULL, NULL }
        };

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

Reply via email to