Commit: 51db1be85827230b1ec24f799faeda43db4ead70
Author: Antonioya
Date:   Fri Mar 8 10:24:54 2019 +0100
Branches: greasepencil-object
https://developer.blender.org/rB51db1be85827230b1ec24f799faeda43db4ead70

GPencil: More test to textured strokes

Now, the UV is inverted by section (a full texture width) and not by point.

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

M       source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl

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

diff --git 
a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl 
b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl
index ac518c770a5..5cbeff1c7f5 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl
@@ -182,36 +182,40 @@ void main(void)
                EmitVertex();
        }
 
-       /* generate the triangle strip */
+       float uv_x1 = finaluvdata[1].x;
+       float uv_x2 = finaluvdata[2].x;
+       /* normalize UVs */
+       if (uv_x2 > 1.0) {
+               float d = ceil(uv_x2) - 1.0;
+               uv_x1 = uv_x1 - d;
+               uv_x2 = uv_x2 - d;
+       }
 
-       /* invert uv if random values */
-       int a, b;
-       if (finaluvdata[1].y <= 0.0) {
-                a = 1;
-                b = 2;
+       /* invert uv if random angle (angles equal to 0 keep unchanged) */
+       if ((finaluvdata[1].y > 0.0) || (finaluvdata[1].y < 0.25)) {
+               float t = uv_x2;
+               uv_x2 = uv_x1;
+               uv_x1 = t;
        }
-       else {
-                a = 2;
-                b = 1;
-       }       
        
+       /* generate the triangle strip */
        uvfac = vec2(0.0, 0.0);
-       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(0, 0) : 
vec2(finaluvdata[a].x, 0);
+       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(0, 0) : 
vec2(uv_x1, 0);
        mColor = finalColor[1];
        gl_Position = vec4((sp1 + length_a * miter_a) / Viewport, 
getZdepth(P1), 1.0);
        EmitVertex();
 
-       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(0, 1) : 
vec2(finaluvdata[a].x, 1);
+       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(0, 1) : 
vec2(uv_x1, 1);
        mColor = finalColor[1];
        gl_Position = vec4((sp1 - length_a * miter_a) / Viewport, 
getZdepth(P1), 1.0);
        EmitVertex();
 
-       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(1, 0) : 
vec2(finaluvdata[b].x, 0);
+       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(1, 0) : 
vec2(uv_x2, 0);
        mColor = finalColor[2];
        gl_Position = vec4((sp2 + length_b * miter_b) / Viewport, 
getZdepth(P2), 1.0);
        EmitVertex();
 
-       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(1, 1) : 
vec2(finaluvdata[b].x, 1);
+       mTexCoord = (color_type == GPENCIL_COLOR_SOLID) ? vec2(1, 1) : 
vec2(uv_x2, 1);
        mColor = finalColor[2];
        gl_Position = vec4((sp2 - length_b * miter_b) / Viewport, 
getZdepth(P2), 1.0);
        EmitVertex();

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

Reply via email to