Commit: 7480b2381dbc143abe91428f5fe19d79780fd50f
Author: Antonio Vazquez
Date: Tue Jun 6 17:19:48 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB7480b2381dbc143abe91428f5fe19d79780fd50f
New fill style using patterns
Now it is possible to use a texture to define the fill color pattern, similar
to the use of noncolor textures.
===================================================================
M release/scripts/startup/bl_ui/properties_grease_pencil_common.py
M source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl
M source/blender/makesdna/DNA_brush_types.h
M source/blender/makesrna/intern/rna_palette.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
index e9e93425195..7c8be59dc3c 100644
--- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -406,7 +406,7 @@ class GreasePencilStrokeSculptPanel:
else:
return bool(gpd.is_stroke_sculpt_mode)
- return false
+ return False
@staticmethod
def draw(self, context):
@@ -1205,13 +1205,13 @@ class GreasePencilPaletteColorPanel:
col.prop(pcolor, "mix_factor", text="Mix", slider=True)
if pcolor.fill_style in ('GRADIENT', 'RADIAL', 'CHESSBOARD'):
- if pcolor.texture_mix is False or pcolor.fill_style ==
'CHESSBOARD':
+ if pcolor.texture_mix is False or pcolor.fill_style ==
'CHESSBOARD':
col.prop(pcolor, "mix_color", text="")
split = col.split(percentage=0.5)
subcol = split.column(align=True)
subcol.prop(pcolor, "pattern_shift", text="Location")
subrow = subcol.row(align=True)
- if pcolor.fill_style == 'RADIAL':
+ if pcolor.fill_style == 'RADIAL':
subrow.enabled = False
subrow.prop(pcolor, "pattern_angle", text="Angle")
subcol.prop(pcolor, "flip", text="Flip")
@@ -1219,19 +1219,19 @@ class GreasePencilPaletteColorPanel:
subcol = split.column(align=True)
subcol.prop(pcolor, "pattern_scale", text="Scale")
subrow = subcol.row(align=True)
- if pcolor.fill_style != 'RADIAL':
+ if pcolor.fill_style != 'RADIAL':
subrow.enabled = False
subrow.prop(pcolor, "pattern_radius", text="Radius")
subrow = subcol.row(align=True)
- if pcolor.fill_style != 'CHESSBOARD':
+ if pcolor.fill_style != 'CHESSBOARD':
subrow.enabled = False
subrow.prop(pcolor, "pattern_boxsize", text="Box")
col.separator()
col.label("Texture")
- if pcolor.fill_style != 'TEXTURE':
+ if pcolor.fill_style not in ('TEXTURE', 'PATTERN'):
col.prop(pcolor, "texture_mix", text="Mix Texture")
- if pcolor.fill_style == 'TEXTURE' or pcolor.texture_mix is True:
+ if pcolor.fill_style in ('TEXTURE', 'PATTERN') or pcolor.texture_mix
is True:
col.template_ID(pcolor, "image", open="image.open")
split = col.split(percentage=0.5)
subcol = split.column(align=True)
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 6a2b6bc267e..d334088016d 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -259,7 +259,7 @@ static DRWShadingGroup
*DRW_gpencil_shgroup_fill_create(GPENCIL_Data *vedata, DR
DRW_shgroup_uniform_int(grp, "xraymode", (const int *) &gpd->xray_mode,
1);
/* image texture */
- if ((palcolor->fill_style == FILL_STYLE_TEXTURE) || (palcolor->flag &
PAC_COLOR_TEX_MIX)) {
+ if ((palcolor->fill_style == FILL_STYLE_TEXTURE) ||
(palcolor->fill_style == FILL_STYLE_PATTERN) || (palcolor->flag &
PAC_COLOR_TEX_MIX)) {
ImBuf *ibuf;
Image *image = palcolor->ima;
ImageUser iuser = { NULL };
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl
b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl
index 79171424e6a..84928530219 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl
@@ -25,6 +25,7 @@ uniform int t_clamp;
#define RADIAL 2
#define CHESS 3
#define TEXTURE 4
+#define PATTERN 5
#define GP_XRAY_FRONT 0
#define GP_XRAY_3DSPACE 1
@@ -174,6 +175,12 @@ void main()
if (fill_type == TEXTURE) {
fragColor = text_color;
}
+ /* pattern */
+ if (fill_type == PATTERN) {
+ /* normalize texture color */
+ float nvalue = 1.0 - ((text_color.x + text_color.y +
text_color.z) / 3.0);
+ fragColor = mix(vec4(0.0, 0.0, 0.0, 0.0), finalColor,
nvalue);
+ }
}
/* set zdepth */
diff --git a/source/blender/makesdna/DNA_brush_types.h
b/source/blender/makesdna/DNA_brush_types.h
index d4eaa6219f1..4c9ab007360 100644
--- a/source/blender/makesdna/DNA_brush_types.h
+++ b/source/blender/makesdna/DNA_brush_types.h
@@ -383,5 +383,6 @@ typedef enum BlurKernelType {
#define FILL_STYLE_RADIAL 2
#define FILL_STYLE_CHESSBOARD 3
#define FILL_STYLE_TEXTURE 4
+#define FILL_STYLE_PATTERN 5
#endif /* __DNA_BRUSH_TYPES_H__ */
diff --git a/source/blender/makesrna/intern/rna_palette.c
b/source/blender/makesrna/intern/rna_palette.c
index 3b34d793a35..928bd43129b 100644
--- a/source/blender/makesrna/intern/rna_palette.c
+++ b/source/blender/makesrna/intern/rna_palette.c
@@ -220,6 +220,7 @@ static void rna_def_palettecolor(BlenderRNA *brna)
{ FILL_STYLE_RADIAL, "RADIAL", 0, "Radial", "Fill area with
radial gradient" },
{ FILL_STYLE_CHESSBOARD, "CHESSBOARD", 0, "Chessboard", "Fill
area with chessboard pattern" },
{ FILL_STYLE_TEXTURE, "TEXTURE", 0, "Texture", "Fill area with
image texture" },
+ { FILL_STYLE_PATTERN, "PATTERN", 0, "Pattern", "Fill area with
color but use image texture as pattern to distribute color" },
{ 0, NULL, 0, NULL, NULL }
};
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs