Commit: 2ba4164072708d3dfc34eb8219e6d61438ad18ee Author: Antonioya Date: Tue Mar 19 12:27:58 2019 +0100 Branches: greasepencil-object https://developer.blender.org/rB2ba4164072708d3dfc34eb8219e6d61438ad18ee
GPencil: More changes to gradient factors =================================================================== M source/blender/draw/engines/gpencil/gpencil_draw_utils.c M source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl M source/blender/draw/engines/gpencil/shaders/gpencil_stroke_frag.glsl M source/blender/makesrna/intern/rna_brush.c M source/blender/makesrna/intern/rna_gpencil.c =================================================================== diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c index 2ca3bd4ac74..e380c645a2e 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c @@ -535,7 +535,6 @@ DRWShadingGroup *DRW_gpencil_shgroup_stroke_create( stl->shgroups[id].gradient_f = gps->gradient_f; copy_v2_v2(stl->shgroups[id].gradient_s, gps->gradient_s); DRW_shgroup_uniform_float(grp, "gradient_f", &stl->shgroups[id].gradient_f, 1); - DRW_shgroup_uniform_vec2(grp, "gradient_s", stl->shgroups[id].gradient_s, 1); /* viewport x-ray */ stl->shgroups[id].is_xray = (ob->dt == OB_WIRE) ? 1 : stl->storage->is_xray; @@ -571,7 +570,6 @@ DRWShadingGroup *DRW_gpencil_shgroup_stroke_create( DRW_shgroup_uniform_int(grp, "caps_mode", &zero[0], 2); DRW_shgroup_uniform_float(grp, "gradient_f", &stl->storage->gradient_f, 1); - DRW_shgroup_uniform_vec2(grp, "gradient_s", stl->storage->gradient_s, 1); /* viewport x-ray */ DRW_shgroup_uniform_int(grp, "viewport_xray", &stl->storage->is_xray, 1); 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 7e222311295..833329a11ce 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl @@ -20,15 +20,25 @@ out vec4 fragColor; #define GPENCIL_COLOR_TEXTURE 1 #define GPENCIL_COLOR_PATTERN 2 +/* Function to check the point inside ellipse */ +float checkpoint(vec2 pt, vec2 radius) +{ + float p = (pow(pt.x, 2) / pow(radius.x, 2)) + (pow(pt.y, 2) / pow(radius.y, 2)); + + return p; +} + void main() { vec2 centered = mTexCoord - vec2(0.5); float dist_squared = dot(centered, centered); const float rad_squared = 0.25; + float ellip = checkpoint(centered, vec2(gradient_s / 2.0)); - /* Round point with jaggy edges. */ - if ((mode != GPENCIL_MODE_BOX) && (dist_squared > rad_squared)) { - discard; + if (mode != GPENCIL_MODE_BOX) { + if (ellip > 1.0) { + discard; + } } vec4 tmp_color = texture2D(myTexture, mTexCoord); @@ -50,6 +60,15 @@ void main() /* mult both alpha factor to use strength factor with color alpha limit */ fragColor.a = min(text_color.a * mColor.a, mColor.a); } + + if (gradient_f < 1.0) { + float in_rad = gradient_f / 4.0; + float ex_rad = rad_squared - in_rad; + + float alpha = clamp((dist_squared - in_rad) / ex_rad, 0.0, 1.0); + fragColor.a = smoothstep(fragColor.a, 0.0, ellip); + } + if(fragColor.a < 0.0035) discard; } diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_frag.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_frag.glsl index 32d53fa9992..1825346ac68 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_frag.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_frag.glsl @@ -2,7 +2,6 @@ uniform int color_type; uniform sampler2D myTexture; uniform float gradient_f; -uniform vec2 gradient_s; in vec4 mColor; in vec2 mTexCoord; @@ -21,6 +20,7 @@ out vec4 fragColor; void main() { + vec4 tColor = vec4(mColor); /* if uvfac[1] == 1, then encap */ if (uvfac[1] == ENDCAP) { @@ -58,8 +58,11 @@ void main() } /* gradient */ - if (mTexCoord.y > gradient_f) { - fragColor.a = gradient_f; + if (gradient_f < 1.0) { + float d = abs(mTexCoord.y - 0.5) * (1.1 - gradient_f); + float alpha = 1.0 - clamp((fragColor.a - (d * 2.0)), 0.03, 1.0); + fragColor.a = smoothstep(fragColor.a, 0.0, alpha); + } if(fragColor.a < 0.0035) diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 6bfa8f84e02..7798140459d 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -1189,7 +1189,7 @@ static void rna_def_gpencil_options(BlenderRNA *brna) /* gradient control along y */ prop = RNA_def_property(srna, "gradient_factor", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "gradient_f"); - RNA_def_property_range(prop, 0.01f, 1.0f); + RNA_def_property_range(prop, 0.001f, 1.0f); RNA_def_property_float_default(prop, 1.0f); RNA_def_property_ui_text( prop, "Gradient Factor", diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index 7f042fc5c8a..13c9becf7f4 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -1001,7 +1001,7 @@ static void rna_def_gpencil_stroke(BlenderRNA *brna) /* gradient control along y */ prop = RNA_def_property(srna, "gradient_factor", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "gradient_f"); - RNA_def_property_range(prop, 0.01f, 1.0f); + RNA_def_property_range(prop, 0.001f, 1.0f); RNA_def_property_float_default(prop, 1.0f); RNA_def_property_ui_text(prop, "Gradient Factor", "Amount of gradient along section of stroke"); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs