         let height = Double(self.height)
         
         @inline(__always)
-        func _position(_ v: Vector) -> Point {
+        func _projection(_ v: Vector) -> Point {
             let p = v * projection
             return Point(x: (0.5 + 0.5 * p.x) * width, y: (0.5 + 0.5 * p.y) * height)
         }
         
-        render(_PerspectiveProjectTriangleGenerator(base: triangles), position: _position, depthFun: { ($0.z - projection.nearZ) / (projection.farZ - projection.nearZ) }, shader: { shader(ImageContextRenderStageIn($0)) })
+        render(_PerspectiveProjectTriangleGenerator(base: triangles), projection: _projection, depthFun: { ($0.z - projection.nearZ) / (projection.farZ - projection.nearZ) }, shader: { shader(ImageContextRenderStageIn($0)) })
     }
 }
 

    }
    
    @inlinable
    func render(position: (Vertex.Position) -> Point, _ body: (Vertex, Vertex, Vertex) -> Void) {
        base.forEach(body)
    }
}

    
    @inlinable
    public func bind<S>(_ shader: S) -> ImageContextRenderPipeline<Self, S> {
        return ImageContextRenderPipeline(generator: self, shader: shader)
    }
}

extension Sequence where Self : ImageContextRenderTriangleGenerator, Element : ImageContextRenderTriangleGenerator, Element.Vertex == Self.Vertex {
    
    @inlinable
    public func render(projection: (Vertex.Position) -> Point, _ body: (Vertex, Vertex, Vertex) -> Void) {
        self.forEach { $0.render(projection: projection, body) }
    }
}

