fwgl-0.1.2.0: FWGL/Shader/Stages.hs
{-# LANGUAGE TypeOperators, DataKinds, GeneralizedNewtypeDeriving,
DeriveDataTypeable, RankNTypes, FlexibleContexts,
TypeFamilies, ConstraintKinds #-}
module FWGL.Shader.Stages (
VertexShader,
ValidVertex,
FragmentShader,
VertexShaderOutput(Vertex),
FragmentShaderOutput(Fragment)
) where
import Data.Typeable
import FWGL.Internal.TList
import FWGL.Shader.Language
import FWGL.Shader.Shader
-- | A 'Shader' with a 'VertexShaderOutput' output.
type VertexShader g i o = Shader g i (VertexShaderOutput ': o)
-- | A 'Shader' with only a 'FragmentShaderOutput' output.
type FragmentShader g i = Shader g i (FragmentShaderOutput ': '[])
-- | The condition for a valid 'VertexShader'.
type ValidVertex g i o = (Valid g i o, IsMember VertexShaderOutput o ~ False)
-- | The position of the vertex.
newtype VertexShaderOutput = Vertex V4 deriving (Typeable, ShaderType)
-- | The RGBA color of the fragment (1.0 = #FF).
newtype FragmentShaderOutput = Fragment V4 deriving (Typeable, ShaderType)