blob: bf80d155d91392285f29d7abe986423da22d301f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
data AB = A | B
render fb choice = let
rasterCtx = TriangleCtx CullNone PolygonFill NoOffset LastVertex
mask = case choice of
A -> V4 False True False False
B -> V4 True False False False
fragmentCtx = accumulationContext (ColorOp NoBlending mask)
vertexShader = \v -> (v, v)
vertexStream = fetch "stream4" Triangle (Attribute "position4" :: Vec 4 Float)
primitiveStream = mapPrimitives vertexShader vertexStream
fragmentStream = rasterizePrimitives rasterCtx Smooth primitiveStream
fragmentShader = \v -> case choice of
A -> V4 0.0 1.0 0.0 1.0
B -> V4 1.0 0.0 0.0 1.0
frame = accumulate fragmentCtx fragmentShader fragmentStream fb
in frame
emptyFB = FrameBuffer (colorImage1 (V4 0.0 0.0 1.0 1.0))
main = ScreenOut (foldl' render emptyFB [A,B])
|