module Hylogen.Globals where
import Hylogen.Types
import Data.VectorSpace
vec2 :: (Show tc, ConstructFrom tc Vec2) => tc -> Vec2
vec2 = Vec2
vec3 :: (Show tc, ConstructFrom tc Vec3) => tc -> Vec3
vec3 = Vec3
vec4 :: (Show tc, ConstructFrom tc Vec4) => tc -> Vec4
vec4 = Vec4
inverseSqrt :: (HyloPrim a) => a -> a
inverseSqrt = vuop "inversesqrt"
fract :: (HyloPrim a) => a -> a
fract = vuop "fract"
floor_ :: (HyloPrim a) => a -> a
floor_ = vuop "floor"
ceil_ :: (HyloPrim a) => a -> a
ceil_ = vuop "ceil"
min_ :: (HyloPrim a) => a -> a -> a
min_ = vboppre "min"
max_:: (HyloPrim a) => a -> a -> a
max_ = vboppre "max"
clamp :: (HyloPrim a) => a -> a -> a -> a
clamp x y z = (z `min_` y) `max_` x
linexp :: (Floating a) => (a, a, a, a) -> a -> a
linexp (a, b, c, d) x = c * ((d / c) ** ((x a) / (b a)))
linlin :: (Floating a) => (a, a, a, a) -> a -> a
linlin (a, b, c, d) x = c + (d c) * ((x a) / (b a))
time :: Vec1
time = V1u "time"
uv :: Vec2
uv = V2u "uv()"
uvN :: Vec2
uvN = V2u "uvN"
resolution :: Vec2
resolution = V2u "resolution"
mouse :: Vec2
mouse = V2u "mouse"
audio :: Vec4
audio = V4u "audio"
backBuffer :: Texture
backBuffer = Tu "backBuffer"
mix :: Vec1 -> Vec4 -> Vec4 -> Vec4
mix p a b = p *^ a + (1 p) *^ b
true :: Booly
true = Bu "true"
false :: Booly
false = Bu "false"
eq :: (HyloPrim v) => v -> v -> Booly
eq = Bcomp "=="
neq :: (HyloPrim v) => v -> v -> Booly
neq = Bcomp "!="
lt :: (HyloPrim v) => v -> v -> Booly
lt = Bcomp "<"
gt :: (HyloPrim v) => v -> v -> Booly
gt = Bcomp ">"
leq :: (HyloPrim v) => v -> v -> Booly
leq = Bcomp "<="
geq :: (HyloPrim v) => v -> v -> Booly
geq = Bcomp ">="