clear = FrameBuffer $ ColorImage @1 $ V4 1 0 0 0.5 triangleRasterCtx = TriangleCtx CullNone PolygonFill NoOffset LastVertex colorFragmentCtx = accumulationContext (ColorOp NoBlending (V4 True True True True)) rasterizeWith = Rasterize triangles = triangleRasterCtx quadVertexStream = fetch "quad" Triangle (Attribute "position" :: Vec 4 Float) transform s f = Transform (\v -> VertexOut (f v) 1 () (Smooth v)) s mapFragments s fs = accumulate colorFragmentCtx PassAll (FragmentShader $ \a -> fs a) s clear render f = quadVertexStream -- id vertices `transform` id & rasterizeWith triangles -- rasterize `mapFragments` f & ScreenOut -- draw into screen main = render $ \(V4 r g b a) -> V4 0 0 b 1