summaryrefslogtreecommitdiff
path: root/testdata/reduce05.lc
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])