ombra-0.1.1.0: Render engine.

Safe HaskellSafe
LanguageHaskell2010

Graphics.Rendering.Ombra.Shader.Language.Types

Synopsis

Documentation

type MInt = Int Source #

CPU integer, used in the shader compiler.

data Action Source #

Expressions that are transformed to statements.

Instances

newtype Float Source #

A GPU float.

Constructors

Float Expr 

Instances

ShaderType Float Source # 
ToMat4 Float Source # 

Methods

mat4 :: Float -> Mat4 Source #

ToMat3 Float Source # 

Methods

mat3 :: Float -> Mat3 Source #

ToMat2 Float Source # 

Methods

mat2 :: Float -> Mat2 Source #

ToBVec4 Float Source # 

Methods

bvec4 :: Float -> BVec4 Source #

ToBVec3 Float Source # 

Methods

bvec3 :: Float -> BVec3 Source #

ToBVec2 Float Source # 

Methods

bvec2 :: Float -> BVec2 Source #

ToIVec4 Float Source # 

Methods

ivec4 :: Float -> IVec4 Source #

ToIVec3 Float Source # 

Methods

ivec3 :: Float -> IVec3 Source #

ToIVec2 Float Source # 

Methods

ivec2 :: Float -> IVec2 Source #

ToVec4 Float Source # 

Methods

vec4 :: Float -> Vec4 Source #

ToVec3 Float Source # 

Methods

vec3 :: Float -> Vec3 Source #

ToVec2 Float Source # 

Methods

vec2 :: Float -> Vec2 Source #

ToFloat Float Source # 
ToBool Float Source # 
ToInt Float Source # 
Num Float Source # 
GenType Float Source # 
GLES => BaseAttribute Float Source # 

Methods

encodeAttribute :: proxy Float -> [CPUBase Float] -> GL AnyArray Source #

setAttribute :: proxy Float -> GLUInt -> GL () Source #

GLES => BaseUniform Float Source # 

Methods

setUniform :: UniformLocation -> proxy Float -> CPUBase Float -> GL () Source #

Base Mat4 Float Source # 
Base Mat3 Float Source # 
Base Mat2 Float Source # 
Base Vec4 Float Source # 
Base Vec3 Float Source # 
Base Vec2 Float Source # 
Base Float Float Source # 
Mul Float Float Mat4 Vec4 Vec4 Source # 
Mul Float Float Mat3 Vec3 Vec3 Source # 
Mul Float Float Mat2 Vec2 Vec2 Source # 
Mul Float Float Vec4 Mat4 Vec4 Source # 
Mul Float Float Vec3 Mat3 Vec3 Source # 
Mul Float Float Vec2 Mat2 Vec2 Source # 
Arithmetic Float Float Mat4 Mat4 Mat4 Source # 
Arithmetic Float Float Mat4 Float Mat4 Source # 
Arithmetic Float Float Mat3 Mat3 Mat3 Source # 
Arithmetic Float Float Mat3 Float Mat3 Source # 
Arithmetic Float Float Mat2 Mat2 Mat2 Source # 
Arithmetic Float Float Mat2 Float Mat2 Source # 
Arithmetic Float Float Vec4 Vec4 Vec4 Source # 
Arithmetic Float Float Vec4 Float Vec4 Source # 
Arithmetic Float Float Vec3 Vec3 Vec3 Source # 
Arithmetic Float Float Vec3 Float Vec3 Source # 
Arithmetic Float Float Vec2 Vec2 Vec2 Source # 
Arithmetic Float Float Vec2 Float Vec2 Source # 
Arithmetic Float Float Float Mat4 Mat4 Source # 
Arithmetic Float Float Float Mat3 Mat3 Source # 
Arithmetic Float Float Float Mat2 Mat2 Source # 
Arithmetic Float Float Float Vec4 Vec4 Source # 
Arithmetic Float Float Float Vec3 Vec3 Source # 
Arithmetic Float Float Float Vec2 Vec2 Source # 
Arithmetic Float Float Float Float Float Source # 
GLES => BaseUniform (Array n Float) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Float) -> CPUBase (Array n Float) -> GL () Source #

type CPUBase Float Source # 
type CPUBase (Array n Float) Source # 
type CPUBase (Array n Float) = [Float]

newtype Unknown Source #

The type of a generic expression.

Constructors

Unknown Expr 

data Array n t Source #

A GPU array.

Constructors

Array Expr 

Instances

(ShaderType t, KnownNat n) => ShaderType (Array n t) Source # 

Methods

zero :: Array n t Source #

toExpr :: Array n t -> Expr Source #

fromExpr :: Expr -> Array n t Source #

typeName :: Array n t -> String Source #

size :: Array n t -> MInt Source #

GLES => BaseUniform (Array n BVec4) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n BVec4) -> CPUBase (Array n BVec4) -> GL () Source #

GLES => BaseUniform (Array n BVec3) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n BVec3) -> CPUBase (Array n BVec3) -> GL () Source #

GLES => BaseUniform (Array n BVec2) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n BVec2) -> CPUBase (Array n BVec2) -> GL () Source #

GLES => BaseUniform (Array n IVec4) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n IVec4) -> CPUBase (Array n IVec4) -> GL () Source #

GLES => BaseUniform (Array n IVec3) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n IVec3) -> CPUBase (Array n IVec3) -> GL () Source #

GLES => BaseUniform (Array n IVec2) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n IVec2) -> CPUBase (Array n IVec2) -> GL () Source #

GLES => BaseUniform (Array n Vec4) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Vec4) -> CPUBase (Array n Vec4) -> GL () Source #

GLES => BaseUniform (Array n Vec3) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Vec3) -> CPUBase (Array n Vec3) -> GL () Source #

GLES => BaseUniform (Array n Vec2) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Vec2) -> CPUBase (Array n Vec2) -> GL () Source #

GLES => BaseUniform (Array n Int) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Int) -> CPUBase (Array n Int) -> GL () Source #

GLES => BaseUniform (Array n Bool) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Bool) -> CPUBase (Array n Bool) -> GL () Source #

GLES => BaseUniform (Array n Float) Source # 

Methods

setUniform :: UniformLocation -> proxy (Array n Float) -> CPUBase (Array n Float) -> GL () Source #

type CPUBase (Array n BVec4) Source # 
type CPUBase (Array n BVec4) = [IVec4]
type CPUBase (Array n BVec3) Source # 
type CPUBase (Array n BVec3) = [IVec3]
type CPUBase (Array n BVec2) Source # 
type CPUBase (Array n BVec2) = [IVec2]
type CPUBase (Array n IVec4) Source # 
type CPUBase (Array n IVec4) = [IVec4]
type CPUBase (Array n IVec3) Source # 
type CPUBase (Array n IVec3) = [IVec3]
type CPUBase (Array n IVec2) Source # 
type CPUBase (Array n IVec2) = [IVec2]
type CPUBase (Array n Vec4) Source # 
type CPUBase (Array n Vec4) = [Vec4]
type CPUBase (Array n Vec3) Source # 
type CPUBase (Array n Vec3) = [Vec3]
type CPUBase (Array n Vec2) Source # 
type CPUBase (Array n Vec2) = [Vec2]
type CPUBase (Array n Int) Source # 
type CPUBase (Array n Int) = [Int32]
type CPUBase (Array n Bool) Source # 
type CPUBase (Array n Bool) = [Int32]
type CPUBase (Array n Float) Source # 
type CPUBase (Array n Float) = [Float]

class ShaderType t where Source #

A type in the GPU.

Minimal complete definition

zero, toExpr, fromExpr, typeName, size

Methods

zero :: t Source #

toExpr :: t -> Expr Source #

fromExpr :: Expr -> t Source #

typeName :: t -> String Source #

size :: t -> MInt Source #

Instances

ShaderType Mat4 Source # 
ShaderType Mat3 Source # 
ShaderType Mat2 Source # 
ShaderType BVec4 Source # 
ShaderType BVec3 Source # 
ShaderType BVec2 Source # 
ShaderType IVec4 Source # 
ShaderType IVec3 Source # 
ShaderType IVec2 Source # 
ShaderType Vec4 Source # 
ShaderType Vec3 Source # 
ShaderType Vec2 Source # 
ShaderType Unknown Source # 
ShaderType SamplerCube Source # 
ShaderType Sampler2D Source # 
ShaderType Int Source # 
ShaderType Float Source # 
ShaderType Bool Source # 
(ShaderType t, KnownNat n) => ShaderType (Array n t) Source # 

Methods

zero :: Array n t Source #

toExpr :: Array n t -> Expr Source #

fromExpr :: Expr -> Array n t Source #

typeName :: Array n t -> String Source #

size :: Array n t -> MInt Source #

hash2 :: Hashable a => MInt -> MInt -> a -> MInt Source #