This documents an old version of bs::framework. Click here to see the latest release.
Utility

Description

Various utility methods and types used by the core layer.

Classes

struct  UUID
 Represents a universally unique identifier. More...
 
class  UUIDGenerator
 Utility class for generating universally unique identifiers. More...
 
struct  CompressionOptions
 Options used to control texture compression. More...
 
struct  MipMapGenOptions
 Options used to control texture mip map generation. More...
 
class  PixelUtil
 Utility methods for converting and managing pixel data and formats. More...
 
struct  PixelVolume
 Represents a 3D region of pixels used for referencing pixel data. More...
 
union  PackedNormal
 Normal packed in a 32-bit structure. More...
 
class  MeshUtility
 Performs various operations on mesh geometry. More...
 
struct  GpuParamDataTypeInfo
 Contains data about a type used for GPU data parameters. More...
 
struct  GpuDataParamInfos
 Contains a lookup table for various information of all types used for data GPU parameters. More...
 
struct  UVWAddressingMode
 Texture addressing mode, per component. More...
 
struct  TextureSurface
 References a subset of surfaces within a texture. More...
 
struct  AudioDataInfo
 Meta-data describing a chunk of audio. More...
 
class  CoreSyncData
 Helper class for syncing dirty data from sim CoreObject to core CoreObject and other way around. More...
 

Typedefs

typedef Flags< MirrorModeBitsMirrorMode
 
typedef Flags< ShaderFlagShaderFlags
 
typedef Flags< RenderSurfaceMaskBitsRenderSurfaceMask
 
typedef Map< String, StringNameValuePairList
 

Enumerations

enum  CompressionQuality { Fastest, Normal, Production, Highest }
 Types of texture compression quality. More...
 
enum  AlphaMode { None, Transparency, Premultiplied }
 Mode of the alpha channel in a texture. More...
 
enum  MipMapWrapMode { Mirror, Repeat, Clamp }
 Wrap mode to use when generating mip maps. More...
 
enum  MipMapFilter { Box, Triangle, Kaiser }
 Filter to use when generating mip maps. More...
 
enum  MirrorModeBits { X = 1 << 0, Y = 1 << 1, Z = 1 << 2 }
 Determines on which axes to mirror an image. More...
 
enum  BlendFactor {
  BF_ONE, BF_ZERO, BF_DEST_COLOR, BF_SOURCE_COLOR,
  BF_INV_DEST_COLOR, BF_INV_SOURCE_COLOR, BF_DEST_ALPHA, BF_SOURCE_ALPHA,
  BF_INV_DEST_ALPHA, BF_INV_SOURCE_ALPHA
}
 Factors used when blending new pixels with existing pixels. More...
 
enum  BlendOperation {
  BO_ADD, BO_SUBTRACT, BO_REVERSE_SUBTRACT, BO_MIN,
  BO_MAX
}
 Operations that determines how are blending factors combined. More...
 
enum  CompareFunction {
  CMPF_ALWAYS_FAIL, CMPF_ALWAYS_PASS, CMPF_LESS, CMPF_LESS_EQUAL,
  CMPF_EQUAL, CMPF_NOT_EQUAL, CMPF_GREATER_EQUAL, CMPF_GREATER
}
 Comparison functions used for the depth/stencil buffer. More...
 
enum  TextureAddressingMode { TAM_WRAP, TAM_MIRROR, TAM_CLAMP, TAM_BORDER }
 Types of texture addressing modes that determine what happens when texture coordinates are outside of the valid range. More...
 
enum  FilterType { FT_MIN, FT_MAG, FT_MIP }
 Types of available filtering situations. More...
 
enum  FilterOptions { FO_NONE = 0, FO_POINT = 1, FO_LINEAR = 2, FO_ANISOTROPIC = 3 }
 Filtering options for textures. More...
 
enum  FrameBufferType { FBT_COLOR = 0x1, FBT_DEPTH = 0x2, FBT_STENCIL = 0x4 }
 Types of frame buffers. More...
 
enum  CullingMode { CULL_NONE = 0, CULL_CLOCKWISE = 1, CULL_COUNTERCLOCKWISE = 2 }
 Types of culling that determine how (and if) hardware discards faces with certain winding order. More...
 
enum  PolygonMode { PM_WIREFRAME = 1, PM_SOLID = 2 }
 Polygon mode to use when rasterizing. More...
 
enum  StencilOperation {
  SOP_KEEP, SOP_ZERO, SOP_REPLACE, SOP_INCREMENT,
  SOP_DECREMENT, SOP_INCREMENT_WRAP, SOP_DECREMENT_WRAP, SOP_INVERT
}
 Types of action that can happen on the stencil buffer. More...
 
enum  DrawOperationType {
  DOT_POINT_LIST = 1, DOT_LINE_LIST = 2, DOT_LINE_STRIP = 3, DOT_TRIANGLE_LIST = 4,
  DOT_TRIANGLE_STRIP = 5, DOT_TRIANGLE_FAN = 6
}
 Describes operation that will be used for rendering a certain set of vertices. More...
 
enum  IndexType { IT_16BIT, IT_32BIT }
 Type of mesh indices used, used for determining maximum number of vertices in a mesh. More...
 
enum  GpuLockOptions {
  GBL_READ_WRITE, GBL_WRITE_ONLY_DISCARD, GBL_WRITE_ONLY_DISCARD_RANGE, GBL_READ_ONLY,
  GBL_WRITE_ONLY_NO_OVERWRITE, GBL_WRITE_ONLY
}
 These values represent a hint to the driver when locking a hardware buffer. More...
 
enum  GpuProgramType {
  GPT_VERTEX_PROGRAM, GPT_FRAGMENT_PROGRAM, GPT_GEOMETRY_PROGRAM, GPT_DOMAIN_PROGRAM,
  GPT_HULL_PROGRAM, GPT_COMPUTE_PROGRAM, GPT_COUNT
}
 Types of programs that may run on GPU. More...
 
enum  GpuBufferUsage { GBU_STATIC = 1 << 0, GBU_DYNAMIC = 1 << 1, GBU_LOADSTORE = GBU_STATIC | 1 << 2 }
 Values that represent hardware buffer usage. More...
 
enum  GpuBufferType { GBT_STANDARD, GBT_STRUCTURED, GBT_INDIRECTARGUMENT }
 Types of generic GPU buffers that may be attached to GPU programs. More...
 
enum  GpuBufferFormat {
  BF_16X1F, BF_16X2F, BF_16X4F, BF_32X1F,
  BF_32X2F, BF_32X3F, BF_32X4F, BF_8X1,
  BF_8X2, BF_8X4, BF_16X1, BF_16X2,
  BF_16X4, BF_8X1S, BF_8X2S, BF_8X4S,
  BF_16X1S, BF_16X2S, BF_16X4S, BF_32X1S,
  BF_32X2S, BF_32X3S, BF_32X4S, BF_8X1U,
  BF_8X2U, BF_8X4U, BF_16X1U, BF_16X2U,
  BF_16X4U, BF_32X1U, BF_32X2U, BF_32X3U,
  BF_32X4U, BF_COUNT, BF_UNKNOWN = 0xffff
}
 Types of valid formats used for standard GPU buffers. More...
 
enum  GpuViewUsage { GVU_DEFAULT = 0x01, GVU_RENDERTARGET = 0x02, GVU_DEPTHSTENCIL = 0x04, GVU_RANDOMWRITE = 0x08 }
 Different types of GPU views that control how GPU sees a hardware buffer. More...
 
enum  GpuDeviceFlags {
  GDF_DEFAULT = 0, GDF_PRIMARY = 0x01, GDF_GPU2 = 0x02, GDF_GPU3 = 0x04,
  GDF_GPU4 = 0x08, GDF_GPU5 = 0x10
}
 Combineable set of bits that describe a set of physical GPU's. More...
 
enum  GpuParamType { GPT_DATA, GPT_TEXTURE, GPT_BUFFER, GPT_SAMPLER }
 Type of a parameter in a GPU program. More...
 
enum  GpuParamDataType {
  GPDT_FLOAT1 = 1, GPDT_FLOAT2 = 2, GPDT_FLOAT3 = 3, GPDT_FLOAT4 = 4,
  GPDT_MATRIX_2X2 = 11, GPDT_MATRIX_2X3 = 12, GPDT_MATRIX_2X4 = 13, GPDT_MATRIX_3X2 = 14,
  GPDT_MATRIX_3X3 = 15, GPDT_MATRIX_3X4 = 16, GPDT_MATRIX_4X2 = 17, GPDT_MATRIX_4X3 = 18,
  GPDT_MATRIX_4X4 = 19, GPDT_INT1 = 20, GPDT_INT2 = 21, GPDT_INT3 = 22,
  GPDT_INT4 = 23, GPDT_BOOL = 24, GPDT_STRUCT = 25, GPDT_COLOR = 26,
  GPDT_COUNT = 27, GPDT_UNKNOWN = 0xffff
}
 Type of GPU data parameters that can be used as inputs to a GPU program. More...
 
enum  TextureType { TEX_TYPE_1D = 1, TEX_TYPE_2D = 2, TEX_TYPE_3D = 3, TEX_TYPE_CUBE_MAP = 4 }
 Available texture types. More...
 
enum  ProjectionType { PT_ORTHOGRAPHIC, PT_PERSPECTIVE }
 Projection type to use by the camera. More...
 
enum  GpuParamObjectType {
  GPOT_SAMPLER1D = 1, GPOT_SAMPLER2D = 2, GPOT_SAMPLER3D = 3, GPOT_SAMPLERCUBE = 4,
  GPOT_SAMPLER2DMS = 5, GPOT_TEXTURE1D = 11, GPOT_TEXTURE2D = 12, GPOT_TEXTURE3D = 13,
  GPOT_TEXTURECUBE = 14, GPOT_TEXTURE2DMS = 15, GPOT_BYTE_BUFFER = 32, GPOT_STRUCTURED_BUFFER = 33,
  GPOT_RWTYPED_BUFFER = 41, GPOT_RWBYTE_BUFFER = 42, GPOT_RWSTRUCTURED_BUFFER = 43, GPOT_RWSTRUCTURED_BUFFER_WITH_COUNTER = 44,
  GPOT_RWAPPEND_BUFFER = 45, GPOT_RWCONSUME_BUFFER = 46, GPOT_RWTEXTURE1D = 50, GPOT_RWTEXTURE2D = 51,
  GPOT_RWTEXTURE3D = 52, GPOT_RWTEXTURE2DMS = 53, GPOT_TEXTURE1DARRAY = 54, GPOT_TEXTURE2DARRAY = 55,
  GPOT_TEXTURECUBEARRAY = 56, GPOT_TEXTURE2DMSARRAY = 57, GPOT_RWTEXTURE1DARRAY = 58, GPOT_RWTEXTURE2DARRAY = 59,
  GPOT_RWTEXTURE2DMSARRAY = 60, GPOT_UNKNOWN = 0xffff
}
 Type of GPU object parameters that can be used as inputs to a GPU program. More...
 
enum  GpuQueueType { GQT_GRAPHICS, GQT_COMPUTE, GQT_UPLOAD, GQT_COUNT }
 Types of GPU queues. More...
 
enum  BufferWriteType { BWT_NORMAL, BWT_DISCARD, BTW_NO_OVERWRITE }
 These values represent a hint to the driver when writing to a GPU buffer. More...
 
enum  QueuePriority { Opaque = 100000, Transparent = 90000, Skybox = 80000, Overlay = 70000 }
 Suggested queue priority numbers used for sorting objects in the render queue. More...
 
enum  QueueSortType { FrontToBack, BackToFront, None }
 Type of sorting to perform on an object when added to a render queue. More...
 
enum  ShaderFlag { Transparent = 0x1, Forward = 0x2 }
 Flags that may be assigned to a shader that let the renderer know how to interpret the shader. More...
 
enum  PhysicsMeshType { Triangle, Convex }
 Valid types of a mesh used for physics. More...
 
enum  CubemapSourceType { Single, Faces, Spherical, Cylindrical }
 Determines the type of the source image for generating cubemaps. More...
 
enum  RenderSurfaceMaskBits {
  RT_NONE = 0, RT_COLOR0 = 1 << 0, RT_COLOR1 = 1 << 1, RT_COLOR2 = 1 << 2,
  RT_COLOR3 = 1 << 3, RT_COLOR4 = 1 << 4, RT_COLOR5 = 1 << 5, RT_COLOR6 = 1 << 6,
  RT_COLOR7 = 1 << 7, RT_DEPTH = 1 << 30, RT_STENCIL = 1 << 31, RT_DEPTH_STENCIL = (1 << 30) | (1 << 31),
  RT_ALL = 0xFFFFFFFF
}
 Bits that map to a specific surface of a render target. More...
 
enum  ObjectMobility { Movable, Immovable, Static }
 Controls what kind of mobility restrictions a scene object has. More...
 

Functions

 BS_FLAGS_OPERATORS (MirrorModeBits)
 
 BS_FLAGS_OPERATORS (RenderSurfaceMaskBits)
 

Enumeration Type Documentation

◆ AlphaMode

enum AlphaMode
strong

Mode of the alpha channel in a texture.

◆ BlendFactor

Factors used when blending new pixels with existing pixels.

Enumerator
BF_ONE 

Use a value of one for all pixel components.

BF_ZERO 

Use a value of zero for all pixel components.

BF_DEST_COLOR 

Use the existing pixel value.

BF_SOURCE_COLOR 

Use the newly generated pixel value.

BF_INV_DEST_COLOR 

Use the inverse of the existing value.

BF_INV_SOURCE_COLOR 

Use the inverse of the newly generated pixel value.

BF_DEST_ALPHA 

Use the existing alpha value.

BF_SOURCE_ALPHA 

Use the newly generated alpha value.

BF_INV_DEST_ALPHA 

Use the inverse of the existing alpha value.

BF_INV_SOURCE_ALPHA 

Use the inverse of the newly generated alpha value.

◆ BlendOperation

Operations that determines how are blending factors combined.

Enumerator
BO_ADD 

Blend factors are added together.

BO_SUBTRACT 

Blend factors are subtracted in "srcFactor - dstFactor" order.

BO_REVERSE_SUBTRACT 

Blend factors are subtracted in "dstFactor - srcFactor" order.

BO_MIN 

Minimum of the two factors is chosen.

BO_MAX 

Maximum of the two factors is chosen.

◆ BufferWriteType

These values represent a hint to the driver when writing to a GPU buffer.

Enumerator
BWT_NORMAL 

Default flag with least restrictions.

Can cause a CPU-GPU sync point so avoid using it often (every frame) as that might limit your performance significantly.

BWT_DISCARD 

Tells the driver to completely discard the contents of the buffer you are writing to.

The driver will (most likely) internally allocate another buffer with same specifications (which is fairly fast) and you will avoid CPU-GPU stalls.

BTW_NO_OVERWRITE 

Guarantees the driver that you will not be updating any part of the buffer that is currently used.

This will also avoid CPU-GPU stalls, without requiring you to discard the entire buffer. However it is hard to guarantee when GPU has finished using a buffer.

◆ CompareFunction

Comparison functions used for the depth/stencil buffer.

Enumerator
CMPF_ALWAYS_FAIL 

Operation will always fail.

CMPF_ALWAYS_PASS 

Operation will always pass.

CMPF_LESS 

Operation will pass if the new value is less than existing value.

CMPF_LESS_EQUAL 

Operation will pass if the new value is less or equal than existing value.

CMPF_EQUAL 

Operation will pass if the new value is equal to the existing value.

CMPF_NOT_EQUAL 

Operation will pass if the new value is not equal to the existing value.

CMPF_GREATER_EQUAL 

Operation will pass if the new value greater or equal than the existing value.

CMPF_GREATER 

Operation will pass if the new value greater than the existing value.

◆ CompressionQuality

enum CompressionQuality
strong

Types of texture compression quality.

◆ CubemapSourceType

enum CubemapSourceType
strong

Determines the type of the source image for generating cubemaps.

Enumerator
Single 

Source is a single image that will be replicated on all cubemap faces.

Faces 

Source is a list of 6 images, either sequentially next to each other or in a cross format.

The system will automatically guess the layout and orientation based on the aspect ratio.

Spherical 

Source is a single spherical panoramic image.

Cylindrical 

Source is a single cylindrical panoramic image.

◆ CullingMode

Types of culling that determine how (and if) hardware discards faces with certain winding order.

Winding order can be used for determining front or back facing polygons by checking the order of its vertices from the render perspective.

Enumerator
CULL_NONE 

Hardware performs no culling and renders both sides.

CULL_CLOCKWISE 

Hardware culls faces that have a clockwise vertex ordering.

CULL_COUNTERCLOCKWISE 

Hardware culls faces that have a counter-clockwise vertex ordering.

◆ DrawOperationType

Describes operation that will be used for rendering a certain set of vertices.

Enumerator
DOT_POINT_LIST 

Each vertex represents a point.

DOT_LINE_LIST 

Each sequential pair of vertices represent a line.

DOT_LINE_STRIP 

Each vertex (except the first) forms a line with the previous vertex.

DOT_TRIANGLE_LIST 

Each sequential 3-tuple of vertices represent a triangle.

DOT_TRIANGLE_STRIP 

Each vertex (except the first two) form a triangle with the previous two vertices.

DOT_TRIANGLE_FAN 

Each vertex (except the first two) form a triangle with the first vertex and previous vertex.

◆ FilterOptions

Filtering options for textures.

Enumerator
FO_NONE 

Use no filtering.

Only relevant for mipmap filtering.

FO_POINT 

Filter using the nearest found pixel.

Most basic filtering.

FO_LINEAR 

Average a 2x2 pixel area, signifies bilinear filtering for texture, trilinear for mipmaps.

FO_ANISOTROPIC 

More advanced filtering that improves quality when viewing textures at a steep angle.

◆ FilterType

enum FilterType

Types of available filtering situations.

Enumerator
FT_MIN 

The filter used when shrinking a texture.

FT_MAG 

The filter used when magnifying a texture.

FT_MIP 

The filter used when filtering between mipmaps.

◆ FrameBufferType

Types of frame buffers.

Enumerator
FBT_COLOR 

Color surface.

FBT_DEPTH 

Depth surface.

FBT_STENCIL 

Stencil surface.

◆ GpuBufferFormat

Types of valid formats used for standard GPU buffers.

Enumerator
BF_16X1F 

1D 16-bit floating-point format.

BF_16X2F 

2D 16-bit floating-point format.

BF_16X4F 

4D 16-bit floating-point format.

BF_32X1F 

1D 32-bit floating-point format.

BF_32X2F 

2D 32-bit floating-point format.

BF_32X3F 

3D 32-bit floating-point format.

BF_32X4F 

4D 32-bit floating-point format.

BF_8X1 

1D 8-bit normalized format.

BF_8X2 

2D 8-bit normalized format.

BF_8X4 

4D 8-bit normalized format.

BF_16X1 

1D 16-bit normalized format.

BF_16X2 

2D 16-bit normalized format.

BF_16X4 

4D 16-bit normalized format.

BF_8X1S 

1D 8-bit signed integer format.

BF_8X2S 

2D 8-bit signed integer format.

BF_8X4S 

4D 8-bit signed integer format.

BF_16X1S 

1D 16-bit signed integer format.

BF_16X2S 

2D 16-bit signed integer format.

BF_16X4S 

4D 16-bit signed integer format.

BF_32X1S 

1D 32-bit signed integer format.

BF_32X2S 

2D 32-bit signed integer format.

BF_32X3S 

3D 32-bit signed integer format.

BF_32X4S 

4D 32-bit signed integer format.

BF_8X1U 

1D 8-bit unsigned integer format.

BF_8X2U 

2D 8-bit unsigned integer format.

BF_8X4U 

4D 8-bit unsigned integer format.

BF_16X1U 

1D 16-bit unsigned integer format.

BF_16X2U 

2D 16-bit unsigned integer format.

BF_16X4U 

4D 16-bit unsigned integer format.

BF_32X1U 

1D 32-bit unsigned integer format.

BF_32X2U 

2D 32-bit unsigned integer format.

BF_32X3U 

3D 32-bit unsigned integer format.

BF_32X4U 

4D 32-bit unsigned integer format.

BF_COUNT 

Not a valid format.

Keep just before BS_UNKNOWN.

BF_UNKNOWN 

Unknown format (used for non-standard buffers, like structured or raw.

◆ GpuBufferType

Types of generic GPU buffers that may be attached to GPU programs.

Enumerator
GBT_STANDARD 

Buffer containing an array of primitives (e.g.

float4's).

GBT_STRUCTURED 

Buffer containing an array of structures.

Structure parameters can usually be easily accessed from within the GPU program.

GBT_INDIRECTARGUMENT 

Special type of buffer allowing you to specify arguments for draw operations inside the buffer instead of providing them directly.

Useful when you want to control drawing directly from GPU.

◆ GpuBufferUsage

Values that represent hardware buffer usage.

These usually determine in what type of memory is buffer placed in, however that depends on rendering API.

Enumerator
GBU_STATIC 

Signifies that you don't plan on modifying the buffer often (or at all) after creation.

Modifying such buffer will involve a larger performance hit. Mutually exclusive with GBU_DYNAMIC.

GBU_DYNAMIC 

Signifies that you will modify this buffer fairly often (e.g.

every frame). Mutually exclusive with GBU_STATIC.

GBU_LOADSTORE 

Siginifies that the buffer can be used for arbitrary load/store operations on the GPU.

Implies GBU_STATIC.

◆ GpuDeviceFlags

Combineable set of bits that describe a set of physical GPU's.

Enumerator
GDF_DEFAULT 

Use the default set of devices.

This may be the primary device or multiple devices. Cannot be used together with other device flags.

GDF_PRIMARY 

Use only the primary GPU.

GDF_GPU2 

Use the second GPU.

GDF_GPU3 

Use the third GPU.

GDF_GPU4 

Use the fourth GPU.

GDF_GPU5 

Use the fifth GPU.

◆ GpuLockOptions

These values represent a hint to the driver when locking a hardware buffer.

Enumerator
GBL_READ_WRITE 

Allows you to write to the buffer.

Can cause a CPU-GPU sync point so avoid using it often (every frame) as that might limit your performance significantly.

GBL_WRITE_ONLY_DISCARD 

Allows you to write to the buffer.

Tells the driver to completely discard the contents of the buffer you are writing to. The driver will (most likely) internally allocate another buffer with same specifications (which is fairly fast) and you will avoid CPU-GPU stalls.

GBL_WRITE_ONLY_DISCARD_RANGE 

Allows you to write to the buffer.

Tells the driver to discard the contents of the mapped buffer range (but not the entire buffer like with GBL_WRITE_ONLY_DISCARD). Use this if you plan on overwriting all of the range. This can help avoid CPU-GPU stalls.

GBL_READ_ONLY 

Allows you to read from a buffer.

Be aware that reading is usually a very slow operation.

GBL_WRITE_ONLY_NO_OVERWRITE 

Allows you to write to the buffer.

Guarantees the driver that you will not be updating any part of the buffer that is currently used. This will also avoid CPU-GPU stalls, without requiring you to discard the entire buffer. However it is hard to guarantee when GPU has finished using a buffer.

GBL_WRITE_ONLY 

Allows you to write to a buffer.

◆ GpuParamDataType

Type of GPU data parameters that can be used as inputs to a GPU program.

Enumerator
GPDT_FLOAT1 

1D floating point value.

GPDT_FLOAT2 

2D floating point value.

GPDT_FLOAT3 

3D floating point value.

GPDT_FLOAT4 

4D floating point value.

GPDT_MATRIX_2X2 

2x2 matrix.

GPDT_MATRIX_2X3 

2x3 matrix.

GPDT_MATRIX_2X4 

2x4 matrix.

GPDT_MATRIX_3X2 

3x2 matrix.

GPDT_MATRIX_3X3 

3x3 matrix.

GPDT_MATRIX_3X4 

3x4 matrix.

GPDT_MATRIX_4X2 

4x2 matrix.

GPDT_MATRIX_4X3 

4x3 matrix.

GPDT_MATRIX_4X4 

4x4 matrix.

GPDT_INT1 

1D signed integer value.

GPDT_INT2 

2D signed integer value.

GPDT_INT3 

3D signed integer value.

GPDT_INT4 

4D signed integer value.

GPDT_BOOL 

Boolean value.

GPDT_STRUCT 

Variable size structure.

GPDT_COLOR 

Same as GPDT_FLOAT4, but can be used to better deduce usage.

◆ GpuParamObjectType

Type of GPU object parameters that can be used as inputs to a GPU program.

Enumerator
GPOT_SAMPLER1D 

Sampler state for a 1D texture.

GPOT_SAMPLER2D 

Sampler state for a 2D texture.

GPOT_SAMPLER3D 

Sampler state for a 3D texture.

GPOT_SAMPLERCUBE 

Sampler state for a cube texture.

GPOT_SAMPLER2DMS 

Sampler state for a 2D texture with multiple samples.

GPOT_TEXTURE1D 

1D texture.

GPOT_TEXTURE2D 

2D texture.

GPOT_TEXTURE3D 

3D texture.

GPOT_TEXTURECUBE 

Cube texture.

GPOT_TEXTURE2DMS 

2D texture with multiple samples.

GPOT_BYTE_BUFFER 

Buffer containing raw bytes (no interpretation).

GPOT_STRUCTURED_BUFFER 

Buffer containing a set of structures.

GPOT_RWTYPED_BUFFER 

Read-write buffer containing a set of primitives.

GPOT_RWBYTE_BUFFER 

Read-write buffer containing raw bytes (no interpretation).

GPOT_RWSTRUCTURED_BUFFER 

Read-write buffer containing a set of structures.

GPOT_RWSTRUCTURED_BUFFER_WITH_COUNTER 

Read-write buffer containing a set of structures, with a counter.

GPOT_RWAPPEND_BUFFER 

Buffer that can be used for appending data in a stack-like fashion.

GPOT_RWCONSUME_BUFFER 

Buffer that can be used for consuming data in a stack-like fashion.

GPOT_RWTEXTURE1D 

1D texture with unordered read/writes.

GPOT_RWTEXTURE2D 

2D texture with unordered read/writes.

GPOT_RWTEXTURE3D 

3D texture with unordered read/writes.

GPOT_RWTEXTURE2DMS 

2D texture with multiple samples and unordered read/writes.

GPOT_TEXTURE1DARRAY 

1D texture with multiple array entries.

GPOT_TEXTURE2DARRAY 

2D texture with multiple array entries.

GPOT_TEXTURECUBEARRAY 

Cubemap texture with multiple array entries.

GPOT_TEXTURE2DMSARRAY 

2D texture with multiple samples and array entries.

GPOT_RWTEXTURE1DARRAY 

1D texture with multiple array entries and unordered read/writes.

GPOT_RWTEXTURE2DARRAY 

2D texture with multiple array entries and unordered read/writes.

GPOT_RWTEXTURE2DMSARRAY 

2D texture with multiple array entries, samples and unordered read/writes.

◆ GpuParamType

Type of a parameter in a GPU program.

Enumerator
GPT_DATA 

Raw data type like float, Vector3, Color, etc.

GPT_TEXTURE 

Texture type (2D, 3D, cube, etc.)

GPT_BUFFER 

Data buffer (raw, structured, etc.)

GPT_SAMPLER 

Sampler type (2D, 3D, cube, etc.)

◆ GpuProgramType

Types of programs that may run on GPU.

Enumerator
GPT_VERTEX_PROGRAM 

Vertex program.

GPT_FRAGMENT_PROGRAM 

Fragment(pixel) program.

GPT_GEOMETRY_PROGRAM 

Geometry program.

GPT_DOMAIN_PROGRAM 

Domain (tesselation evaluation) program.

GPT_HULL_PROGRAM 

Hull (tesselation control) program.

GPT_COMPUTE_PROGRAM 

Compute program.

◆ GpuQueueType

Types of GPU queues.

Enumerator
GQT_GRAPHICS 

Queue used for rendering.

Allows the use of draw commands, but also all commands supported by compute or upload buffers.

GQT_COMPUTE 

Discrete queue used for compute operations.

Allows the use of dispatch and upload commands.

GQT_UPLOAD 

Queue used for memory transfer operations only.

No rendering or compute dispatch allowed.

◆ GpuViewUsage

Different types of GPU views that control how GPU sees a hardware buffer.

Enumerator
GVU_DEFAULT 

Buffer is seen as a default shader resource, used primarily for reading.

(for example a texture for sampling)

GVU_RENDERTARGET 

Buffer is seen as a render target that color pixels will be written to after pixel shader stage.

GVU_DEPTHSTENCIL 

Buffer is seen as a depth stencil target that depth and stencil information is written to.

GVU_RANDOMWRITE 

Buffer that allows you to write to any part of it from within a GPU program.

◆ IndexType

enum IndexType

Type of mesh indices used, used for determining maximum number of vertices in a mesh.

Enumerator
IT_16BIT 

16-bit indices.

IT_32BIT 

32-bit indices.

◆ MipMapFilter

enum MipMapFilter
strong

Filter to use when generating mip maps.

◆ MipMapWrapMode

enum MipMapWrapMode
strong

Wrap mode to use when generating mip maps.

◆ MirrorModeBits

enum MirrorModeBits
strong

Determines on which axes to mirror an image.

◆ ObjectMobility

enum ObjectMobility
strong

Controls what kind of mobility restrictions a scene object has.

This is used primarily as a performance hint to other systems. Generally the more restricted the mobility the higher performance can be achieved.

Enumerator
Movable 

Scene object can be moved and has no mobility restrictions.

Immovable 

Scene object isn't allowed to be moved but is allowed to be visually changed in other ways (e.g.

changing the displayed mesh or light intensity (depends on attached components).

Static 

Scene object isn't allowed to be moved nor is it allowed to be visually changed.

Object must be fully static.

◆ PhysicsMeshType

enum PhysicsMeshType
strong

Valid types of a mesh used for physics.

Enumerator
Triangle 

A regular triangle mesh.

Mesh can be of arbitrary size but cannot be used for triggers and non-kinematic objects. Incurrs a significantly larger performance impact than convex meshes.

Convex 

Mesh representing a convex shape.

Mesh will not have more than 256 vertices. Incurrs a significantly lower performance impact than triangle meshes.

◆ PolygonMode

Polygon mode to use when rasterizing.

Enumerator
PM_WIREFRAME 

Render as wireframe showing only polygon outlines.

PM_SOLID 

Render as solid showing whole polygons.

◆ ProjectionType

Projection type to use by the camera.

Enumerator
PT_ORTHOGRAPHIC 

Projection type where object size remains constant and parallel lines remain parallel.

PT_PERSPECTIVE 

Projection type that emulates human vision.

Objects farther away appear smaller.

◆ QueuePriority

enum QueuePriority
strong

Suggested queue priority numbers used for sorting objects in the render queue.

Objects with higher priority will be renderer sooner.

◆ QueueSortType

enum QueueSortType
strong

Type of sorting to perform on an object when added to a render queue.

Enumerator
FrontToBack 

All objects with the same priority will be rendered front to back based on their center.

BackToFront 

All objects with the same priority will be rendered back to front based on their center.

None 

Objects will not be sorted and will be processed in the order they were added to the queue.

◆ RenderSurfaceMaskBits

Bits that map to a specific surface of a render target.

Combine the bits to generate a mask that references only specific render target surfaces.

◆ ShaderFlag

enum ShaderFlag
strong

Flags that may be assigned to a shader that let the renderer know how to interpret the shader.

Enumerator
Transparent 

Signifies that the shader is rendering a transparent object.

Forward 

Signifies the shader should use the forward rendering pipeline, if relevant.

◆ StencilOperation

Types of action that can happen on the stencil buffer.

Enumerator
SOP_KEEP 

Leave the stencil buffer unchanged.

SOP_ZERO 

Set the stencil value to zero.

SOP_REPLACE 

Replace the stencil value with the reference value.

SOP_INCREMENT 

Increase the stencil value by 1, clamping at the maximum value.

SOP_DECREMENT 

Decrease the stencil value by 1, clamping at 0.

SOP_INCREMENT_WRAP 

Increase the stencil value by 1, wrapping back to 0 when incrementing past the maximum value.

SOP_DECREMENT_WRAP 

Decrease the stencil value by 1, wrapping when decrementing 0.

SOP_INVERT 

Invert the bits of the stencil buffer.

◆ TextureAddressingMode

Types of texture addressing modes that determine what happens when texture coordinates are outside of the valid range.

Enumerator
TAM_WRAP 

Coordinates wrap back to the valid range.

TAM_MIRROR 

Coordinates flip every time the size of the valid range is passed.

TAM_CLAMP 

Coordinates are clamped within the valid range.

TAM_BORDER 

Coordinates outside of the valid range will return a separately set border color.

◆ TextureType

Available texture types.

Enumerator
TEX_TYPE_1D 

One dimensional texture.

Just a row of pixels.

TEX_TYPE_2D 

Two dimensional texture.

TEX_TYPE_3D 

Three dimensional texture.

TEX_TYPE_CUBE_MAP 

Texture consisting out of six 2D textures describing an inside of a cube.

Allows special sampling.