     
     public var barycentric: Vector
     
-    public var position: Point
+    public var projection: Point
     
     public var facing: Double
     
     public var depth: Double
     
     @inlinable
-    init(vertex: Vertex, triangle: (Vertex.Position, Vertex.Position, Vertex.Position), barycentric: Vector, position: Point, facing: Double, depth: Double) {
+    init(vertex: Vertex, triangle: (Vertex.Position, Vertex.Position, Vertex.Position), barycentric: Vector, projection: Point, facing: Double, depth: Double) {
         self.vertex = vertex
         self.triangle = triangle
         self.barycentric = barycentric
-        self.position = position
+        self.projection = projection
         self.facing = facing
         self.depth = depth
     }
 }
 
+extension ImageContextRenderStageIn {
+    
+    @inlinable
+    public var position: Vertex.Position {
+        return vertex.position
+    }
+}
+
 extension ImageContextRenderStageIn where Vertex.Position == Vector {
     
     @inlinable

        let width = Double(self.width)
        let height = Double(self.height)
        
        render(triangles, position: { Point(x: (0.5 + 0.5 * $0.x) * width, y: (0.5 + 0.5 * $0.y) * height) }, depthFun: { ($0.z - projection.nearZ) / (projection.farZ - projection.nearZ) }, shader: { shader($0) })
    }
}


                        }
                        
                        depth_ptr.pointee = _depth
                        if let source = shader(ImageContextRenderStageIn(vertex: b, triangle: (_v0, _v1, _v2), barycentric: barycentric, projection: position, facing: facing, depth: _depth)) {
                            buf.blender.draw(color: source)
                        }
                        
                    } else if let source = shader(ImageContextRenderStageIn(vertex: b, triangle: (_v0, _v1, _v2), barycentric: barycentric, projection: position, facing: facing, depth: 0)) {
                        buf.blender.draw(color: source)
                    }
                }
