lambdacube-engine-0.2.4: 3D rendering engine written entirely in Haskell

Safe HaskellSafe-Infered

Graphics.LambdaCube.GpuProgramParams

Synopsis

Documentation

data GpuParamVariability Source

The variability of a GPU parameter, as derived from auto-params targetting it.

Constructors

GpuParamVariability 

Fields

gpvGlobal :: Bool

No variation except by manual setting - the default

gpvPerObject :: Bool

Varies per object (based on an auto param usually), but not per light setup

gpvLights :: Bool

Varies with light setup

gpvPassIterationNumber :: Bool

Varies with pass iteration number

data GpuConstantDefinition Source

Information about predefined program constants.

Constructors

GpuConstantDefinition 

Fields

gcdConstType :: GpuConstantType

Data type

gcdPhysicalIndex :: Int

Physical start index in buffer (either float or int buffer)

gcdLogicalIndex :: Int

Logical index - used to communicate this constant to the rendersystem

gcdElementSize :: Int

Number of raw buffer slots per element (some programs pack each array element to float4, some do not)

gcdArraySize :: Int

Length of array

gcdVariability :: GpuParamVariability

How this parameter varies (bitwise combination of GpuProgramVariability)

getElementSize :: GpuConstantType -> Bool -> IntSource

Get the element size of a given type, including whether to pad the elements into multiples of 4 (e.g. SM1 and D3D does, GLSL doesn't)

data GpuNamedConstants Source

Struct collecting together the information for named constants.

Constructors

GpuNamedConstants 

Fields

gncFloatBufferSize :: Int

Total size of the float buffer required

gncIntBufferSize :: Int

Total size of the int buffer required

gncMap :: Map String GpuConstantDefinition

Map of parameter names to GpuConstantDefinition

gncGenerateAllConstantDefinitionArrayEntries :: Bool
 

data GpuLogicalIndexUse Source

Structure recording the use of a physical buffer by a logical parameter index. Only used for low-level programs.

Constructors

GpuLogicalIndexUse 

Fields

gliPhysicalIndex :: Int

Physical buffer index

gliCurrentSize :: Int

Current physical size allocation

gliVariability :: Word16

How the contents of this slot vary

data GpuLogicalBufferStruct Source

Container to allow params to safely & update shared list of logical buffer assignments

Constructors

GpuLogicalBufferStruct 

Fields

gluMap :: Map Int GpuLogicalIndexUse

Map from logical index to physical buffer location

gluBufferSize :: Int

Shortcut to know the buffer size needs

data GpuSharedParameters Source

A group of manually updated parameters that are shared between many parameter sets.

Constructors

GpuSharedParameters 

Fields

gspNamedConstants :: GpuNamedConstants
 
gspFloatConstants :: [Float]
 
gspIntConstants :: [Int]
 
gspName :: String
 
gspFrameLastUpdated :: Int

Not used when copying data, but might be useful to RS using shared buffers

gspVersion :: Int

Version number of the definitions in this buffer

data CopyDataEntry Source

The list of physical mappings that we are going to bring in.

Instances

data GpuSharedParametersUsage Source

The usage of a set of shared parameters in a concrete set of GpuProgramParameters.

Constructors

GpuSharedParametersUsage 

Fields

spuSharedParams :: GpuSharedParameters
 
spuCopyDataList :: [CopyDataEntry]
 
spuCopyDataVersion :: Int

Version of shared params we based the copydata on

data AutoConstantType Source

The types of automatically updated values that may be bound to GpuProgram parameters, or used to modify parameters on a per-object basis.

Constructors

ACT_WORLD_MATRIX

The current world matrix

ACT_INVERSE_WORLD_MATRIX

The current world matrix, inverted

ACT_TRANSPOSE_WORLD_MATRIX

Provides transpose of world matrix. Equivalent to RenderMonkey's WorldTranspose.

ACT_INVERSE_TRANSPOSE_WORLD_MATRIX

The current world matrix, inverted & transposed

ACT_WORLD_MATRIX_ARRAY_3x4

The current array of world matrices, as a 3x4 matrix, used for blending

ACT_WORLD_MATRIX_ARRAY

The current array of world matrices, used for blending

ACT_VIEW_MATRIX

The current view matrix

ACT_INVERSE_VIEW_MATRIX

The current view matrix, inverted

ACT_TRANSPOSE_VIEW_MATRIX

Provides transpose of view matrix. Equivalent to RenderMonkey's ViewTranspose.

ACT_INVERSE_TRANSPOSE_VIEW_MATRIX

Provides inverse transpose of view matrix. Equivalent to RenderMonkey's ViewInverseTranspose.

ACT_PROJECTION_MATRIX

The current projection matrix

ACT_INVERSE_PROJECTION_MATRIX

Provides inverse of projection matrix. Equivalent to RenderMonkey's ProjectionInverse.

ACT_TRANSPOSE_PROJECTION_MATRIX

Provides transpose of projection matrix. Equivalent to RenderMonkey's ProjectionTranspose.

ACT_INVERSE_TRANSPOSE_PROJECTION_MATRIX

Provides inverse transpose of projection matrix. Equivalent to RenderMonkey's ProjectionInverseTranspose.

ACT_VIEWPROJ_MATRIX

The current view & projection matrices concatenated

ACT_INVERSE_VIEWPROJ_MATRIX

Provides inverse of concatenated view and projection matrices. Equivalent to RenderMonkey's ViewProjectionInverse.

ACT_TRANSPOSE_VIEWPROJ_MATRIX

Provides transpose of concatenated view and projection matrices. Equivalent to RenderMonkey's ViewProjectionTranspose.

ACT_INVERSE_TRANSPOSE_VIEWPROJ_MATRIX

Provides inverse transpose of concatenated view and projection matrices. Equivalent to RenderMonkey's ViewProjectionInverseTranspose.

ACT_WORLDVIEW_MATRIX

The current world & view matrices concatenated

ACT_INVERSE_WORLDVIEW_MATRIX

The current world & view matrices concatenated, then inverted

ACT_TRANSPOSE_WORLDVIEW_MATRIX

Provides transpose of concatenated world and view matrices. Equivalent to RenderMonkey's WorldViewTranspose.

ACT_INVERSE_TRANSPOSE_WORLDVIEW_MATRIX

The current world & view matrices concatenated, then inverted & transposed

ACT_WORLDVIEWPROJ_MATRIX

The current world, view & projection matrices concatenated

ACT_INVERSE_WORLDVIEWPROJ_MATRIX

Provides inverse of concatenated world, view and projection matrices. Equivalent to RenderMonkey's WorldViewProjectionInverse.

ACT_TRANSPOSE_WORLDVIEWPROJ_MATRIX

Provides transpose of concatenated world, view and projection matrices. Equivalent to RenderMonkey's WorldViewProjectionTranspose.

ACT_INVERSE_TRANSPOSE_WORLDVIEWPROJ_MATRIX

Provides inverse transpose of concatenated world, view and projection matrices. Equivalent to RenderMonkey's WorldViewProjectionInverseTranspose.

ACT_RENDER_TARGET_FLIPPING
  • 1 if requires texture flipping, +1 otherwise. It's useful when you bypassed projection matrix transform, still able use this value to adjust transformed y position.
ACT_FOG_COLOUR

Fog colour

ACT_FOG_PARAMS

Fog params: density, linear start, linear end, 1/(end-start)

ACT_SURFACE_AMBIENT_COLOUR

Surface ambient colour, as set in Pass::setAmbient

ACT_SURFACE_DIFFUSE_COLOUR

Surface diffuse colour, as set in Pass::setDiffuse

ACT_SURFACE_SPECULAR_COLOUR

Surface specular colour, as set in Pass::setSpecular

ACT_SURFACE_EMISSIVE_COLOUR

Surface emissive colour, as set in Pass::setSelfIllumination

ACT_SURFACE_SHININESS

Surface shininess, as set in Pass::setShininess

ACT_LIGHT_COUNT

The number of active light sources (better than gl_MaxLights)

ACT_AMBIENT_LIGHT_COLOUR

The ambient light colour set in the scene

ACT_LIGHT_DIFFUSE_COLOUR

Light diffuse colour (index determined by setAutoConstant call)

ACT_LIGHT_SPECULAR_COLOUR

Light specular colour (index determined by setAutoConstant call)

ACT_LIGHT_ATTENUATION

Light attenuation parameters, Vector4(range, constant, linear, quadric)

ACT_SPOTLIGHT_PARAMS 
ACT_LIGHT_POSITION

A light position in world space (index determined by setAutoConstant call)

ACT_LIGHT_POSITION_OBJECT_SPACE

A light position in object space (index determined by setAutoConstant call)

ACT_LIGHT_POSITION_VIEW_SPACE

A light position in view space (index determined by setAutoConstant call)

ACT_LIGHT_DIRECTION

A light direction in world space (index determined by setAutoConstant call)

ACT_LIGHT_DIRECTION_OBJECT_SPACE

A light direction in object space (index determined by setAutoConstant call)

ACT_LIGHT_DIRECTION_VIEW_SPACE

A light direction in view space (index determined by setAutoConstant call)

ACT_LIGHT_DISTANCE_OBJECT_SPACE

The distance of the light from the center of the object a useful approximation as an alternative to per-vertex distance calculations.

ACT_LIGHT_POWER_SCALE

Light power level, a single scalar as set in Light::setPowerScale (index determined by setAutoConstant call)

ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED

Light diffuse colour pre-scaled by Light::setPowerScale (index determined by setAutoConstant call)

ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED

Light specular colour pre-scaled by Light::setPowerScale (index determined by setAutoConstant call)

ACT_LIGHT_DIFFUSE_COLOUR_ARRAY

Array of light diffuse colours (count set by extra param)

ACT_LIGHT_SPECULAR_COLOUR_ARRAY

Array of light specular colours (count set by extra param)

ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED_ARRAY

Array of light diffuse colours scaled by light power (count set by extra param)

ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED_ARRAY

Array of light specular colours scaled by light power (count set by extra param)

ACT_LIGHT_ATTENUATION_ARRAY

Array of light attenuation parameters, Vector4(range, constant, linear, quadric) (count set by extra param)

ACT_LIGHT_POSITION_ARRAY

Array of light positions in world space (count set by extra param)

ACT_LIGHT_POSITION_OBJECT_SPACE_ARRAY

Array of light positions in object space (count set by extra param)

ACT_LIGHT_POSITION_VIEW_SPACE_ARRAY

Array of light positions in view space (count set by extra param)

ACT_LIGHT_DIRECTION_ARRAY

Array of light directions in world space (count set by extra param)

ACT_LIGHT_DIRECTION_OBJECT_SPACE_ARRAY

Array of light directions in object space (count set by extra param)

ACT_LIGHT_DIRECTION_VIEW_SPACE_ARRAY

Array of light directions in view space (count set by extra param)

ACT_LIGHT_DISTANCE_OBJECT_SPACE_ARRAY

Array of distances of the lights from the center of the object a useful approximation as an alternative to per-vertex distance calculations. (count set by extra param)

ACT_LIGHT_POWER_SCALE_ARRAY

Array of light power levels, a single scalar as set in Light::setPowerScale (count set by extra param)

ACT_SPOTLIGHT_PARAMS_ARRAY 
ACT_DERIVED_AMBIENT_LIGHT_COLOUR 
ACT_DERIVED_SCENE_COLOUR 
ACT_DERIVED_LIGHT_DIFFUSE_COLOUR 
ACT_DERIVED_LIGHT_SPECULAR_COLOUR 
ACT_DERIVED_LIGHT_DIFFUSE_COLOUR_ARRAY

Array of derived light diffuse colours (count set by extra param)

ACT_DERIVED_LIGHT_SPECULAR_COLOUR_ARRAY

Array of derived light specular colours (count set by extra param)

ACT_LIGHT_NUMBER 
ACT_LIGHT_CASTS_SHADOWS

Returns (int) 1 if the given light casts shadows, 0 otherwise (index set in extra param)

ACT_SHADOW_EXTRUSION_DISTANCE

The distance a shadow volume should be extruded when using finite extrusion programs.

ACT_CAMERA_POSITION

The current camera's position in world space

ACT_CAMERA_POSITION_OBJECT_SPACE

The current camera's position in object space

ACT_TEXTURE_VIEWPROJ_MATRIX

The view/projection matrix of the assigned texture projection frustum

ACT_TEXTURE_VIEWPROJ_MATRIX_ARRAY

Array of view/projection matrices of the first n texture projection frustums

ACT_TEXTURE_WORLDVIEWPROJ_MATRIX

The view/projection matrix of the assigned texture projection frustum, combined with the current world matrix

ACT_TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY

Array of worldviewprojection matrices of the first n texture projection frustums

ACT_SPOTLIGHT_VIEWPROJ_MATRIX

The view/projection matrix of a given spotlight

ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX

The view/projection matrix of a given spotlight projection frustum, combined with the current world matrix

ACT_CUSTOM

A custom parameter which will come from the renderable, using 'data' as the identifier

ACT_TIME

provides current elapsed time

ACT_TIME_0_X

Single float value, which repeats itself based on given as parameter cycle time. Equivalent to RenderMonkey's Time0_X.

ACT_COSTIME_0_X

Cosine of Time0_X. Equivalent to RenderMonkey's CosTime0_X.

ACT_SINTIME_0_X

Sine of Time0_X. Equivalent to RenderMonkey's SinTime0_X.

ACT_TANTIME_0_X

Tangent of Time0_X. Equivalent to RenderMonkey's TanTime0_X.

ACT_TIME_0_X_PACKED

Vector of Time0_X, SinTime0_X, CosTime0_X, TanTime0_X. Equivalent to RenderMonkey's Time0_X_Packed.

ACT_TIME_0_1

Single float value, which represents scaled time value [0..1], which repeats itself based on given as parameter cycle time. Equivalent to RenderMonkey's Time0_1.

ACT_COSTIME_0_1

Cosine of Time0_1. Equivalent to RenderMonkey's CosTime0_1.

ACT_SINTIME_0_1

Sine of Time0_1. Equivalent to RenderMonkey's SinTime0_1.

ACT_TANTIME_0_1

Tangent of Time0_1. Equivalent to RenderMonkey's TanTime0_1.

ACT_TIME_0_1_PACKED

Vector of Time0_1, SinTime0_1, CosTime0_1, TanTime0_1. Equivalent to RenderMonkey's Time0_1_Packed.

ACT_TIME_0_2PI

Single float value, which represents scaled time value [0..2*Pi], which repeats itself based on given as parameter cycle time. Equivalent to RenderMonkey's Time0_2PI.

ACT_COSTIME_0_2PI

Cosine of Time0_2PI. Equivalent to RenderMonkey's CosTime0_2PI.

ACT_SINTIME_0_2PI

Sine of Time0_2PI. Equivalent to RenderMonkey's SinTime0_2PI.

ACT_TANTIME_0_2PI

Tangent of Time0_2PI. Equivalent to RenderMonkey's TanTime0_2PI.

ACT_TIME_0_2PI_PACKED

Vector of Time0_2PI, SinTime0_2PI, CosTime0_2PI, TanTime0_2PI. Equivalent to RenderMonkey's Time0_2PI_Packed.

ACT_FRAME_TIME

provides the scaled frame time, returned as a floating point value.

ACT_FPS

provides the calculated frames per second, returned as a floating point value.

ACT_VIEWPORT_WIDTH

Current viewport width (in pixels) as floating point value. Equivalent to RenderMonkey's ViewportWidth.

ACT_VIEWPORT_HEIGHT

Current viewport height (in pixels) as floating point value. Equivalent to RenderMonkey's ViewportHeight.

ACT_INVERSE_VIEWPORT_WIDTH

This variable represents 1.0/ViewportWidth. Equivalent to RenderMonkey's ViewportWidthInverse.

ACT_INVERSE_VIEWPORT_HEIGHT

This variable represents 1.0/ViewportHeight. Equivalent to RenderMonkey's ViewportHeightInverse.

ACT_VIEWPORT_SIZE

Packed of ViewportWidth, ViewportHeight, ViewportWidthInverse, ViewportHeightInverse.

ACT_VIEW_DIRECTION

This variable provides the view direction vector (world space). Equivalent to RenderMonkey's ViewDirection.

ACT_VIEW_SIDE_VECTOR

This variable provides the view side vector (world space). Equivalent to RenderMonkey's ViewSideVector.

ACT_VIEW_UP_VECTOR

This variable provides the view up vector (world space). Equivalent to RenderMonkey's ViewUpVector.

ACT_FOV

This variable provides the field of view as a floating point value. Equivalent to RenderMonkey's FOV.

ACT_NEAR_CLIP_DISTANCE

This variable provides the near clip distance as a floating point value. Equivalent to RenderMonkey's NearClipPlane.

ACT_FAR_CLIP_DISTANCE

This variable provides the far clip distance as a floating point value. Equivalent to RenderMonkey's FarClipPlane.

ACT_PASS_NUMBER

provides the pass index number within the technique of the active materil.

ACT_PASS_ITERATION_NUMBER

provides the current iteration number of the pass. The iteration number is the number of times the current render operation has been drawn for the active pass.

ACT_ANIMATION_PARAMETRIC

Provides a parametric animation value [0..1], only available where the renderable specifically implements it.

ACT_TEXEL_OFFSETS 
ACT_SCENE_DEPTH_RANGE 
ACT_SHADOW_SCENE_DEPTH_RANGE 
ACT_SHADOW_COLOUR

Provides the fixed shadow colour as configured via SceneManager::setShadowColour; useful for integrated modulative shadows.

ACT_TEXTURE_SIZE

Provides texture size of the texture unit (index determined by setAutoConstant call). Packed as float4(width, height, depth, 1)

ACT_INVERSE_TEXTURE_SIZE

Provides inverse texture size of the texture unit (index determined by setAutoConstant call). Packed as float4(1 width, 1 height, 1 / depth, 1)

ACT_PACKED_TEXTURE_SIZE

Provides packed texture size of the texture unit (index determined by setAutoConstant call). Packed as float4(width, height, 1 width, 1 height)

ACT_TEXTURE_MATRIX

Provides the current transform matrix of the texture unit (index determined by setAutoConstant call), as seen by the fixed-function pipeline.

ACT_LOD_CAMERA_POSITION 
ACT_LOD_CAMERA_POSITION_OBJECT_SPACE 
ACT_LIGHT_CUSTOM

Binds custom per-light constants to the shaders.

Instances

data ACDataType Source

Constructors

ACDT_NONE

no data is required

ACDT_INT

the auto constant requires data of type int

ACDT_REAL

the auto constant requires data of type real

Instances

data ElementType Source

Constructors

ET_INT 
ET_REAL 

Instances

data AutoConstantDefinition Source

Constructors

AutoConstantDefinition 

Fields

acdType :: AutoConstantType
 
acdName :: String
 
acdElementCount :: Int
 
acdElementType :: ElementType

The type of the constant in the program

acdDataType :: ACDataType

The type of any extra data

data AutoConstantEntry Source

Constructors

AutoConstantEntry 

Fields

aceParamType :: AutoConstantType

The type of parameter

acePhysicalIndex :: Int

The target (physical) constant index

aceElementCount :: Int

The number of elements per individual entry in this constant Used in case people used packed elements smaller than 4 (e.g. GLSL) and bind an auto which is 4-element packed to it

aceVariability :: GpuParamVariability

The variability of this parameter (see GpuParamVariability)