     for edge in cluster.edges
       line = edge.getLine3()
 
-      for edgeVertex in cameraAngle.projectPoints edge.vertices, plane, -0.5, -0.5
+      # Create edge vertices at double the density.
+      edgeVertices = []
+
+      for edgeVertex, index in edge.vertices
+        edgeVertices.push edgeVertex
+
+        if index < edge.vertices.length - 1
+          nextVertex = edge.vertices[index + 1]
+
+          edgeVertices.push
+            x: (edgeVertex.x + nextVertex.x) / 2
+            y: (edgeVertex.y + nextVertex.y) / 2
+
+      for edgeVertex in cameraAngle.projectPoints edgeVertices, plane, -0.5, -0.5
         line.closestPointToPoint edgeVertex, false, edgeVertex
 
         # Make sure this is not a duplicate of another edge point.

    plane = cluster.getPlane()
    horizon = cameraAngle.getHorizon plane.normal

    # Start with all cluster pixels.
    for pixelVertex in cameraAngle.projectPoints cluster.pixels, plane
      cluster.points.push
        vertex: pixelVertex
        type: LOI.Assets.Engine.Mesh.Cluster.PointTypes.Pixel

        # Use a factor to bring void point 0.5 pixels or more away from the horizon.
        factor = Math.min 1, distance - 0.5

        voidPixels.push
          x: pixel.x + direction.vector.x * factor
          y: pixel.y + direction.vector.y * factor

    voidPointsStart = cluster.points.length

