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" (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