summaryrefslogtreecommitdiff
path: root/testdata/Spiral.lc
blob: 2a90070e601e8e97e45f4e038c446535f8186d27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
vertices' = [V3 i 0.0 0.0  | i <- [(-5.0)..5.0] ]

lineVertexStream = fetchArrays ((concat [[v1, v2] | (v1, v2) <- pairs vertices']))

clear = FrameBuffer (DepthImage @1 1000, ColorImage @1 white)   -- ...

lines = LineCtx 1.0 LastVertex
colorFragmentCtx = accumulationContext (DepthOp Less True, ColorOp NoBlending (V4 True True True True))

m = Uniform "Mouse" :: Vec 2 Float

rasterizeWith = rasterizePrimitives

mapFragments2 s fs = accumulate colorFragmentCtx  ( \((a)) -> ((fs a))) s clear
transform s f =  mapPrimitives (\((p)) -> let v = v3FToV4F p in  (f v, v)) s

trans :: Vec 4 Float -> Vec 4 Float
trans (V4 i' _ _ _) = V4 (j * sin i) (j * cos i) (m%y * i) 1.0
   where i = 0.9 * i'
         j = exp ((m%x - 0.5) * i')

rotate' v = (Uniform "MVP" :: Mat 4 4 Float) *. v

main =             lineVertexStream         -- cube vertices
    `transform`    ((scale 0.5 . rotate') . trans)    -- scale them
     &             rasterizeWith lines ((Smooth))  -- rasterize
    `mapFragments2` id
     &             ScreenOut                --  draw into screen