luminance-0.11.0.1: Type-safe, type-level and stateless graphics framework

Copyright(C) 2015, 2016 Dimitri Sabadie
LicenseBSD3
MaintainerDimitri Sabadie <dimitri.sabadie@gmail.com>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Graphics.Luminance.Texture

Contents

Description

 

Synopsis

Texture information and creation

class Texture t

Class of all textures.

Minimal complete definition

fromBaseTexture, toBaseTexture, textureTypeEnum, textureSize, textureStorage, transferTexelsSub, fillTextureSub

Associated Types

type TextureSize t :: *

Size of a texture. This is an associated type – type family – because the dimensionality of a texture relies on its type.

type TextureOffset t :: *

In order to index regions of texels in texture, we need another associated type – for the same dimensionality reason as for TextureSize.

Instances

createTexture :: forall m t. (MonadIO m, MonadResource m, Texture t) => TextureSize t -> Natural -> Sampling -> m t

'createTexture w h levels sampling' a new 'w'*'h' texture with levels levels. The format is set through the type.

Sampling

defaultSampling :: Sampling

Default Sampling for convenience.

  defaultSampling = Sampling {
      samplingWrapS           = ClampToEdge
    , samplingWrapT           = ClampToEdge
    , samplingWrapR           = ClampToEdge
    , samplingMinFilter       = Linear
    , samplingMagFilter       = Linear
    , samplingCompareFunction = Nothing
    }

Texture sampler customization

data Filter

Sampling filter. Nearest will sample the nearest texel at the sampling coordinates whilst Linear will perform linear interpolation with the texels nearby.

Constructors

Nearest 
Linear 

Instances

data Wrap

Wrap texture parameter. Such an object is used to tell how to sampling is performed when going out of the texture coordinates.

ClampToEdge will clamp the texture coordinates between in '[0,1]'. If you pass '1.1' or '31.456', in both cases you’ll end up with '1'. Same thing for negative values clamped to '0'.

Repeat will clamp the texture in '[0,1]' after applying a fract on the value, yielding a a repeated '[0,1]' pattern.

Constructors

ClampToEdge 
Repeat

ClampToBorder

MirroredRepeat 

Instances

data CompareFunc

For textures that might require depth comparison, that type defines all the possible cases for comparison.

Texture operations

uploadSub :: forall a m t. (MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> Vector a -> m ()

uploadSub tex offset size autolvl texels uploads data to a subpart of the texture’s storage. The offset is given with origin at upper-left corner, and size is the size of the area to upload to. autolvl is a Bool that can be used to automatically generate mipmaps.

fillSub :: forall a m t. (MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> Vector a -> m ()

Fill a subpart of the texture’s storage with a given value.

Available textures

1D textures

data Texture1D f

A 1D texture.

Array texture

data Texture1DArray n f

A 1D texture array.

2D textures

data Texture2D f

A 2D texture.

Array texture

data Texture2DArray n f

A 2D texture array.

3D textures

data Texture3D f

A 3D texture.

Cubemaps

data Cubemap f

A cubemap.

Instances

Array textures

data CubemapArray n f

A cubemap array.

Pixel formats