lambdacube-edsl-0.2.0: LambdaCube 3D EDSL definition

Safe HaskellSafe-Inferred
LanguageHaskell2010

LambdaCube.Language.ReifyType

Synopsis

Documentation

data Red Source

Constructors

Red 

Instances

Eq Red 
Ord Red 
IsColorArity Red 
Typeable * Red 
IsTextureProjLod * * * Sampler2DShadow V4F Float 
IsTextureProjLod * * * Sampler1DShadow V4F Float 
IsTextureLod * * * Sampler1DArrayShadow V3F Float 
IsTextureLod * * * Sampler2DShadow V3F Float 
IsTextureLod * * * Sampler1DShadow V3F Float 
IsTextureProj * * * Sampler2DRectShadow V4F () 
IsTextureProj * * * Sampler2DShadow V4F Float 
IsTextureProj * * * Sampler1DShadow V4F Float 
IsTexture * * * Sampler2DRectShadow V3F () 
IsTexture * * * Sampler2DArrayShadow V4F () 
IsTexture * * * Sampler1DArrayShadow V3F Float 
IsTexture * * * SamplerCubeShadow V4F Float 
IsTexture * * * Sampler2DShadow V3F Float 
IsTexture * * * Sampler1DShadow V3F Float 
IsTextureSize * * * Sampler2DRectShadow () V2I 
IsTextureSize * * * Sampler2DArrayShadow Int32 V3I 
IsTextureSize * * * Sampler1DArrayShadow Int32 V2I 
IsTextureSize * * * SamplerCubeShadow Int32 V2I 
IsTextureSize * * * Sampler2DShadow Int32 V2I 
IsTextureSize * * * Sampler1DShadow Int32 Int32 
IsTextureProjGrad * * * * Sampler2DRectShadow V4F V2F V2F 
IsTextureProjGrad * * * * Sampler2DShadow V4F V2F V2F 
IsTextureProjGrad * * * * Sampler1DShadow V4F Float Float 
IsTextureGrad * * * * Sampler2DRectShadow V3F V2F V2F 
IsTextureGrad * * * * Sampler2DArrayShadow V4F V2F V2F 
IsTextureGrad * * * * Sampler1DArrayShadow V3F Float Float 
IsTextureGrad * * * * SamplerCubeShadow V4F V3F V3F 
IsTextureGrad * * * * Sampler2DShadow V3F V2F V2F 
IsTextureGrad * * * * Sampler1DShadow V3F Float Float 
IsTextureProjLodOffset * * * * Sampler2DShadow V4F Float V2F 
IsTextureProjLodOffset * * * * Sampler1DShadow V4F Float Int32 
IsTextureLodOffset * * * * Sampler1DArrayShadow V3F Float Int32 
IsTextureLodOffset * * * * Sampler2DShadow V3F Float V2I 
IsTextureLodOffset * * * * Sampler1DShadow V3F Float Int32 
IsTextureProjOffset * * * * Sampler2DRectShadow V4F V2I Float 
IsTextureProjOffset * * * * Sampler2DShadow V4F V2I Float 
IsTextureProjOffset * * * * Sampler1DShadow V4F Int32 Float 
IsTextureOffset * * * * Sampler2DRectShadow V3F V2I () 
IsTextureOffset * * * * Sampler1DArrayShadow V3F Int32 Float 
IsTextureOffset * * * * Sampler2DShadow V3F V2I Float 
IsTextureOffset * * * * Sampler1DShadow V3F Int32 Float 
IsTextureProjGradOffset * * * * * Sampler2DRectShadow V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * Sampler2DShadow V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * Sampler1DShadow V4F Float Float Int32 
IsTextureGradOffset * * * * * Sampler2DRectShadow V3F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler2DArrayShadow V4F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler1DArrayShadow V3F Float Float Int32 
IsTextureGradOffset * * * * * Sampler2DShadow V3F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler1DShadow V3F Float Float Int32 
type TexDataRepr Red (v a) = a 
type TexelRepr (Sampler dim arr (v t) Red) = t 

data RG Source

Constructors

RG 

Instances

Eq RG 
Ord RG 
IsColorArity RG 
Typeable * RG 
type TexDataRepr RG (v a) = V2 a 
type TexelRepr (Sampler dim arr (v t) RG) = V2 t 

data RGB Source

Constructors

RGB 

Instances

Eq RGB 
Ord RGB 
IsColorArity RGB 
Typeable * RGB 
type TexDataRepr RGB (v a) = V3 a 
type TexelRepr (Sampler dim arr (v t) RGB) = V3 t 

data RGBA Source

Constructors

RGBA 

Instances

Eq RGBA 
Ord RGBA 
IsColorArity RGBA 
Typeable * RGBA 
type TexDataRepr RGBA (v a) = V4 a 
type TexelRepr (Sampler dim arr (v t) RGBA) = V4 t 

data Sampler :: TextureShape -> TextureArray -> TextureSemantics * -> * -> * Source

Instances

IsTextureProjLod * * * Sampler2DShadow V4F Float 
IsTextureProjLod * * * Sampler1DShadow V4F Float 
IsTextureLod * * * Sampler1DArrayShadow V3F Float 
IsTextureLod * * * Sampler2DShadow V3F Float 
IsTextureLod * * * Sampler1DShadow V3F Float 
IsTextureProj * * * Sampler2DRectShadow V4F () 
IsTextureProj * * * Sampler2DShadow V4F Float 
IsTextureProj * * * Sampler1DShadow V4F Float 
IsTexture * * * Sampler2DRectShadow V3F () 
IsTexture * * * Sampler2DArrayShadow V4F () 
IsTexture * * * Sampler1DArrayShadow V3F Float 
IsTexture * * * SamplerCubeShadow V4F Float 
IsTexture * * * Sampler2DShadow V3F Float 
IsTexture * * * Sampler1DShadow V3F Float 
IsTextureSize * * * Sampler2DRectShadow () V2I 
IsTextureSize * * * Sampler2DArrayShadow Int32 V3I 
IsTextureSize * * * Sampler1DArrayShadow Int32 V2I 
IsTextureSize * * * SamplerCubeShadow Int32 V2I 
IsTextureSize * * * Sampler2DShadow Int32 V2I 
IsTextureSize * * * Sampler1DShadow Int32 Int32 
IsTextureProjGrad * * * * Sampler2DRectShadow V4F V2F V2F 
IsTextureProjGrad * * * * Sampler2DShadow V4F V2F V2F 
IsTextureProjGrad * * * * Sampler1DShadow V4F Float Float 
IsTextureGrad * * * * Sampler2DRectShadow V3F V2F V2F 
IsTextureGrad * * * * Sampler2DArrayShadow V4F V2F V2F 
IsTextureGrad * * * * Sampler1DArrayShadow V3F Float Float 
IsTextureGrad * * * * SamplerCubeShadow V4F V3F V3F 
IsTextureGrad * * * * Sampler2DShadow V3F V2F V2F 
IsTextureGrad * * * * Sampler1DShadow V3F Float Float 
IsTextureProjLodOffset * * * * Sampler2DShadow V4F Float V2F 
IsTextureProjLodOffset * * * * Sampler1DShadow V4F Float Int32 
IsTextureLodOffset * * * * Sampler1DArrayShadow V3F Float Int32 
IsTextureLodOffset * * * * Sampler2DShadow V3F Float V2I 
IsTextureLodOffset * * * * Sampler1DShadow V3F Float Int32 
IsTextureProjOffset * * * * Sampler2DRectShadow V4F V2I Float 
IsTextureProjOffset * * * * Sampler2DShadow V4F V2I Float 
IsTextureProjOffset * * * * Sampler1DShadow V4F Int32 Float 
IsTextureOffset * * * * Sampler2DRectShadow V3F V2I () 
IsTextureOffset * * * * Sampler1DArrayShadow V3F Int32 Float 
IsTextureOffset * * * * Sampler2DShadow V3F V2I Float 
IsTextureOffset * * * * Sampler1DShadow V3F Int32 Float 
IsTextureProjGradOffset * * * * * Sampler2DRectShadow V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * Sampler2DShadow V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * Sampler1DShadow V4F Float Float Int32 
IsTextureGradOffset * * * * * Sampler2DRectShadow V3F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler2DArrayShadow V4F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler1DArrayShadow V3F Float Float Int32 
IsTextureGradOffset * * * * * Sampler2DShadow V3F V2F V2F V2I 
IsTextureGradOffset * * * * * Sampler1DShadow V3F Float Float Int32 
IsTextureProjGradOffset * * * * * (Sampler2DRect t ar) V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * (Sampler2DRect t ar) V3F V2F V2F V2I 
IsTextureProjGradOffset * * * * * (Sampler3D t ar) V4F V3F V3F V3I 
IsTextureProjGradOffset * * * * * (Sampler2D t ar) V4F V2F V2F V2I 
IsTextureProjGradOffset * * * * * (Sampler2D t ar) V3F V2F V2F V2I 
IsTextureProjGradOffset * * * * * (Sampler1D t ar) V4F Float Float Int32 
IsTextureProjGradOffset * * * * * (Sampler1D t ar) V2F Float Float Int32 
IsTextureGradOffset * * * * * (Sampler2DRect t ar) V2F V2F V2F V2I 
IsTextureGradOffset * * * * * (Sampler2DArray t ar) V3F V2F V2F V2I 
IsTextureGradOffset * * * * * (Sampler1DArray t ar) V2F Float Float Int32 
IsTextureGradOffset * * * * * (Sampler3D t ar) V3F V3F V3F V3I 
IsTextureGradOffset * * * * * (Sampler2D t ar) V2F V2F V2F V2I 
IsTextureGradOffset * * * * * (Sampler1D t ar) Float Float Float Int32 
IsTextureProjGrad * * * * (Sampler2DRect t ar) V4F V2F V2F 
IsTextureProjGrad * * * * (Sampler2DRect t ar) V3F V2F V2F 
IsTextureProjGrad * * * * (Sampler3D t ar) V4F V3F V3F 
IsTextureProjGrad * * * * (Sampler2D t ar) V4F V2F V2F 
IsTextureProjGrad * * * * (Sampler2D t ar) V3F V2F V2F 
IsTextureProjGrad * * * * (Sampler1D t ar) V4F Float Float 
IsTextureProjGrad * * * * (Sampler1D t ar) V2F Float Float 
IsTextureGrad * * * * (Sampler2DRect t ar) V2F V2F V2F 
IsTextureGrad * * * * (Sampler2DArray t ar) V3F V2F V2F 
IsTextureGrad * * * * (Sampler1DArray t ar) V2F Float Float 
IsTextureGrad * * * * (SamplerCube t ar) V3F V3F V3F 
IsTextureGrad * * * * (Sampler3D t ar) V3F V3F V3F 
IsTextureGrad * * * * (Sampler2D t ar) V2F V2F V2F 
IsTextureGrad * * * * (Sampler1D t ar) Float Float Float 
IsTextureProjLodOffset * * * * (Sampler3D t ar) V4F Float V3I 
IsTextureProjLodOffset * * * * (Sampler2D t ar) V4F Float V2I 
IsTextureProjLodOffset * * * * (Sampler2D t ar) V3F Float V2I 
IsTextureProjLodOffset * * * * (Sampler1D t ar) V4F Float Int32 
IsTextureProjLodOffset * * * * (Sampler1D t ar) V2F Float Int32 
IsTextureLodOffset * * * * (Sampler2DArray t ar) V3F Float V2I 
IsTextureLodOffset * * * * (Sampler1DArray t ar) V2F Float Int32 
IsTextureLodOffset * * * * (Sampler3D t ar) V3F Float V3I 
IsTextureLodOffset * * * * (Sampler2D t ar) V2F Float V2I 
IsTextureLodOffset * * * * (Sampler1D t ar) Float Float Int32 
IsTextureProjOffset * * * * (Sampler2DRect t ar) V4F V2I () 
IsTextureProjOffset * * * * (Sampler2DRect t ar) V3F V2I () 
IsTextureProjOffset * * * * (Sampler3D t ar) V4F V3I Float 
IsTextureProjOffset * * * * (Sampler2D t ar) V4F V2I Float 
IsTextureProjOffset * * * * (Sampler2D t ar) V3F V2I Float 
IsTextureProjOffset * * * * (Sampler1D t ar) V4F Int32 Float 
IsTextureProjOffset * * * * (Sampler1D t ar) V2F Int32 Float 
IsTexelFetchOffset * * * * (Sampler2DRect t ar) V2I () V2I 
IsTexelFetchOffset * * * * (Sampler2DArray t ar) V3I Int32 V2I 
IsTexelFetchOffset * * * * (Sampler1DArray t ar) V2I Int32 Int32 
IsTexelFetchOffset * * * * (Sampler3D t ar) V3I Int32 V3I 
IsTexelFetchOffset * * * * (Sampler2D t ar) V2I Int32 V2I 
IsTexelFetchOffset * * * * (Sampler1D t ar) Int32 Int32 Int32 
IsTextureOffset * * * * (Sampler2DRect t ar) V2F V2I () 
IsTextureOffset * * * * (Sampler2DArray t ar) V3F V2I Float 
IsTextureOffset * * * * (Sampler1DArray t ar) V2F Int32 Float 
IsTextureOffset * * * * (Sampler3D t ar) V3F V3I Float 
IsTextureOffset * * * * (Sampler2D t ar) V2F V2I Float 
IsTextureOffset * * * * (Sampler1D t ar) Float Int32 Float 
IsTextureProjLod * * * (Sampler3D t ar) V4F Float 
IsTextureProjLod * * * (Sampler2D t ar) V4F Float 
IsTextureProjLod * * * (Sampler2D t ar) V3F Float 
IsTextureProjLod * * * (Sampler1D t ar) V4F Float 
IsTextureProjLod * * * (Sampler1D t ar) V2F Float 
IsTexelFetch * * * (SamplerBuffer t ar) Int32 () 
IsTexelFetch * * * (Sampler2DMSArray t ar) V3I Int32 
IsTexelFetch * * * (Sampler2DMS t ar) V2I Int32 
IsTexelFetch * * * (Sampler2DRect t ar) V2I () 
IsTexelFetch * * * (Sampler2DArray t ar) V3I Int32 
IsTexelFetch * * * (Sampler1DArray t ar) V2I Int32 
IsTexelFetch * * * (Sampler3D t ar) V3I Int32 
IsTexelFetch * * * (Sampler2D t ar) V2I Int32 
IsTexelFetch * * * (Sampler1D t ar) Int32 Int32 
IsTextureLod * * * (Sampler2DArray t ar) V3F Float 
IsTextureLod * * * (Sampler1DArray t ar) V2F Float 
IsTextureLod * * * (SamplerCube t ar) V3F Float 
IsTextureLod * * * (Sampler3D t ar) V3F Float 
IsTextureLod * * * (Sampler2D t ar) V2F Float 
IsTextureLod * * * (Sampler1D t ar) Float Float 
IsTextureProj * * * (Sampler2DRect t ar) V4F () 
IsTextureProj * * * (Sampler2DRect t ar) V3F () 
IsTextureProj * * * (Sampler3D t ar) V4F Float 
IsTextureProj * * * (Sampler2D t ar) V4F Float 
IsTextureProj * * * (Sampler2D t ar) V3F Float 
IsTextureProj * * * (Sampler1D t ar) V4F Float 
IsTextureProj * * * (Sampler1D t ar) V2F Float 
IsTexture * * * (Sampler2DRect t ar) V2F () 
IsTexture * * * (Sampler2DArray t ar) V3F Float 
IsTexture * * * (Sampler1DArray t ar) V2F Float 
IsTexture * * * (SamplerCube t ar) V3F Float 
IsTexture * * * (Sampler3D t ar) V3F Float 
IsTexture * * * (Sampler2D t ar) V2F Float 
IsTexture * * * (Sampler1D t ar) Float Float 
IsTextureSize * * * (SamplerBuffer t ar) () Int32 
IsTextureSize * * * (Sampler2DMSArray t ar) () V3I 
IsTextureSize * * * (Sampler2DMS t ar) () V2I 
IsTextureSize * * * (Sampler2DRect t ar) () V2I 
IsTextureSize * * * (Sampler2DArray t ar) Int32 V3I 
IsTextureSize * * * (Sampler1DArray t ar) Int32 V2I 
IsTextureSize * * * (SamplerCube t ar) Int32 V2I 
IsTextureSize * * * (Sampler3D t ar) Int32 V3I 
IsTextureSize * * * (Sampler2D t ar) Int32 V2I 
IsTextureSize * * * (Sampler1D t ar) Int32 Int32 
Typeable (TextureShape -> TextureArray -> TextureSemantics * -> * -> *) Sampler 
Show (Sampler dim layerCount t ar) 
Typeable * a => GPU (Sampler TexRect SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Int) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Word) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Int) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Word) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Int) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Word) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Word) a) 
type EltRepr' (Sampler dim sh t ar) = Sampler dim sh t ar 
type EltRepr (Sampler dim sh t ar) = ((), Sampler dim sh t ar) 
type TexelRepr (Sampler dim arr (v t) RGBA) = V4 t 
type TexelRepr (Sampler dim arr (v t) RGB) = V3 t 
type TexelRepr (Sampler dim arr (v t) RG) = V2 t 
type TexelRepr (Sampler dim arr (v t) Red) = t 

class GPU a => IsScalar a where Source

Methods

toValue :: a -> Value Source

toType :: a -> InputType Source

Instances

IsScalar Bool 
IsScalar Float 
IsScalar Int32 
IsScalar Word32 
IsScalar M22F 
IsScalar M23F 
IsScalar M24F 
IsScalar M32F 
IsScalar M33F 
IsScalar M34F 
IsScalar M42F 
IsScalar M43F 
IsScalar M44F 
IsScalar V2F 
IsScalar V3F 
IsScalar V4F 
IsScalar V2I 
IsScalar V3I 
IsScalar V4I 
IsScalar V2U 
IsScalar V3U 
IsScalar V4U 
IsScalar V2B 
IsScalar V3B 
IsScalar V4B 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler TexRect SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex3D SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D CubeTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (MultiSample * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D ArrayTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (MultiSample * Word) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex2D SingleTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D ArrayTex (Regular * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Buffer * Word) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Shadow * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Float) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Int) a) 
Typeable * a => IsScalar (Sampler Tex1D SingleTex (Regular * Word) a) 

class (Show a, Typeable a) => GPU a where Source

Methods

tupleType :: a -> Ty Source

Instances

GPU Bool 
GPU Float 
GPU Int32 
GPU Word32 
GPU () 
GPU M22F 
GPU M23F 
GPU M24F 
GPU M32F 
GPU M33F 
GPU M34F 
GPU M42F 
GPU M43F 
GPU M44F 
GPU V2F 
GPU V3F 
GPU V4F 
GPU V2I 
GPU V3I 
GPU V4I 
GPU V2U 
GPU V3U 
GPU V4U 
GPU V2B 
GPU V3B 
GPU V4B 
(GPU a, GPU b) => GPU (a, b) 
(GPU a, GPU b, GPU c) => GPU (a, b, c) 
(GPU a, GPU b, GPU c, GPU d) => GPU (a, b, c, d) 
Typeable * a => GPU (Sampler TexRect SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler TexRect SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex3D SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D CubeTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Int) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (MultiSample * Word) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D ArrayTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Int) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (MultiSample * Word) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex2D SingleTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex1D ArrayTex (Regular * Word) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Int) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Buffer * Word) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Shadow * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Float) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Int) a) 
Typeable * a => GPU (Sampler Tex1D SingleTex (Regular * Word) a) 
(GPU a, GPU b, GPU c, GPU d, GPU e) => GPU (a, b, c, d, e) 
(GPU a, GPU b, GPU c, GPU d, GPU e, GPU f) => GPU (a, b, c, d, e, f) 
(GPU a, GPU b, GPU c, GPU d, GPU e, GPU f, GPU g) => GPU (a, b, c, d, e, f, g) 
(GPU a, GPU b, GPU c, GPU d, GPU e, GPU f, GPU g, GPU h) => GPU (a, b, c, d, e, f, g, h) 
(GPU a, GPU b, GPU c, GPU d, GPU e, GPU f, GPU g, GPU h, GPU i) => GPU (a, b, c, d, e, f, g, h, i) 

class GPU a => SGPU a Source

Instances

SGPU Float 
SGPU Int32 
SGPU Word32 
SGPU M22F 
SGPU M23F 
SGPU M24F 
SGPU M32F 
SGPU M33F 
SGPU M34F 
SGPU M42F 
SGPU M43F 
SGPU M44F 
SGPU V2F 
SGPU V3F 
SGPU V4F 
SGPU V2I 
SGPU V3I 
SGPU V4I 
SGPU V2U 
SGPU V3U 
SGPU V4U 
(SGPU a, SGPU b) => SGPU (a, b) 
(SGPU a, SGPU b, SGPU c) => SGPU (a, b, c) 
(SGPU a, SGPU b, SGPU c, SGPU d) => SGPU (a, b, c, d) 
(SGPU a, SGPU b, SGPU c, SGPU d, SGPU e) => SGPU (a, b, c, d, e) 
(SGPU a, SGPU b, SGPU c, SGPU d, SGPU e, SGPU f) => SGPU (a, b, c, d, e, f) 
(SGPU a, SGPU b, SGPU c, SGPU d, SGPU e, SGPU f, SGPU g) => SGPU (a, b, c, d, e, f, g) 
(SGPU a, SGPU b, SGPU c, SGPU d, SGPU e, SGPU f, SGPU g, SGPU h) => SGPU (a, b, c, d, e, f, g, h) 
(SGPU a, SGPU b, SGPU c, SGPU d, SGPU e, SGPU f, SGPU g, SGPU h, SGPU i) => SGPU (a, b, c, d, e, f, g, h, i) 

type family EltRepr a :: * Source

Instances

type EltRepr Bool = ((), Bool) 
type EltRepr Float = ((), Float) 
type EltRepr Int32 = ((), Int32) 
type EltRepr Word32 = ((), Word32) 
type EltRepr () = () 
type EltRepr M22F = ((), M22F) 
type EltRepr M23F = ((), M23F) 
type EltRepr M24F = ((), M24F) 
type EltRepr M32F = ((), M32F) 
type EltRepr M33F = ((), M33F) 
type EltRepr M34F = ((), M34F) 
type EltRepr M42F = ((), M42F) 
type EltRepr M43F = ((), M43F) 
type EltRepr M44F = ((), M44F) 
type EltRepr V2F = ((), V2F) 
type EltRepr V3F = ((), V3F) 
type EltRepr V4F = ((), V4F) 
type EltRepr V2I = ((), V2I) 
type EltRepr V3I = ((), V3I) 
type EltRepr V4I = ((), V4I) 
type EltRepr V2U = ((), V2U) 
type EltRepr V3U = ((), V3U) 
type EltRepr V4U = ((), V4U) 
type EltRepr V2B = ((), V2B) 
type EltRepr V3B = ((), V3B) 
type EltRepr V4B = ((), V4B) 
type EltRepr (a, b) = (EltRepr a, EltRepr' b) 
type EltRepr (a, b, c) = (EltRepr (a, b), EltRepr' c) 
type EltRepr (a, b, c, d) = (EltRepr (a, b, c), EltRepr' d) 
type EltRepr (Sampler dim sh t ar) = ((), Sampler dim sh t ar) 
type EltRepr (a, b, c, d, e) = (EltRepr (a, b, c, d), EltRepr' e) 
type EltRepr (a, b, c, d, e, f) = (EltRepr (a, b, c, d, e), EltRepr' f) 
type EltRepr (a, b, c, d, e, f, g) = (EltRepr (a, b, c, d, e, f), EltRepr' g) 
type EltRepr (a, b, c, d, e, f, g, h) = (EltRepr (a, b, c, d, e, f, g), EltRepr' h) 
type EltRepr (a, b, c, d, e, f, g, h, i) = (EltRepr (a, b, c, d, e, f, g, h), EltRepr' i) 

type family EltRepr' a :: * Source

Instances

type EltRepr' Bool = Bool 
type EltRepr' Float = Float 
type EltRepr' Int32 = Int32 
type EltRepr' Word32 = Word32 
type EltRepr' () = () 
type EltRepr' M22F = M22F 
type EltRepr' M23F = M23F 
type EltRepr' M24F = M24F 
type EltRepr' M32F = M32F 
type EltRepr' M33F = M33F 
type EltRepr' M34F = M34F 
type EltRepr' M42F = M42F 
type EltRepr' M43F = M43F 
type EltRepr' M44F = M44F 
type EltRepr' V2F = V2F 
type EltRepr' V3F = V3F 
type EltRepr' V4F = V4F 
type EltRepr' V2I = V2I 
type EltRepr' V3I = V3I 
type EltRepr' V4I = V4I 
type EltRepr' V2U = V2U 
type EltRepr' V3U = V3U 
type EltRepr' V4U = V4U 
type EltRepr' V2B = V2B 
type EltRepr' V3B = V3B 
type EltRepr' V4B = V4B 
type EltRepr' (a, b) = (EltRepr a, EltRepr' b) 
type EltRepr' (a, b, c) = (EltRepr (a, b), EltRepr' c) 
type EltRepr' (a, b, c, d) = (EltRepr (a, b, c), EltRepr' d) 
type EltRepr' (Sampler dim sh t ar) = Sampler dim sh t ar 
type EltRepr' (a, b, c, d, e) = (EltRepr (a, b, c, d), EltRepr' e) 
type EltRepr' (a, b, c, d, e, f) = (EltRepr (a, b, c, d, e), EltRepr' f) 
type EltRepr' (a, b, c, d, e, f, g) = (EltRepr (a, b, c, d, e, f), EltRepr' g) 
type EltRepr' (a, b, c, d, e, f, g, h) = (EltRepr (a, b, c, d, e, f, g), EltRepr' h) 
type EltRepr' (a, b, c, d, e, f, g, h, i) = (EltRepr (a, b, c, d, e, f, g, h), EltRepr' i) 

class IsTuple tup Source

Conversion between surface n-tuples and our tuple representation.

our language uses nested tuple representation

Associated Types

type TupleRepr tup Source

Instances

IsTuple * () 
IsTuple * (a, b) 
IsTuple * (a, b, c) 
IsTuple * (a, b, c, d) 
IsTuple * (a, b, c, d, e) 
IsTuple * (a, b, c, d, e, f) 
IsTuple * (a, b, c, d, e, f, g) 
IsTuple * (a, b, c, d, e, f, g, h) 
IsTuple * (a, b, c, d, e, f, g, h, i) 

data Tuple c t where Source

We represent tuples as heterogenous lists, typed by a type list.

Constructors

NilTup :: Tuple c () 
SnocTup :: GPU t => Tuple c s -> c t -> Tuple c (s, t) 

data TupleIdx t e where Source

Type-safe projection indicies for tuples.

NB: We index tuples by starting to count from the *right*!

Constructors

ZeroTupIdx :: GPU s => TupleIdx (t, s) s 
SuccTupIdx :: TupleIdx t e -> TupleIdx (t, s) e 

tix0 :: GPU s => TupleIdx (t, s) s Source

tix1 :: GPU s => TupleIdx ((t, s), s1) s Source

tix2 :: GPU s => TupleIdx (((t, s), s1), s2) s Source

tix3 :: GPU s => TupleIdx ((((t, s), s1), s2), s3) s Source

tix4 :: GPU s => TupleIdx (((((t, s), s1), s2), s3), s4) s Source

tix5 :: GPU s => TupleIdx ((((((t, s), s1), s2), s3), s4), s5) s Source

tix6 :: GPU s => TupleIdx (((((((t, s), s1), s2), s3), s4), s5), s6) s Source

tix7 :: GPU s => TupleIdx ((((((((t, s), s1), s2), s3), s4), s5), s6), s7) s Source

tix8 :: GPU s => TupleIdx (((((((((t, s), s1), s2), s3), s4), s5), s6), s7), s8) s Source