GPipe-1.1.7: A functional graphics API for programmable GPUsSource codeContentsIndex
Graphics.GPipe.Stream
Contents
Common classes
Reexports
Description

A GPipe program mainly consits of creating and manipulating streams of primitives and fragments. The modules Graphics.GPipe.Stream.Primitive and Graphics.GPipe.Stream.Fragment defines those streams.

All atomic values except textures in streams uses the Vertex or Fragment type constructors. Composite types are created by composing the atomic Vertex or Fragment types, rather than wrapping the composite type in any of those type constructors. This module provides the common classes for those atomic types, as well as reexports of imported common types and modules.

Synopsis
class GPU a where
type CPU a
toGPU :: CPU a -> a
class (Ord a, Floating a) => Real' a where
rsqrt :: a -> a
exp2 :: a -> a
log2 :: a -> a
floor' :: a -> a
ceiling' :: a -> a
fract' :: a -> a
mod' :: a -> a -> a
clamp :: a -> a -> a -> a
saturate :: a -> a
mix :: a -> a -> a -> a
step :: a -> a -> a
smoothstep :: a -> a -> a -> a
class Convert a where
type ConvertFloat a
type ConvertInt a
toFloat :: a -> ConvertFloat a
toInt :: a -> ConvertInt a
data a :. b = !a :. !b
type Vec2 a = :. a (:. a ())
type Vec3 a = :. a (Vec2 a)
type Vec4 a = :. a (Vec3 a)
module Data.Vec.LinAlg
module Data.Boolean
Common classes
class GPU a whereSource
Denotes a type on the GPU, that can be moved there from the CPU (through the internal use of uniforms). Use the existing instances of this class to create new ones. Note that toGPU should not be strict on its argument. Its definition should also always use the same series of toGPU calls to convert values of the same type. This unfortunatly rules out ordinary lists (but instances for fixed length lists from the Vec package are however provided).
Associated Types
type CPU a Source
The type on the CPU.
Methods
toGPU :: CPU a -> aSource
Converts a value from the CPU to the GPU.
show/hide Instances
GPU ()
GPU (Fragment Bool)
GPU (Fragment Float)
GPU (Fragment Int)
GPU (Vertex Bool)
GPU (Vertex Float)
GPU (Vertex Int)
(GPU a, GPU b) => GPU (a, b)
(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)
class (Ord a, Floating a) => Real' a whereSource
This class provides the GPU functions either not found in Prelude's numerical classes, or that has wrong types. Instances are also provided for normal Floats and Doubles. Minimal complete definition: floor' and ceiling'.
Methods
rsqrt :: a -> aSource
exp2 :: a -> aSource
log2 :: a -> aSource
floor' :: a -> aSource
ceiling' :: a -> aSource
fract' :: a -> aSource
mod' :: a -> a -> aSource
clamp :: a -> a -> a -> aSource
saturate :: a -> aSource
mix :: a -> a -> a -> aSource
step :: a -> a -> aSource
smoothstep :: a -> a -> a -> aSource
show/hide Instances
class Convert a whereSource
Provides a common way to convert numeric types to integer and floating point representations.
Associated Types
type ConvertFloat a Source
type ConvertInt a Source
Methods
toFloat :: a -> ConvertFloat aSource
Convert to a floating point number.
toInt :: a -> ConvertInt aSource
Convert to an integral number, using truncation if necessary.
show/hide Instances
Reexports
data a :. b Source
The vector constructor. (:.) for vectors is like (:) for lists, and () takes the place of []. (The list of instances here is not meant to be readable.)
Constructors
!a :. !b
show/hide Instances
ZipWith a b c (:. a ()) (:. b ()) (:. c ())
ZipWith a b c (:. a ()) (:. b (:. b bs)) (:. c ())
ZipWith a b c (:. a (:. a as)) (:. b ()) (:. c ())
ZipWith a b c (:. a' u) (:. b' v) (:. c' w) => ZipWith a b c (:. a (:. a' u)) (:. b (:. b' v)) (:. c (:. c' w))
Vec N1 a (:. a ())
Access N0 a (:. a v)
Snoc () a (:. a ())
(Access n a r, Append p (:. a ()) p', GetDiagonal' (Succ n) p' (:. r m) v) => GetDiagonal' n p (:. r (:. r m)) v
(Access n a r, Append p (:. a ()) (:. a p)) => GetDiagonal' n p (:. r ()) (:. a p)
(Append p (:. a v) x, Append p (:. a ()) y, ReplConsec' a y v z) => ReplConsec' a p (:. a v) (:. x z)
Map a b (:. a ()) (:. b ())
Map a b (:. a' u) (:. b' v) => Map a b (:. a (:. a' u)) (:. b (:. b' v))
(VecArrayRW (:. a v), PackedVec (:. a v)) => IArray UArray (Packed (:. a v))
(IfB bool a, IfB bool b) => IfB bool (:. a b)
(EqB bool a, EqB bool b) => EqB bool (:. a b)
(Fractional a, NearZero a) => Pivot1 a (:. (:. a ()) ())
(Fractional a, NearZero a, Map a a (:. a r) (:. a r)) => Pivot1 a (:. (:. a (:. a r)) ())
(Fractional a, NearZero a, Map a a (:. a r) (:. a r), ZipWith a a a (:. a r) (:. a r) (:. a r), Map (:. a r) (:. a r) (:. (:. a r) rs) (:. (:. a r) rs), Pivot1 a (:. (:. a r) rs)) => Pivot1 a (:. (:. a r) (:. (:. a r) rs))
Pivot a (:. () v)
(Fractional a, NearZero a, Pivot1 a rs, Tail (:. a r) r, Map (:. a r) r (:. (:. a r) rs) (:. r rs'), Map r (:. a r) (:. r rs') (:. (:. a r) rs), Pivot1 a (:. (:. a r) rs), Pivot a (:. r rs')) => Pivot a (:. (:. a r) rs)
(Num a, Pivot a (:. r ())) => GaussElim a (:. r ())
(Fractional a, Map (:. a r) r (:. (:. a r) rs) rs_, Map r (:. a r) rs_ (:. (:. a r) rs), Pivot a (:. (:. a r) (:. (:. a r) rs)), GaussElim a rs_) => GaussElim a (:. (:. a r) (:. (:. a r) rs))
VecList a (:. a ())
VecList a (:. a' v) => VecList a (:. a (:. a' v))
VecArrayRW (:. a v) => IArray UArray (:. a v)
Reverse' (:. a p) v v' => Reverse' p (:. a v) v'
(SetDiagonal' (Succ n) v m, Access n a r) => SetDiagonal' n (:. a v) (:. r m)
DropConsec' p (:. a ()) (:. p ())
(Append p (:. a v) x, Append p (:. a ()) y, DropConsec' y (:. a v) z) => DropConsec' p (:. a (:. a v)) (:. x z)
Vec (Succ n) a (:. a' v) => Vec (Succ (Succ n)) a (:. a (:. a' v))
Access n a v => Access (Succ n) a (:. a v)
(VecArrayRW (:. a v), PackedVec (:. a v)) => MArray (STUArray s) (Packed (:. a v)) (ST s)
Drop n (:. a v) v' => Drop (Succ n) (:. a (:. a v)) v'
VecArrayRW (:. a v) => MArray (STUArray s) (:. a v) (ST s)
Take n v v' => Take (Succ n) (:. a v) (:. a v')
(Eq a, Eq b) => Eq (:. a b)
(Fractional a, Ord (:. a u), ZipWith a a a (:. a u) (:. a u) (:. a u), Map a a (:. a u) (:. a u), Vec (Succ l) a (:. a u), Show (:. a u)) => Fractional (:. a u)
(Eq (:. a u), Show (:. a u), Num a, Map a a (:. a u) (:. a u), ZipWith a a a (:. a u) (:. a u) (:. a u), Vec (Succ l) a (:. a u)) => Num (:. a u)
(Ord a, Ord b) => Ord (:. a b)
(Read a, Read b) => Read (:. a b)
(Show a, ShowVec v) => Show (:. a v)
Arbitrary a => Arbitrary (:. a ())
(Length (:. a v) (Succ n), Arbitrary a', Arbitrary (:. a v)) => Arbitrary (:. a' (:. a v))
(Num a, NegateEvens v) => NegateOdds (:. a v)
(Num a, NegateOdds v) => NegateEvens (:. a v)
BackSubstitute (:. (:. a r) ())
(Map (:. a r) r (:. (:. a r) rs) rs_, Map r (:. a r) rs_ (:. (:. a r) rs), Fold aas (a, :. a r), ZipWith a a a (:. a r) (:. a r) (:. a r), Map a a (:. a r) (:. a r), ZipWith a (:. a r) (a, :. a r) r (:. (:. a r) rs) aas, Num a, NearZero a, BackSubstitute rs_) => BackSubstitute (:. (:. a r) (:. (:. a r) rs))
BackSubstitute' (:. (:. a r) ())
(Map (:. a r) r (:. (:. a r) rs) rs_, Map r (:. a r) rs_ (:. (:. a r) rs), Fold aas (a, :. a r), ZipWith a a a (:. a r) (:. a r) (:. a r), Map a a (:. a r) (:. a r), ZipWith a (:. a r) (a, :. a r) r (:. (:. a r) rs) aas, Num a, BackSubstitute' rs_) => BackSubstitute' (:. (:. a r) (:. (:. a r) rs))
(Show a, ShowVec v) => ShowVec (:. a v)
VecArrayRW (:. Double ())
VecArrayRW (:. Double v) => VecArrayRW (:. Double (:. Double v))
VecArrayRW (:. Float ())
VecArrayRW (:. Float v) => VecArrayRW (:. Float (:. Float v))
VecArrayRW (:. Int ())
VecArrayRW (:. Int v) => VecArrayRW (:. Int (:. Int v))
VecArrayRW (:. Word8 ())
VecArrayRW (:. Word8 v) => VecArrayRW (:. Word8 (:. Word8 v))
Storable a => Storable (:. a ())
(Vec (Succ (Succ n)) a (:. a (:. a v)), Storable a, Storable (:. a v)) => Storable (:. a (:. a v))
(GPU a, GPU b) => GPU (:. a b)
(VertexOutput a, VertexOutput b) => VertexOutput (:. a b)
(VertexInput a, VertexInput b) => VertexInput (:. a b)
Transpose' vs vs' => Transpose' (:. () vs) vs'
Det' (:. (:. a ()) ()) a
(:. a (:. a v) ~ r, :. (:. a (:. a v)) (:. (:. a (:. a v)) vs) ~ m, :. (:. a v) (:. (:. a v) vs_) ~ m_, :. (:. (:. a v) vs_) (:. x y) ~ mm, Map (:. a (:. a v)) (:. a v) m m_, DropConsec m_ mm, Det' (:. (:. a v) vs_) a, Map (:. (:. a v) vs_) a mm r, Map r a m r, NegateOdds r, Fold r a, Num r, Num a) => Det' (:. (:. a (:. a v)) (:. (:. a (:. a v)) vs)) a
Head (:. a as) a
Tail (:. a as) as
Fold (:. a ()) a
Fold (:. a' u) a => Fold (:. a (:. a' u)) a
Last (:. a ()) a
Last (:. a' v) a => Last (:. a (:. a' v)) a
Append (:. a ()) v (:. a v)
Append (:. a' v1) v2 v3 => Append (:. a (:. a' v1)) v2 (:. a v3)
Snoc v a (:. a v) => Snoc (:. a v) a (:. a (:. a v))
Length v n => Length (:. a v) (Succ n)
(Vec (Succ n) s (:. s ra), Vec (Succ m) (:. s ra) (:. (:. s ra) a), Vec (Succ m) s (:. s rb), Vec (Succ n) (:. s rb) (:. (:. s rb) b), Transpose' (:. (:. s ra) a) (:. (:. s rb) b)) => Transpose (:. (:. s ra) a) (:. (:. s rb) b)
Transpose' (:. (:. x ()) ()) (:. (:. x ()) ())
(Head xss_h xss_hh, Map xss_h xss_hh (:. xss_h xss_t) xs', Tail xss_h xss_ht, Map xss_h xss_ht (:. xss_h xss_t) xss_, Transpose' (:. xs xss_) xss') => Transpose' (:. (:. x xs) (:. xss_h xss_t)) (:. (:. x xs') xss')
type Vec2 a = :. a (:. a ())Source
type Vec3 a = :. a (Vec2 a)Source
type Vec4 a = :. a (Vec3 a)Source
module Data.Vec.LinAlg
module Data.Boolean
Produced by Haddock version 2.6.0