[Bf-blender-cvs] [2ba41640727] greasepencil-object: GPencil: More changes to gradient factors
Antonioya
noreply at git.blender.org
Tue Mar 19 14:07:59 CET 2019
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");
More information about the Bf-blender-cvs
mailing list