ot(u_transform[0], u_transform[0]), dot(u_transform[1], u_transform[1])); vec2 invScale = u_aa * inversesqrt(scale + 1.0e-6); scale *= invScale; vec2 extrude = a_vertex.xy + invScale * (2.0 * a_vertex.xy - 1.0); vec2 vertex = u_transform[0] * extrude.x + u_transform[1] * extrude.y + u_transform[2]; gl_Position = vec4(vertex * 2.0 / u_viewport - 1.0, 0.0, 1.0); v_cliptc = vertex / u_viewport; v_clipdist = vec4(vertex - u_clipbounds.xy, u_clipbounds.zw - vertex); float noAA = 1.0 - u_aa; v_dist = vec4(extrude, 1.0 - extrude) * scale.xyxy + 0.5 + noAA; v_alpha = min(a_vertex.z, min(scale.x, 1.0) * min(scale.y, 1.0) + noAA); }