summaryrefslogtreecommitdiff
path: root/testdata/HyperbolicParaboloic.lc
blob: 491bbc4e11b46df3d7ebebb9871b4ed603dc90e1 (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
lineVertexStream = fetchArrays Line $ concat $
        [[V3 i (-3.0) 0.0, V3 i 3.0 0.0]  | i <- [-3.0..3.0] ]
    ++  [[V3 (-3.0) i 0.0, V3 3.0 i 0.0]  | i <- [-3.0..3.0] ]

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 x y _ _) = V4 (t *! x) (0.5 *! m%x *! x*!y) (t *! y) 1.0
    where t = m%y

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

main =             lineVertexStream
    `transform`    ((scale 0.1 . rotate') . trans)
     &             rasterizeWith lines Smooth
    `mapFragments2` id
     &             ScreenOut