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

Copyright(C) 2015 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 Source

Class of all textures.

Minimal complete definition

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

Associated Types

type TextureSize t :: * Source

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

type TextureOffset t :: * Source

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

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

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

Sampling

defaultSampling :: Sampling Source

Default Sampling for convenience.

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

Texture sampler customization

data Filter Source

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 

data Wrap Source

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 

data CompareFunc Source

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 () Source

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 () Source

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

Available textures

1D textures

Array texture

2D textures

Array texture

3D textures

Cubemaps

Array textures

Pixel formats