{-# LANGUAGE FlexibleContexts, RankNTypes #-} module FWGL.Shader ( Shader, VertexShader, FragmentShader, Typeable, AllTypeable, ShaderType, UniformCPU, AttributeCPU, Float, Sampler2D, V2(..), V3(..), V4(..), M2(..), M3(..), M4(..), CFloat, CSampler2D, CV2, CV3, CV4, CM2, CM3, CM4, negate, fromInteger, fromRational, (*), (/), (+), (-), (^), (&&), (||), (==), (>=), (<=), (<), (>), abs, sign, sqrt, texture2D, (>>=), (>>), fail, return, get, global, put, putVertex, putFragment, (.), id, const, flip, ($) ) where import Data.Typeable (Typeable) import qualified FWGL.Internal.GL as CPU import FWGL.Shader.CPU (UniformCPU, AttributeCPU) import FWGL.Shader.Language import FWGL.Shader.Monad hiding (Shader) import FWGL.Shader.Stages import qualified FWGL.Vector as CPU import Prelude ((.), id, const, flip, ($)) import qualified Prelude as CPU type Shader g i o a = PartialShader g i o a type CFloat = CPU.Float type CSampler2D = CPU.ActiveTexture type CV2 = CPU.V2 type CV3 = CPU.V3 type CV4 = CPU.V4 type CM2 = CPU.M2 type CM3 = CPU.M3 type CM4 = CPU.M4