Copyright | [2013..2020] Trevor L. McDonell |
---|---|
License | BSD3 |
Maintainer | Trevor L. McDonell <trevor.mcdonell@gmail.com> |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Rendering of 2D functions as raster fields
Synopsis
- module Graphics.Gloss.Accelerate.Data.Point
- module Data.Array.Accelerate.Data.Colour.RGBA
- type Render = forall a b. (Arrays a, Arrays b) => (Acc a -> Acc b) -> a -> b
- data Display
- animateFieldWith :: Render -> Display -> (Int, Int) -> (Exp Float -> Exp Point -> Exp Colour) -> IO ()
- animateFieldIOWith :: Arrays world => Render -> Display -> (Int, Int) -> (Float -> IO world) -> (Acc world -> Exp Point -> Exp Colour) -> IO ()
- playFieldWith :: Arrays world => Render -> Display -> (Int, Int) -> Int -> state -> (state -> world) -> (Acc world -> Exp Point -> Exp Colour) -> (Event -> state -> state) -> (Float -> state -> state) -> IO ()
- playFieldIOWith :: Arrays world => Render -> Display -> (Int, Int) -> Int -> state -> (state -> IO world) -> (Acc world -> Exp Point -> Exp Colour) -> (Event -> state -> IO state) -> (Float -> state -> IO state) -> IO ()
- makeField :: Int -> Int -> (world -> Exp Point -> Exp Colour) -> world -> Acc (Array DIM2 Colour)
Documentation
Display functions
type Render = forall a b. (Arrays a, Arrays b) => (Acc a -> Acc b) -> a -> b Source #
The type for executing Accelerate computations. This matches the run1
style of executing programs.
Some variants of the display functions take an argument of this type, which determine how computations are executed.
Describes how Gloss should display its output.
InWindow String (Int, Int) (Int, Int) | Display in a window with the given name, size and position. |
FullScreen | Display full screen. |
:: Render | Method to render the field |
-> Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> (Exp Float -> Exp Point -> Exp Colour) | 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 | |
=> Render | Method to render the field |
-> Display | Display mode |
-> (Int, Int) | Number of pixels to draw per point |
-> (Float -> IO world) | Extract world from time in seconds since the program started |
-> (Acc world -> Exp Point -> Exp Colour) | A function to compute the colour at a particular point. It is passed the world, and a point between (-1,1) and (+1,1). |
-> IO () |
Animate a continuous 2D function using IO actions, specifying the backend used to render the field.
:: 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 Colour) | 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.
:: 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 -> IO world) | Extract the world state |
-> (Acc world -> Exp Point -> Exp Colour) | Compute the colour of the world at a given point |
-> (Event -> state -> IO state) | Handle input events |
-> (Float -> state -> IO 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 IO actions, specifying the method used to render the field.
Field creation
:: Int | image width |
-> Int | image height |
-> (world -> Exp Point -> Exp Colour) | function to apply at each point |
-> world -> Acc (Array DIM2 Colour) | 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
.