module Graphics.LambdaCube.GpuProgramParams where
import Data.Map (Map)
import Data.Word
import Graphics.LambdaCube.Types
data GpuConstantType
= GCT_FLOAT1
| GCT_FLOAT2
| GCT_FLOAT3
| GCT_FLOAT4
| GCT_SAMPLER1D
| GCT_SAMPLER2D
| GCT_SAMPLER3D
| GCT_SAMPLERCUBE
| GCT_SAMPLER1DSHADOW
| GCT_SAMPLER2DSHADOW
| GCT_MATRIX_2X2
| GCT_MATRIX_2X3
| GCT_MATRIX_2X4
| GCT_MATRIX_3X2
| GCT_MATRIX_3X3
| GCT_MATRIX_3X4
| GCT_MATRIX_4X2
| GCT_MATRIX_4X3
| GCT_MATRIX_4X4
| GCT_INT1
| GCT_INT2
| GCT_INT3
| GCT_INT4
| GCT_UNKNOWN
deriving Eq
data GpuParamVariability
= GpuParamVariability
{ gpvGlobal :: Bool
, gpvPerObject :: Bool
, gpvLights :: Bool
, gpvPassIterationNumber :: Bool
}
deriving Eq
data GpuConstantDefinition
= GpuConstantDefinition
{ gcdConstType :: GpuConstantType
, gcdPhysicalIndex :: Int
, gcdLogicalIndex :: Int
, gcdElementSize :: Int
, gcdArraySize :: Int
, gcdVariability :: GpuParamVariability
}
deriving Eq
isFloat :: GpuConstantType -> Bool
isFloat c = case c of
GCT_INT1 -> False
GCT_INT2 -> False
GCT_INT3 -> False
GCT_INT4 -> False
GCT_SAMPLER1D -> False
GCT_SAMPLER2D -> False
GCT_SAMPLER3D -> False
GCT_SAMPLERCUBE -> False
GCT_SAMPLER1DSHADOW -> False
GCT_SAMPLER2DSHADOW -> False
_ -> True
isSampler :: GpuConstantType -> Bool
isSampler c = case c of
GCT_SAMPLER1D -> True
GCT_SAMPLER2D -> True
GCT_SAMPLER3D -> True
GCT_SAMPLERCUBE -> True
GCT_SAMPLER1DSHADOW -> True
GCT_SAMPLER2DSHADOW -> True
_ -> False
getElementSize :: GpuConstantType -> Bool -> Int
getElementSize ctype padToMultiplesOf4
| padToMultiplesOf4 = case ctype of
GCT_FLOAT1 -> 4
GCT_INT1 -> 4
GCT_SAMPLER1D -> 4
GCT_SAMPLER2D -> 4
GCT_SAMPLER3D -> 4
GCT_SAMPLERCUBE -> 4
GCT_SAMPLER1DSHADOW -> 4
GCT_SAMPLER2DSHADOW -> 4
GCT_FLOAT2 -> 4
GCT_INT2 -> 4
GCT_FLOAT3 -> 4
GCT_INT3 -> 4
GCT_FLOAT4 -> 4
GCT_INT4 -> 4
GCT_MATRIX_2X2 -> 8
GCT_MATRIX_2X3 -> 8
GCT_MATRIX_2X4 -> 8
GCT_MATRIX_3X2 -> 12
GCT_MATRIX_3X3 -> 12
GCT_MATRIX_3X4 -> 12
GCT_MATRIX_4X2 -> 16
GCT_MATRIX_4X3 -> 16
GCT_MATRIX_4X4 -> 16
_ -> 4
| otherwise = case ctype of
GCT_FLOAT1 -> 1
GCT_INT1 -> 1
GCT_SAMPLER1D -> 1
GCT_SAMPLER2D -> 1
GCT_SAMPLER3D -> 1
GCT_SAMPLERCUBE -> 1
GCT_SAMPLER1DSHADOW -> 1
GCT_SAMPLER2DSHADOW -> 1
GCT_FLOAT2 -> 2
GCT_INT2 -> 2
GCT_FLOAT3 -> 3
GCT_INT3 -> 3
GCT_FLOAT4 -> 4
GCT_INT4 -> 4
GCT_MATRIX_2X2 -> 4
GCT_MATRIX_2X3 -> 6
GCT_MATRIX_3X2 -> 6
GCT_MATRIX_2X4 -> 8
GCT_MATRIX_4X2 -> 8
GCT_MATRIX_3X3 -> 9
GCT_MATRIX_3X4 -> 12
GCT_MATRIX_4X3 -> 12
GCT_MATRIX_4X4 -> 16
_ -> 4
data GpuNamedConstants
= GpuNamedConstants
{ gncFloatBufferSize :: Int
, gncIntBufferSize :: Int
, gncMap :: Map String GpuConstantDefinition
, gncGenerateAllConstantDefinitionArrayEntries :: Bool
}
deriving Eq
data GpuLogicalIndexUse
= GpuLogicalIndexUse
{ gliPhysicalIndex :: Int
, gliCurrentSize :: Int
, gliVariability :: Word16
}
deriving Eq
data GpuLogicalBufferStruct
= GpuLogicalBufferStruct
{ gluMap :: Map Int GpuLogicalIndexUse
, gluBufferSize :: Int
}
deriving Eq
data GpuSharedParameters
= GpuSharedParameters
{ gspNamedConstants :: GpuNamedConstants
, gspFloatConstants :: [Float]
, gspIntConstants :: [Int]
, gspName :: String
, gspFrameLastUpdated :: Int
, gspVersion :: Int
}
deriving Eq
data CopyDataEntry
= CopyDataEntry
{ cdeSrcDefinition :: GpuConstantDefinition
, cdeDstDefinition :: GpuConstantDefinition
}
deriving Eq
data GpuSharedParametersUsage
= GpuSharedParametersUsage
{ spuSharedParams :: GpuSharedParameters
, spuCopyDataList :: [CopyDataEntry]
, spuCopyDataVersion :: Int
}
deriving Eq
data AutoConstantType
= ACT_WORLD_MATRIX
| ACT_INVERSE_WORLD_MATRIX
| ACT_TRANSPOSE_WORLD_MATRIX
| ACT_INVERSE_TRANSPOSE_WORLD_MATRIX
| ACT_WORLD_MATRIX_ARRAY_3x4
| ACT_WORLD_MATRIX_ARRAY
| ACT_VIEW_MATRIX
| ACT_INVERSE_VIEW_MATRIX
| ACT_TRANSPOSE_VIEW_MATRIX
| ACT_INVERSE_TRANSPOSE_VIEW_MATRIX
| ACT_PROJECTION_MATRIX
| ACT_INVERSE_PROJECTION_MATRIX
| ACT_TRANSPOSE_PROJECTION_MATRIX
| ACT_INVERSE_TRANSPOSE_PROJECTION_MATRIX
| ACT_VIEWPROJ_MATRIX
| ACT_INVERSE_VIEWPROJ_MATRIX
| ACT_TRANSPOSE_VIEWPROJ_MATRIX
| ACT_INVERSE_TRANSPOSE_VIEWPROJ_MATRIX
| ACT_WORLDVIEW_MATRIX
| ACT_INVERSE_WORLDVIEW_MATRIX
| ACT_TRANSPOSE_WORLDVIEW_MATRIX
| ACT_INVERSE_TRANSPOSE_WORLDVIEW_MATRIX
| ACT_WORLDVIEWPROJ_MATRIX
| ACT_INVERSE_WORLDVIEWPROJ_MATRIX
| ACT_TRANSPOSE_WORLDVIEWPROJ_MATRIX
| ACT_INVERSE_TRANSPOSE_WORLDVIEWPROJ_MATRIX
| ACT_RENDER_TARGET_FLIPPING
| ACT_FOG_COLOUR
| ACT_FOG_PARAMS
| ACT_SURFACE_AMBIENT_COLOUR
| ACT_SURFACE_DIFFUSE_COLOUR
| ACT_SURFACE_SPECULAR_COLOUR
| ACT_SURFACE_EMISSIVE_COLOUR
| ACT_SURFACE_SHININESS
| ACT_LIGHT_COUNT
| ACT_AMBIENT_LIGHT_COLOUR
| ACT_LIGHT_DIFFUSE_COLOUR
| ACT_LIGHT_SPECULAR_COLOUR
| ACT_LIGHT_ATTENUATION
| ACT_SPOTLIGHT_PARAMS
| ACT_LIGHT_POSITION
| ACT_LIGHT_POSITION_OBJECT_SPACE
| ACT_LIGHT_POSITION_VIEW_SPACE
| ACT_LIGHT_DIRECTION
| ACT_LIGHT_DIRECTION_OBJECT_SPACE
| ACT_LIGHT_DIRECTION_VIEW_SPACE
| ACT_LIGHT_DISTANCE_OBJECT_SPACE
| ACT_LIGHT_POWER_SCALE
| ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED
| ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED
| ACT_LIGHT_DIFFUSE_COLOUR_ARRAY
| ACT_LIGHT_SPECULAR_COLOUR_ARRAY
| ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED_ARRAY
| ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED_ARRAY
| ACT_LIGHT_ATTENUATION_ARRAY
| ACT_LIGHT_POSITION_ARRAY
| ACT_LIGHT_POSITION_OBJECT_SPACE_ARRAY
| ACT_LIGHT_POSITION_VIEW_SPACE_ARRAY
| ACT_LIGHT_DIRECTION_ARRAY
| ACT_LIGHT_DIRECTION_OBJECT_SPACE_ARRAY
| ACT_LIGHT_DIRECTION_VIEW_SPACE_ARRAY
| ACT_LIGHT_DISTANCE_OBJECT_SPACE_ARRAY
| ACT_LIGHT_POWER_SCALE_ARRAY
| 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
| ACT_DERIVED_LIGHT_SPECULAR_COLOUR_ARRAY
| ACT_LIGHT_NUMBER
| ACT_LIGHT_CASTS_SHADOWS
| ACT_SHADOW_EXTRUSION_DISTANCE
| ACT_CAMERA_POSITION
| ACT_CAMERA_POSITION_OBJECT_SPACE
| ACT_TEXTURE_VIEWPROJ_MATRIX
| ACT_TEXTURE_VIEWPROJ_MATRIX_ARRAY
| ACT_TEXTURE_WORLDVIEWPROJ_MATRIX
| ACT_TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY
| ACT_SPOTLIGHT_VIEWPROJ_MATRIX
| ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX
| ACT_CUSTOM
| ACT_TIME
| ACT_TIME_0_X
| ACT_COSTIME_0_X
| ACT_SINTIME_0_X
| ACT_TANTIME_0_X
| ACT_TIME_0_X_PACKED
| ACT_TIME_0_1
| ACT_COSTIME_0_1
| ACT_SINTIME_0_1
| ACT_TANTIME_0_1
| ACT_TIME_0_1_PACKED
| ACT_TIME_0_2PI
| ACT_COSTIME_0_2PI
| ACT_SINTIME_0_2PI
| ACT_TANTIME_0_2PI
| ACT_TIME_0_2PI_PACKED
| ACT_FRAME_TIME
| ACT_FPS
| ACT_VIEWPORT_WIDTH
| ACT_VIEWPORT_HEIGHT
| ACT_INVERSE_VIEWPORT_WIDTH
| ACT_INVERSE_VIEWPORT_HEIGHT
| ACT_VIEWPORT_SIZE
| ACT_VIEW_DIRECTION
| ACT_VIEW_SIDE_VECTOR
| ACT_VIEW_UP_VECTOR
| ACT_FOV
| ACT_NEAR_CLIP_DISTANCE
| ACT_FAR_CLIP_DISTANCE
| ACT_PASS_NUMBER
| ACT_PASS_ITERATION_NUMBER
| ACT_ANIMATION_PARAMETRIC
| ACT_TEXEL_OFFSETS
| ACT_SCENE_DEPTH_RANGE
| ACT_SHADOW_SCENE_DEPTH_RANGE
| ACT_SHADOW_COLOUR
| ACT_TEXTURE_SIZE
| ACT_INVERSE_TEXTURE_SIZE
| ACT_PACKED_TEXTURE_SIZE
| ACT_TEXTURE_MATRIX
| ACT_LOD_CAMERA_POSITION
| ACT_LOD_CAMERA_POSITION_OBJECT_SPACE
| ACT_LIGHT_CUSTOM
deriving Eq
data ACDataType
= ACDT_NONE
| ACDT_INT
| ACDT_REAL
deriving Eq
data ElementType
= ET_INT
| ET_REAL
deriving Eq
data AutoConstantDefinition
= AutoConstantDefinition
{ acdType :: AutoConstantType
, acdName :: String
, acdElementCount :: Int
, acdElementType :: ElementType
, acdDataType :: ACDataType
}
deriving Eq
data AutoConstantEntry
= AutoConstantEntry
{ aceParamType :: AutoConstantType
, acePhysicalIndex :: Int
, aceElementCount :: Int
, aceVariability :: GpuParamVariability
}
deriving Eq
data GpuProgramParameters
= GpuProgramParameters
{ gppNamedConstants :: [GpuNamedConstant]
}
data GpuNamedConstant
= GpuNamedConstant
{ gncName :: String
, gncType :: ElementType
, gncIntValues :: [Int]
, gncFloatValues :: [FloatType]
}
autoConstantDictionary :: [(AutoConstantType,String,Int,ElementType,ACDataType)]
autoConstantDictionary =
[ (ACT_WORLD_MATRIX, "world_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_WORLD_MATRIX, "inverse_world_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_WORLD_MATRIX, "transpose_world_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_WORLD_MATRIX, "inverse_transpose_world_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_WORLD_MATRIX_ARRAY_3x4, "world_matrix_array_3x4", 12, ET_REAL, ACDT_NONE)
, (ACT_WORLD_MATRIX_ARRAY, "world_matrix_array", 16, ET_REAL, ACDT_NONE)
, (ACT_VIEW_MATRIX, "view_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_VIEW_MATRIX, "inverse_view_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_VIEW_MATRIX, "transpose_view_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_VIEW_MATRIX, "inverse_transpose_view_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_PROJECTION_MATRIX, "projection_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_PROJECTION_MATRIX, "inverse_projection_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_PROJECTION_MATRIX, "transpose_projection_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_PROJECTION_MATRIX, "inverse_transpose_projection_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_VIEWPROJ_MATRIX, "viewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_VIEWPROJ_MATRIX, "inverse_viewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_VIEWPROJ_MATRIX, "transpose_viewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_VIEWPROJ_MATRIX, "inverse_transpose_viewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_WORLDVIEW_MATRIX, "worldview_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_WORLDVIEW_MATRIX, "inverse_worldview_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_WORLDVIEW_MATRIX, "transpose_worldview_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_WORLDVIEW_MATRIX, "inverse_transpose_worldview_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_WORLDVIEWPROJ_MATRIX, "worldviewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_WORLDVIEWPROJ_MATRIX, "inverse_worldviewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_TRANSPOSE_WORLDVIEWPROJ_MATRIX, "transpose_worldviewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_TRANSPOSE_WORLDVIEWPROJ_MATRIX, "inverse_transpose_worldviewproj_matrix", 16, ET_REAL, ACDT_NONE)
, (ACT_RENDER_TARGET_FLIPPING, "render_target_flipping", 1, ET_REAL, ACDT_NONE)
, (ACT_FOG_COLOUR, "fog_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_FOG_PARAMS, "fog_params", 4, ET_REAL, ACDT_NONE)
, (ACT_SURFACE_AMBIENT_COLOUR, "surface_ambient_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_SURFACE_DIFFUSE_COLOUR, "surface_diffuse_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_SURFACE_SPECULAR_COLOUR, "surface_specular_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_SURFACE_EMISSIVE_COLOUR, "surface_emissive_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_SURFACE_SHININESS, "surface_shininess", 1, ET_REAL, ACDT_NONE)
, (ACT_LIGHT_COUNT, "light_count", 1, ET_REAL, ACDT_NONE)
, (ACT_AMBIENT_LIGHT_COLOUR, "ambient_light_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_LIGHT_DIFFUSE_COLOUR, "light_diffuse_colour", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_SPECULAR_COLOUR, "light_specular_colour", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_ATTENUATION, "light_attenuation", 4, ET_REAL, ACDT_INT)
, (ACT_SPOTLIGHT_PARAMS, "spotlight_params", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION, "light_position", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION_OBJECT_SPACE, "light_position_object_space", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION_VIEW_SPACE, "light_position_view_space", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION, "light_direction", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION_OBJECT_SPACE, "light_direction_object_space", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION_VIEW_SPACE, "light_direction_view_space", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DISTANCE_OBJECT_SPACE, "light_distance_object_space", 1, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POWER_SCALE, "light_power", 1, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED, "light_diffuse_colour_power_scaled", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED, "light_specular_colour_power_scaled", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIFFUSE_COLOUR_ARRAY, "light_diffuse_colour_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_SPECULAR_COLOUR_ARRAY, "light_specular_colour_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED_ARRAY, "light_diffuse_colour_power_scaled_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED_ARRAY, "light_specular_colour_power_scaled_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_ATTENUATION_ARRAY, "light_attenuation_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION_ARRAY, "light_position_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION_OBJECT_SPACE_ARRAY, "light_position_object_space_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POSITION_VIEW_SPACE_ARRAY, "light_position_view_space_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION_ARRAY, "light_direction_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION_OBJECT_SPACE_ARRAY, "light_direction_object_space_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DIRECTION_VIEW_SPACE_ARRAY, "light_direction_view_space_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_DISTANCE_OBJECT_SPACE_ARRAY, "light_distance_object_space_array", 1, ET_REAL, ACDT_INT)
, (ACT_LIGHT_POWER_SCALE_ARRAY, "light_power_array", 1, ET_REAL, ACDT_INT)
, (ACT_SPOTLIGHT_PARAMS_ARRAY, "spotlight_params_array", 4, ET_REAL, ACDT_INT)
, (ACT_DERIVED_AMBIENT_LIGHT_COLOUR, "derived_ambient_light_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_DERIVED_SCENE_COLOUR, "derived_scene_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_DERIVED_LIGHT_DIFFUSE_COLOUR, "derived_light_diffuse_colour", 4, ET_REAL, ACDT_INT)
, (ACT_DERIVED_LIGHT_SPECULAR_COLOUR, "derived_light_specular_colour", 4, ET_REAL, ACDT_INT)
, (ACT_DERIVED_LIGHT_DIFFUSE_COLOUR_ARRAY, "derived_light_diffuse_colour_array", 4, ET_REAL, ACDT_INT)
, (ACT_DERIVED_LIGHT_SPECULAR_COLOUR_ARRAY, "derived_light_specular_colour_array", 4, ET_REAL, ACDT_INT)
, (ACT_LIGHT_NUMBER, "light_number", 1, ET_REAL, ACDT_INT)
, (ACT_LIGHT_CASTS_SHADOWS, "light_casts_shadows", 1, ET_REAL, ACDT_INT)
, (ACT_SHADOW_EXTRUSION_DISTANCE, "shadow_extrusion_distance", 1, ET_REAL, ACDT_INT)
, (ACT_CAMERA_POSITION, "camera_position", 3, ET_REAL, ACDT_NONE)
, (ACT_CAMERA_POSITION_OBJECT_SPACE, "camera_position_object_space", 3, ET_REAL, ACDT_NONE)
, (ACT_TEXTURE_VIEWPROJ_MATRIX, "texture_viewproj_matrix", 16, ET_REAL, ACDT_INT)
, (ACT_TEXTURE_VIEWPROJ_MATRIX_ARRAY, "texture_viewproj_matrix_array", 16, ET_REAL, ACDT_INT)
, (ACT_TEXTURE_WORLDVIEWPROJ_MATRIX, "texture_worldviewproj_matrix", 16, ET_REAL, ACDT_INT)
, (ACT_TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY, "texture_worldviewproj_matrix_array", 16, ET_REAL, ACDT_INT)
, (ACT_SPOTLIGHT_VIEWPROJ_MATRIX, "spotlight_viewproj_matrix", 16, ET_REAL, ACDT_INT)
, (ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX, "spotlight_worldviewproj_matrix", 16, ET_REAL, ACDT_INT)
, (ACT_CUSTOM, "custom", 4, ET_REAL, ACDT_INT)
, (ACT_TIME, "time", 1, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_X, "time_0_x", 4, ET_REAL, ACDT_REAL)
, (ACT_COSTIME_0_X, "costime_0_x", 4, ET_REAL, ACDT_REAL)
, (ACT_SINTIME_0_X, "sintime_0_x", 4, ET_REAL, ACDT_REAL)
, (ACT_TANTIME_0_X, "tantime_0_x", 4, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_X_PACKED, "time_0_x_packed", 4, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_1, "time_0_1", 4, ET_REAL, ACDT_REAL)
, (ACT_COSTIME_0_1, "costime_0_1", 4, ET_REAL, ACDT_REAL)
, (ACT_SINTIME_0_1, "sintime_0_1", 4, ET_REAL, ACDT_REAL)
, (ACT_TANTIME_0_1, "tantime_0_1", 4, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_1_PACKED, "time_0_1_packed", 4, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_2PI, "time_0_2pi", 4, ET_REAL, ACDT_REAL)
, (ACT_COSTIME_0_2PI, "costime_0_2pi", 4, ET_REAL, ACDT_REAL)
, (ACT_SINTIME_0_2PI, "sintime_0_2pi", 4, ET_REAL, ACDT_REAL)
, (ACT_TANTIME_0_2PI, "tantime_0_2pi", 4, ET_REAL, ACDT_REAL)
, (ACT_TIME_0_2PI_PACKED, "time_0_2pi_packed", 4, ET_REAL, ACDT_REAL)
, (ACT_FRAME_TIME, "frame_time", 1, ET_REAL, ACDT_REAL)
, (ACT_FPS, "fps", 1, ET_REAL, ACDT_NONE)
, (ACT_VIEWPORT_WIDTH, "viewport_width", 1, ET_REAL, ACDT_NONE)
, (ACT_VIEWPORT_HEIGHT, "viewport_height", 1, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_VIEWPORT_WIDTH, "inverse_viewport_width", 1, ET_REAL, ACDT_NONE)
, (ACT_INVERSE_VIEWPORT_HEIGHT, "inverse_viewport_height", 1, ET_REAL, ACDT_NONE)
, (ACT_VIEWPORT_SIZE, "viewport_size", 4, ET_REAL, ACDT_NONE)
, (ACT_VIEW_DIRECTION, "view_direction", 3, ET_REAL, ACDT_NONE)
, (ACT_VIEW_SIDE_VECTOR, "view_side_vector", 3, ET_REAL, ACDT_NONE)
, (ACT_VIEW_UP_VECTOR, "view_up_vector", 3, ET_REAL, ACDT_NONE)
, (ACT_FOV, "fov", 1, ET_REAL, ACDT_NONE)
, (ACT_NEAR_CLIP_DISTANCE, "near_clip_distance", 1, ET_REAL, ACDT_NONE)
, (ACT_FAR_CLIP_DISTANCE, "far_clip_distance", 1, ET_REAL, ACDT_NONE)
, (ACT_PASS_NUMBER, "pass_number", 1, ET_REAL, ACDT_NONE)
, (ACT_PASS_ITERATION_NUMBER, "pass_iteration_number", 1, ET_REAL, ACDT_NONE)
, (ACT_ANIMATION_PARAMETRIC, "animation_parametric", 4, ET_REAL, ACDT_INT)
, (ACT_TEXEL_OFFSETS, "texel_offsets", 4, ET_REAL, ACDT_NONE)
, (ACT_SCENE_DEPTH_RANGE, "scene_depth_range", 4, ET_REAL, ACDT_NONE)
, (ACT_SHADOW_SCENE_DEPTH_RANGE, "shadow_scene_depth_range", 4, ET_REAL, ACDT_INT)
, (ACT_SHADOW_COLOUR, "shadow_colour", 4, ET_REAL, ACDT_NONE)
, (ACT_TEXTURE_SIZE, "texture_size", 4, ET_REAL, ACDT_INT)
, (ACT_INVERSE_TEXTURE_SIZE, "inverse_texture_size", 4, ET_REAL, ACDT_INT)
, (ACT_PACKED_TEXTURE_SIZE, "packed_texture_size", 4, ET_REAL, ACDT_INT)
, (ACT_TEXTURE_MATRIX, "texture_matrix", 16, ET_REAL, ACDT_INT)
, (ACT_LOD_CAMERA_POSITION, "lod_camera_position", 3, ET_REAL, ACDT_NONE)
, (ACT_LOD_CAMERA_POSITION_OBJECT_SPACE, "lod_camera_position_object_space", 3, ET_REAL, ACDT_NONE)
, (ACT_LIGHT_CUSTOM, "light_custom", 4, ET_REAL, ACDT_INT)
]