/
Poop.hs
69 lines (59 loc) · 1.9 KB
/
Poop.hs
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
module Poop where
import Hylogen.WithHylide
rot :: Vec1 -> Vec2 -> Vec2
rot phi a = vec2 ( cos phi * (x_ a)
+ sin phi * (y_ a)
, (-1) * sin phi * (x_ a)
+ cos phi * (y_ a)
)
rep :: forall n. Veccable n => Vec n -> Vec n -> Vec n
rep c p = mod_ p c - 0.5 * c
mirrorX v = vec2 (abs (x_ v), y_ v)
mirrorY v = vec2 (x_ v, abs(y_ v))
-- v = cos (asin (y_ uvN / x_ uvN) * y_ audio))
-- v = cos (asin (y_ uvN / (sin $ x_ uvN * 10 * x_ audio) + y_ audio))
--
bar = toProgram (vec4 (r v, g v, b v, 0.01) + bb)
where
fun = negate . (tanh)
r = fun . (* (z_ bb))
g = fun .(* (x_ bb))
b = fun . (* (1) )
v = clamp 0 1 (cos (atan (y_ uvN' / (cos $ x_ uvN' * 20 * x_ audio)/y_ uvN + y_ audio))) - x_ audio
where
uvN' = uvN
& mirrorX
& mirrorY
& rot (sin ( y_ audio * 2.5) - y_ uvN)
bb = texture2D backBuffer (f uvN)
where
f = id
. (\v -> v * 0.5 + 0.5)
. (\v -> v ^* (1 + x_ audio * 2))
. (\v -> rot (w_ audio * 5.0 * len uvN) v)
. (\v -> v ^* 0.5)
. mirrorX
. mirrorY
-- . (\v -> v - mouse)
output = bar
-- foo = toProgram (vec4 (r v, g v, b v, 0.01) + bb)
-- where
-- fun = negate
-- r = (\x -> fun x * 1.0)
-- g = (\x -> fun x * 1.0)
-- b = (\x -> fun x * 1.0)
-- -- v = cos (asin (y_ uvN / x_ uvN) + time)
-- v = clamp 0 1 (cos (asin (y_ uvN / x_ uvN * y_ audio) / x_ uvN )) - x_ audio
-- bb = texture2D backBuffer (f uvN)
-- where
-- f = id
-- . (\v -> v * 0.5 + 0.5)
-- . (\v -> v ^* (1 + x_ audio))
-- . (\v -> rot (w_ audio + time) v)
-- . (\v -> v ^* 1.1)
-- . mirrorX
-- . mirrorY