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