module Graphics.LambdaCube.TextureUnitState where
import Graphics.LambdaCube.BlendMode
import Graphics.LambdaCube.Common
import Graphics.LambdaCube.PixelFormat
import Graphics.LambdaCube.Texture
import Graphics.LambdaCube.Types
data TextureEffectType
= ET_ENVIRONMENT_MAP
| ET_PROJECTIVE_TEXTURE
| ET_UVSCROLL
| ET_USCROLL
| ET_VSCROLL
| ET_ROTATE
| ET_TRANSFORM
deriving (Eq,Ord)
data EnvMapType
= ENV_PLANAR
| ENV_CURVED
| ENV_REFLECTION
| ENV_NORMAL
data TextureTransformType
= TT_TRANSLATE_U
| TT_TRANSLATE_V
| TT_SCALE_U
| TT_SCALE_V
| TT_ROTATE
data TextureAddressingMode
= TAM_WRAP
| TAM_MIRROR
| TAM_CLAMP
| TAM_BORDER
deriving (Eq,Ord)
data UVWAddressingMode
= UVWAddressingMode
{ amU :: TextureAddressingMode
, amV :: TextureAddressingMode
, amW :: TextureAddressingMode
}
deriving (Eq,Ord)
data TextureCubeFace
= CUBE_FRONT
| CUBE_BACK
| CUBE_LEFT
| CUBE_RIGHT
| CUBE_UP
| CUBE_DOWN
data TextureEffect
= TextureEffect
{ teType :: TextureEffectType
, teSubType :: Int
, teArg1 :: FloatType
, teArg2 :: FloatType
, teWaveType :: WaveformType
, teBase :: FloatType
, teFrequency :: FloatType
, tePhase :: FloatType
, teAmplitude :: FloatType
}
deriving (Eq,Ord)
data BindingType
= BT_FRAGMENT
| BT_VERTEX
deriving (Eq,Ord)
data ContentType
= CONTENT_NAMED
| CONTENT_SHADOW
deriving (Eq,Ord)
data Texture t => TextureUnitState t
= TextureUnitState
{ tusAnimDuration :: Maybe FloatType
, tusCubic :: Bool
, tusTextureType :: TextureType
, tusDesiredFormat :: PixelFormat
, tusTextureSrcMipmaps :: TextureMipmap
, tusTextureCoordSetIndex :: Int
, tusAddressMode :: UVWAddressingMode
, tusBorderColour :: ColourValue
, tusColourBlendMode :: LayerBlendModeEx
, tusColourBlendFallbackSrc :: SceneBlendFactor
, tusColourBlendFallbackDest :: SceneBlendFactor
, tusAlphaBlendMode :: LayerBlendModeEx
, tusIsAlpha :: Bool
, tusHwGamma :: Bool
, tusUMod :: FloatType
, tusVMod :: FloatType
, tusUScale :: FloatType
, tusVScale :: FloatType
, tusRotate :: FloatType
, tusMinFilter :: FilterOptions
, tusMagFilter :: FilterOptions
, tusMipFilter :: FilterOptions
, tusMaxAniso :: Int
, tusMipmapBias :: FloatType
, tusBindingType :: BindingType
, tusContentType :: ContentType
, tusFrameNames :: [String]
, tusFrames :: Maybe [t]
, tusName :: String
, tusTextureAlias :: String
, tusEffects :: [TextureEffect]
}
deriving (Eq,Ord)