hylogen-0.1.2.2: src/Hylogen/WithHylide/Core.hs
module Hylogen.WithHylide.Core where
import Data.Monoid
import Hylogen
import Hylogen.Expr
import Hylogen.Program (toProgram)
osc1 :: Vec1
osc1 = uniform "osc1"
osc2 :: Vec1
osc2 = uniform "osc2"
osc3 :: Vec1
osc3 = uniform "osc3"
osc4 :: Vec1
osc4 = uniform "osc4"
osc5 :: Vec1
osc5 = uniform "osc5"
osc6 :: Vec1
osc6 = uniform "osc6"
osc7 :: Vec1
osc7 = uniform "osc7"
osc8 :: Vec1
osc8 = uniform "osc8"
-- | Pixel coordinates
--
-- (0, 0) is the lower left corner
--
-- (1, 1) is the upper right corner
uv :: Vec2
uv = uniform "uv()"
-- | Pixel coordinates
--
-- (0, 0) is the center of the screen
--
-- (1, 1) is the upper right corner
uvN :: Vec2
uvN = uniform "uvN"
-- | Time in milliseconds since start of Hylide
time :: Vec1
time = uniform "time"
-- | Resolution of the screen
resolution :: Vec2
resolution = uniform "resolution"
-- | Mouse position
mouse :: Vec2
mouse = uniform "mouse"
-- | Intensity of audio input, split into 4 bands
--
-- low, low-mid, mid, high
audio :: Vec4
audio = uniform "audio"
-- | The last rendered frame
backBuffer :: Texture
backBuffer = uniform "backBuffer"
channel1 :: Texture
channel1 = uniform "channel1"
-- | Writes GLSL
--
-- No sharing
toGLSL' :: Vec4 -> String
toGLSL' v = unlines [ "void main() {"
, " gl_FragColor = " <> show v <> ";"
, "}"
]
-- | Writes GLSL
--
-- Sharing via Data.reify
toGLSL :: Vec4 -> String
toGLSL = show . toProgram . toMono