Safe Haskell | None |
---|
Rendering of 2D functions as raster fields
- module Graphics.Gloss.Accelerate.Data.Point
- module Graphics.Gloss.Accelerate.Data.Color
- type Render = forall a b. (Arrays a, Arrays b) => (Acc a -> Acc b) -> a -> b
- data Display
- animateField :: Display -> (Int, Int) -> (Exp Float -> Exp Point -> Exp Color) -> IO ()
- animateFieldWith :: Render -> Display -> (Int, Int) -> (Exp Float -> Exp Point -> Exp Color) -> IO ()
- playField :: Arrays world => Display -> (Int, Int) -> Int -> state -> (state -> world) -> (Acc world -> Exp Point -> Exp Color) -> (Event -> state -> state) -> (Float -> state -> state) -> IO ()
- playFieldWith :: Arrays world => Render -> Display -> (Int, Int) -> Int -> state -> (state -> world) -> (Acc world -> Exp Point -> Exp Color) -> (Event -> state -> state) -> (Float -> state -> state) -> IO ()
- makeField :: Int -> Int -> (world -> Exp Point -> Exp Color) -> world -> Acc (Array DIM2 Color)
Documentation
Display functions
type Render = forall a b. (Arrays a, Arrays b) => (Acc a -> Acc b) -> a -> bSource
The type of executing Accelerate computations. The CUDA and Interpreter
backends both provide a function run1
that can be used.
Some variants of the display functions take an argument of this type, which determine how computations are executed.
data Display
Describes how Gloss should display its output.
:: Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> (Exp Float -> Exp Point -> Exp Color) | A function to compute the colour at a particular point. It is passed the time in seconds since the program started, and a point between (-1,1) and (+1,1). |
-> IO () |
Animate a continuous 2D function using the default backend
:: Render | Method to render the field |
-> Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> (Exp Float -> Exp Point -> Exp Color) | A function to compute the colour at a particular point. It is passed the time in seconds since the program started, and a point between (-1,1) and (+1,1). |
-> IO () |
Animate a continuous 2D function, specifying the backend used to render the field.
:: Arrays world | |
=> Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> Int | Number of simulation steps to take for each second of real time |
-> state | The initial state |
-> (state -> world) | Extract the world state |
-> (Acc world -> Exp Point -> Exp Color) | Compute the colour of the world at a given point |
-> (Event -> state -> state) | Handle input events |
-> (Float -> state -> state) | Step the world one iteration. It is passed the time in seconds since the program started. |
-> IO () |
Play a game with a continuous 2D function using the default backend.
:: Arrays world | |
=> Render | Method to render the field |
-> Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> Int | Number of simulation steps to take for each second of real time |
-> state | The initial state |
-> (state -> world) | Extract the world state |
-> (Acc world -> Exp Point -> Exp Color) | Compute the colour of the world at a given point |
-> (Event -> state -> state) | Handle input events |
-> (Float -> state -> state) | Step the world one iteration. It is passed the time in seconds since the program started. |
-> IO () |
Play a game with a continuous 2D function, specifying the method used to render the field.
Field creation
:: Int | image width |
-> Int | image height |
-> (world -> Exp Point -> Exp Color) | function to apply at each point |
-> world -> Acc (Array DIM2 Color) | new function that generates the field |
Lift a point-wise colouring function into an image creation function.
The parameter world
at this point can be arbitrary. However if you use
this function standalone, you will probably at some point want the result
of this function to plug into makePicture
and thus Render
, and thus be
a unary function from Arrays
to Arrays
.