diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl index 0d5c76ad790..23f8e14600a 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl @@ -15,7 +15,7 @@ in vec3 vertexColor; #endif #ifdef EDGE_FIX -flat in vec2 ssPos[3]; +flat in vec4 ssPos[3]; #else in vec3 barycentric; #endif @@ -37,15 +37,15 @@ out vec4 FragColor; void distToEdgesAndPoints(out vec3 edges, out vec3 points) { #ifdef EDGE_FIX - vec2 e0 = normalize(ssPos[1] - ssPos[0] + 1e-8); - vec2 e1 = normalize(ssPos[2] - ssPos[1] + 1e-8); - vec2 e2 = normalize(ssPos[0] - ssPos[2] + 1e-8); + vec2 e0 = normalize(ssPos[1].xy - ssPos[0].xy + 1e-8); + vec2 e1 = normalize(ssPos[2].xy - ssPos[1].xy + 1e-8); + vec2 e2 = normalize(ssPos[0].xy - ssPos[2].xy + 1e-8); e0 = vec2(-e0.y, e0.x); e1 = vec2(-e1.y, e1.x); e2 = vec2(-e2.y, e2.x); - vec2 p0 = gl_FragCoord.xy - ssPos[0]; - vec2 p1 = gl_FragCoord.xy - ssPos[1]; - vec2 p2 = gl_FragCoord.xy - ssPos[2]; + vec2 p0 = gl_FragCoord.xy - ssPos[0].xy; + vec2 p1 = gl_FragCoord.xy - ssPos[1].xy; + vec2 p2 = gl_FragCoord.xy - ssPos[2].xy; edges.z = abs(dot(e0, p0)); edges.x = abs(dot(e1, p1)); edges.y = abs(dot(e2, p2)); diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl index 1a44e4a9e4f..135afffd04d 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl @@ -28,7 +28,7 @@ out float facing; #endif /* See fragment shader */ -flat out vec2 ssPos[3]; +flat out vec4 ssPos[3]; /* Some bugged AMD drivers need these global variables. See T55961 */ #ifdef VERTEX_SELECTION @@ -101,8 +101,8 @@ void main() #endif /* Edge / Vert data */ - ssPos[0] = ssPos[2] = pos[0]; - ssPos[1] = pos[1]; + ssPos[0].xy = ssPos[2].xy = pos[0]; + ssPos[1].xy = pos[1]; flag[0] = flag[2] = (vData[0].x << 8); flag[1] = (vData[1].x << 8); doVertex(0, pPos[0] + vec4( dirs1.zw, 0.0, 0.0)); diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl index fa2063a40a6..85fc0de54c0 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl @@ -28,7 +28,7 @@ flat out vec3 edgesBweight; flat out vec4 faceColor; flat out ivec3 flag; -flat out vec2 ssPos[3]; +flat out vec4 ssPos[3]; #ifdef VERTEX_SELECTION out vec3 vertexColor; #endif @@ -110,9 +110,9 @@ vec2 compute_fixvec(int i) vec2(-epsilon, epsilon), vec2( 0.0, -epsilon) ); - vec2 v1 = ssPos[i] + bias[i]; - vec2 v2 = ssPos[i1] + bias[i1]; - vec2 v3 = ssPos[i2] + bias[i2]; + vec2 v1 = ssPos[i].xy + bias[i]; + vec2 v2 = ssPos[i1].xy + bias[i1]; + vec2 v3 = ssPos[i2].xy + bias[i2]; /* Edge normalized vector */ vec2 dir = normalize(v2 - v1); vec2 dir2 = normalize(v3 - v1); @@ -148,9 +148,9 @@ void main() fcol = colorFace; /* Vertex */ - ssPos[0] = proj(pPos[0]); - ssPos[1] = proj(pPos[1]); - ssPos[2] = proj(pPos[2]); + ssPos[0].xy = proj(pPos[0]); + ssPos[1].xy = proj(pPos[1]); + ssPos[2].xy = proj(pPos[2]); #ifdef VERTEX_SELECTION vertex_color[0] = EDIT_MESH_vertex_color(vData[0].x).rgb;