luminance-0.3: Type-safe, dependently-typed 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

Minimal complete definition

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

Instances

Pixel k f => Texture (Cubemap k f) Source 
Pixel k f => Texture (Texture1D k f) Source 
Pixel k f => Texture (Texture2D k f) Source 
Pixel k f => Texture (Texture3D k f) Source 

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

data CompareFunc Source

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

Texture operations

uploadSub :: forall a f m t. (Foldable f, MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> f 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 f m t. (Foldable f, MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> f a -> m () Source

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

Available textures

1D textures

data Texture1D f Source

A 1D texture.

Instances

2D textures

data Texture2D f Source

A 2D texture.

Instances

3D textures

data Texture3D f Source

A 3D texture.

Instances

Cubemaps

data Cubemap f Source

A cubemap.

Instances