diff --git a/src/geom.glsl b/src/geom.glsl index 99eada4..1b68b16 100644 --- a/src/geom.glsl +++ b/src/geom.glsl @@ -8,36 +8,39 @@ out vec4 vColour; uniform vec4 uColour; uniform vec2 uScaleFact; +const float widthCoef = 1.0; +const float aaCoef = 1.5; + void main() { - vec2 n = normalize(gl_in[1].gl_Position.xy - gl_in[0].gl_Position.xy); - vec4 c = vec4(n.yx * vec2(1.0, -1.0) * uScaleFact, 0.0, 0.0); + vec4 from = gl_in[0].gl_Position; + vec4 to = gl_in[1].gl_Position; + vec2 normal = normalize(to.xy - from.xy); + vec4 tangent = vec4(normal.yx * vec2(1.0, -1.0) * uScaleFact, 0.0, 0.0); - const float width = 0.75; - const float fuzz = 2.0; + const float cumulCoef = widthCoef + aaCoef; + vec4 edgeColour = uColour * vec4(1.0, 1.0, 1.0, 0.0); - const float widthFuzz = width + fuzz; - - vColour = uColour * vec4(1.0, 1.0, 1.0, 0.0); - gl_Position = gl_in[0].gl_Position - c * widthFuzz; + vColour = edgeColour; + gl_Position = from - tangent * cumulCoef; EmitVertex(); - gl_Position = gl_in[1].gl_Position - c * widthFuzz; + gl_Position = to - tangent * cumulCoef; EmitVertex(); vColour = uColour; - gl_Position = gl_in[0].gl_Position - c * width; + gl_Position = from - tangent * widthCoef; EmitVertex(); - gl_Position = gl_in[1].gl_Position - c * width; + gl_Position = to - tangent * widthCoef; EmitVertex(); - gl_Position = gl_in[0].gl_Position + c * width; + gl_Position = from + tangent * widthCoef; EmitVertex(); - gl_Position = gl_in[1].gl_Position + c * width; + gl_Position = to + tangent * widthCoef; EmitVertex(); - vColour = uColour * vec4(1.0, 1.0, 1.0, 0.0); - gl_Position = gl_in[0].gl_Position + c * widthFuzz; + vColour = edgeColour; + gl_Position = from + tangent * cumulCoef; EmitVertex(); - gl_Position = gl_in[1].gl_Position + c * widthFuzz; + gl_Position = to + tangent * cumulCoef; EmitVertex(); }