{-# LANGUAGE DataKinds #-} {-# LANGUAGE ExplicitForAll #-} {-# LANGUAGE ExtendedDefaultRules #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoMonoLocalBinds #-} {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} module Hylogen ( module Hylogen , module Hylogen.Types , module Hylogen.Globals ) where import Data.Monoid import Hylogen.Types import Hylogen.Globals toGLSL :: Vec4 -> String toGLSL x = unlines $ [ boiler , "void main() {" , " gl_FragColor = " <> show x <> ";" , "}" ] where boiler = unlines $ [ "precision mediump float;" , "uniform float time;" , "uniform vec3 mouse;" , "const float PI = 3.141592653589793238462643383; " , "varying vec3 uv;" ]