GPipe-Core-0.2.3.1: src/Graphics/GPipe/Shader.hs
-----------------------------------------------------------------------------
--
-- Module : Graphics.GPipe.Shader
-- Copyright : Tobias Bexelius
-- License : MIT
--
-- Maintainer : Tobias Bexelius
-- Stability : Experimental
-- Portability : Portable
--
-- |
-- A 'Shader' is a monad in which 'PrimitiveStream's and 'FragmentStream's live, together with samplers and uniform values. Any computations made on the streams and values in
-- the 'Shader' monad will be performed on the GPU. A 'Shader' needs to be compiled before it can be used. In order to make it work over different environments after it
-- has been compiled, it closes over an environment value just like a 'Reader' monad, with the distinction that there is no 'ask' action, since we cannot make the
-- actual monad operation depend on the environment.
--
-- A 'Shader' is an instance of 'Alternative' and 'MonadPlus' which makes it possible to express choice with functions like 'guard'. The left most alternative will always be the
-- resulting monad.
-----------------------------------------------------------------------------
module Graphics.GPipe.Shader (
-- * The Shader monad
Shader(),
compileShader,
CompiledShader,
-- * The Render monad
Render(),
render,
-- * Shader monad combinators
guard',
mapShader,
maybeShader,
chooseShader,
silenceShader
)
where
import Graphics.GPipe.Internal.Context
import Graphics.GPipe.Internal.Shader