Kohi Game Engine
core_render_types.h File Reference
#include "defines.h"
#include "identifiers/khandle.h"
#include "math/math_types.h"
#include "strings/kname.h"
#include "strings/kstring_id.h"
#include "utils/kcolour.h"

Go to the source code of this file.

Data Structures

struct  shader_uniform
 Represents a single entry in the internal uniform array. More...
 
struct  shader_attribute
 Represents a single shader vertex attribute. More...
 
struct  shader_frequency_data
 Represents data required for a particular update frequency within a shader. More...
 
struct  shader_stage_config
 The configuration for a single stage of the shader. More...
 
struct  shader_attribute_config
 Configuration for an attribute. More...
 
struct  shader_uniform_config
 Configuration for a uniform. More...
 
struct  kmaterial_texture_input
 
struct  kmaterial_sampler_config
 
struct  material_instance
 A material instance, which contains handles to both the base material as well as the instance itself. Every time an instance is "acquired", one of these is created, and the instance should be referenced using this going from that point. More...
 
struct  krenderbuffer_render_data
 
struct  kgeometry_render_data
 Represents render data for arbitrary geometry. More...
 
struct  kskybox_render_data
 
struct  kstatic_mesh_submesh_render_data
 The render data for an individual static sub-mesh to be rendered. More...
 
struct  kstatic_mesh_render_data
 
struct  kdirectional_light_render_data
 
struct  kpoint_light_render_data
 
struct  kwater_plane_render_data
 

Typedefs

typedef enum face_cull_mode face_cull_mode
 Determines face culling mode during rendering. More...
 
typedef enum primitive_topology_type_bits primitive_topology_type_bits
 
typedef u32 primitive_topology_types
 A combination of topology bit flags. More...
 
typedef enum kpixel_format kpixel_format
 Represents the format of image (or texture) pixel data. More...
 
typedef enum texture_filter texture_filter
 Represents supported texture filtering modes. More...
 
typedef enum texture_repeat texture_repeat
 
typedef enum texture_channel texture_channel
 
typedef enum shader_stage shader_stage
 Shader stages available in the system. More...
 
typedef enum shader_update_frequency shader_update_frequency
 Defines shader update frequencies, typically used for uniforms. More...
 
typedef enum shader_attribute_type shader_attribute_type
 Available attribute types. More...
 
typedef enum shader_uniform_type shader_uniform_type
 Available uniform types. More...
 
typedef enum shader_generic_sampler shader_generic_sampler
 
typedef enum renderer_default_texture renderer_default_texture
 
typedef struct shader_uniform shader_uniform
 Represents a single entry in the internal uniform array. More...
 
typedef struct shader_attribute shader_attribute
 Represents a single shader vertex attribute. More...
 
typedef enum shader_flag_bits shader_flag_bits
 Various shader flag bit fields. More...
 
typedef u32 shader_flags
 A combination of topology bit flags. More...
 
typedef struct shader_frequency_data shader_frequency_data
 Represents data required for a particular update frequency within a shader. More...
 
typedef enum shader_state shader_state
 Represents the current state of a given shader. More...
 
typedef struct shader_stage_config shader_stage_config
 The configuration for a single stage of the shader. More...
 
typedef struct shader_attribute_config shader_attribute_config
 Configuration for an attribute. More...
 
typedef struct shader_uniform_config shader_uniform_config
 Configuration for a uniform. More...
 
typedef enum kmaterial_type kmaterial_type
 
typedef enum kmaterial_model kmaterial_model
 
typedef enum kmaterial_texture_map kmaterial_texture_map
 
typedef enum kmaterial_flag_bits kmaterial_flag_bits
 
typedef u32 kmaterial_flags
 
typedef struct kmaterial_texture_input kmaterial_texture_input
 
typedef struct kmaterial_sampler_config kmaterial_sampler_config
 
typedef struct material_instance material_instance
 A material instance, which contains handles to both the base material as well as the instance itself. Every time an instance is "acquired", one of these is created, and the instance should be referenced using this going from that point. More...
 
typedef struct krenderbuffer_render_data krenderbuffer_render_data
 
typedef struct kgeometry_render_data kgeometry_render_data
 Represents render data for arbitrary geometry. More...
 
typedef struct kskybox_render_data kskybox_render_data
 
typedef enum kstatic_mesh_render_data_flag kstaticm_esh_render_data_flag
 Defines flags used for rendering static meshes. More...
 
typedef u32 kstatic_mesh_render_data_flag_bits
 Collection of flags for a static mesh submesh to be rendered. More...
 
typedef struct kstatic_mesh_submesh_render_data kstatic_mesh_submesh_render_data
 The render data for an individual static sub-mesh to be rendered. More...
 
typedef struct kstatic_mesh_render_data kstatic_mesh_render_data
 
typedef struct kdirectional_light_render_data kdirectional_light_render_data
 
typedef struct kpoint_light_render_data kpoint_light_render_data
 
typedef struct kwater_plane_render_data kwater_plane_render_data
 

Enumerations

enum  face_cull_mode { FACE_CULL_MODE_NONE = 0x0 , FACE_CULL_MODE_FRONT = 0x1 , FACE_CULL_MODE_BACK = 0x2 , FACE_CULL_MODE_FRONT_AND_BACK = 0x3 }
 Determines face culling mode during rendering. More...
 
enum  primitive_topology_type_bits {
  PRIMITIVE_TOPOLOGY_TYPE_NONE_BIT = 0x00 , PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_LIST_BIT = 0x01 , PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_STRIP_BIT = 0x02 , PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_FAN_BIT = 0x04 ,
  PRIMITIVE_TOPOLOGY_TYPE_LINE_LIST_BIT = 0x08 , PRIMITIVE_TOPOLOGY_TYPE_LINE_STRIP_BIT = 0x10 , PRIMITIVE_TOPOLOGY_TYPE_POINT_LIST_BIT = 0x20 , PRIMITIVE_TOPOLOGY_TYPE_MAX_BIT = PRIMITIVE_TOPOLOGY_TYPE_POINT_LIST_BIT << 1
}
 
enum  kpixel_format {
  KPIXEL_FORMAT_UNKNOWN , KPIXEL_FORMAT_RGBA8 , KPIXEL_FORMAT_RGB8 , KPIXEL_FORMAT_RG8 ,
  KPIXEL_FORMAT_R8 , KPIXEL_FORMAT_RGBA16 , KPIXEL_FORMAT_RGB16 , KPIXEL_FORMAT_RG16 ,
  KPIXEL_FORMAT_R16 , KPIXEL_FORMAT_RGBA32 , KPIXEL_FORMAT_RGB32 , KPIXEL_FORMAT_RG32 ,
  KPIXEL_FORMAT_R32
}
 Represents the format of image (or texture) pixel data. More...
 
enum  texture_filter { TEXTURE_FILTER_MODE_NEAREST = 0x0 , TEXTURE_FILTER_MODE_LINEAR = 0x1 }
 Represents supported texture filtering modes. More...
 
enum  texture_repeat {
  TEXTURE_REPEAT_REPEAT = 0x0 , TEXTURE_REPEAT_MIRRORED_REPEAT = 0x1 , TEXTURE_REPEAT_CLAMP_TO_EDGE = 0x2 , TEXTURE_REPEAT_CLAMP_TO_BORDER = 0x3 ,
  TEXTURE_REPEAT_COUNT
}
 
enum  texture_channel { TEXTURE_CHANNEL_R , TEXTURE_CHANNEL_G , TEXTURE_CHANNEL_B , TEXTURE_CHANNEL_A }
 
enum  shader_stage { SHADER_STAGE_VERTEX = 0x00000001 , SHADER_STAGE_GEOMETRY = 0x00000002 , SHADER_STAGE_FRAGMENT = 0x00000004 , SHADER_STAGE_COMPUTE = 0x0000008 }
 Shader stages available in the system. More...
 
enum  shader_update_frequency { SHADER_UPDATE_FREQUENCY_PER_FRAME = 0 , SHADER_UPDATE_FREQUENCY_PER_GROUP = 1 , SHADER_UPDATE_FREQUENCY_PER_DRAW = 2 }
 Defines shader update frequencies, typically used for uniforms. More...
 
enum  shader_attribute_type {
  SHADER_ATTRIB_TYPE_FLOAT32 = 0U , SHADER_ATTRIB_TYPE_FLOAT32_2 = 1U , SHADER_ATTRIB_TYPE_FLOAT32_3 = 2U , SHADER_ATTRIB_TYPE_FLOAT32_4 = 3U ,
  SHADER_ATTRIB_TYPE_MATRIX_4 = 4U , SHADER_ATTRIB_TYPE_INT8 = 5U , SHADER_ATTRIB_TYPE_UINT8 = 6U , SHADER_ATTRIB_TYPE_INT16 = 7U ,
  SHADER_ATTRIB_TYPE_UINT16 = 8U , SHADER_ATTRIB_TYPE_INT32 = 9U , SHADER_ATTRIB_TYPE_UINT32 = 10U
}
 Available attribute types. More...
 
enum  shader_uniform_type {
  SHADER_UNIFORM_TYPE_FLOAT32 = 0U , SHADER_UNIFORM_TYPE_FLOAT32_2 = 1U , SHADER_UNIFORM_TYPE_FLOAT32_3 = 2U , SHADER_UNIFORM_TYPE_FLOAT32_4 = 3U ,
  SHADER_UNIFORM_TYPE_INT8 = 4U , SHADER_UNIFORM_TYPE_UINT8 = 5U , SHADER_UNIFORM_TYPE_INT16 = 6U , SHADER_UNIFORM_TYPE_UINT16 = 7U ,
  SHADER_UNIFORM_TYPE_INT32 = 8U , SHADER_UNIFORM_TYPE_UINT32 = 9U , SHADER_UNIFORM_TYPE_MATRIX_4 = 10U , SHADER_UNIFORM_TYPE_STRUCT = 11U ,
  SHADER_UNIFORM_TYPE_TEXTURE_1D = 12U , SHADER_UNIFORM_TYPE_TEXTURE_2D = 13U , SHADER_UNIFORM_TYPE_TEXTURE_3D = 14U , SHADER_UNIFORM_TYPE_TEXTURE_CUBE = 15U ,
  SHADER_UNIFORM_TYPE_TEXTURE_1D_ARRAY = 16U , SHADER_UNIFORM_TYPE_TEXTURE_2D_ARRAY = 17U , SHADER_UNIFORM_TYPE_TEXTURE_CUBE_ARRAY = 18U , SHADER_UNIFORM_TYPE_SAMPLER = 19U ,
  SHADER_UNIFORM_TYPE_CUSTOM = 255U
}
 Available uniform types. More...
 
enum  shader_generic_sampler {
  SHADER_GENERIC_SAMPLER_LINEAR_REPEAT , SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_MIRRORED , SHADER_GENERIC_SAMPLER_LINEAR_CLAMP , SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_BORDER ,
  SHADER_GENERIC_SAMPLER_NEAREST_REPEAT , SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_MIRRORED , SHADER_GENERIC_SAMPLER_NEAREST_CLAMP , SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_BORDER ,
  SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_MIRRORED_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_BORDER_NO_ANISOTROPY ,
  SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_MIRRORED_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_NO_ANISOTROPY , SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_BORDER_NO_ANISOTROPY ,
  SHADER_GENERIC_SAMPLER_COUNT
}
 
enum  renderer_default_texture {
  RENDERER_DEFAULT_TEXTURE_BASE_COLOUR = 0 , RENDERER_DEFAULT_TEXTURE_ALBEDO = RENDERER_DEFAULT_TEXTURE_BASE_COLOUR , RENDERER_DEFAULT_TEXTURE_DIFFUSE = RENDERER_DEFAULT_TEXTURE_BASE_COLOUR , RENDERER_DEFAULT_TEXTURE_NORMAL = 1 ,
  RENDERER_DEFAULT_TEXTURE_METALLIC = 2 , RENDERER_DEFAULT_TEXTURE_ROUGHNESS = 3 , RENDERER_DEFAULT_TEXTURE_AMBIENT_OCCLUSION = 4 , RENDERER_DEFAULT_TEXTURE_EMISSIVE = 5 ,
  RENDERER_DEFAULT_TEXTURE_DUDV = 6 , RENDERER_DEFAULT_TEXTURE_COUNT
}
 
enum  shader_flag_bits {
  SHADER_FLAG_NONE_BIT = 0x0000 , SHADER_FLAG_DEPTH_TEST_BIT = 0x0001 , SHADER_FLAG_DEPTH_WRITE_BIT = 0x0002 , SHADER_FLAG_WIREFRAME_BIT = 0x0004 ,
  SHADER_FLAG_STENCIL_TEST_BIT = 0x0008 , SHADER_FLAG_STENCIL_WRITE_BIT = 0x0010 , SHADER_FLAG_COLOUR_READ_BIT = 0x0020 , SHADER_FLAG_COLOUR_WRITE_BIT = 0x0040
}
 Various shader flag bit fields. More...
 
enum  shader_state { SHADER_STATE_NOT_CREATED , SHADER_STATE_UNINITIALIZED , SHADER_STATE_INITIALIZED }
 Represents the current state of a given shader. More...
 
enum  kmaterial_type {
  KMATERIAL_TYPE_UNKNOWN = 0 , KMATERIAL_TYPE_STANDARD , KMATERIAL_TYPE_WATER , KMATERIAL_TYPE_BLENDED ,
  KMATERIAL_TYPE_COUNT , KMATERIAL_TYPE_CUSTOM = 99
}
 
enum  kmaterial_model {
  KMATERIAL_MODEL_UNLIT = 0 , KMATERIAL_MODEL_PBR , KMATERIAL_MODEL_PHONG , KMATERIAL_MODEL_COUNT ,
  KMATERIAL_MODEL_CUSTOM = 99
}
 
enum  kmaterial_texture_map {
  KMATERIAL_TEXTURE_MAP_BASE_COLOUR , KMATERIAL_TEXTURE_MAP_NORMAL , KMATERIAL_TEXTURE_MAP_METALLIC , KMATERIAL_TEXTURE_MAP_ROUGHNESS ,
  KMATERIAL_TEXTURE_MAP_AO , KMATERIAL_TEXTURE_MAP_MRA , KMATERIAL_TEXTURE_MAP_EMISSIVE
}
 
enum  kmaterial_flag_bits {
  KMATERIAL_FLAG_HAS_TRANSPARENCY_BIT = 0x0001U , KMATERIAL_FLAG_DOUBLE_SIDED_BIT = 0x0002U , KMATERIAL_FLAG_RECIEVES_SHADOW_BIT = 0x0004U , KMATERIAL_FLAG_CASTS_SHADOW_BIT = 0x0008U ,
  KMATERIAL_FLAG_NORMAL_ENABLED_BIT = 0x0010U , KMATERIAL_FLAG_AO_ENABLED_BIT = 0x0020U , KMATERIAL_FLAG_EMISSIVE_ENABLED_BIT = 0x0040U , KMATERIAL_FLAG_MRA_ENABLED_BIT = 0x0080U ,
  KMATERIAL_FLAG_REFRACTION_ENABLED_BIT = 0x0100U , KMATERIAL_FLAG_USE_VERTEX_COLOUR_AS_BASE_COLOUR_BIT = 0x0200U
}
 
enum  kstatic_mesh_render_data_flag { KSTATICM_ESH_RENDER_DATA_FLAG_WINDING_INVERTED_BIT = 0x0001 }
 Defines flags used for rendering static meshes. More...
 

Typedef Documentation

◆ face_cull_mode

Determines face culling mode during rendering.

◆ kdirectional_light_render_data

Directional light data formatted for direct shader use.

◆ kgeometry_render_data

Represents render data for arbitrary geometry.

◆ kmaterial_flag_bits

◆ kmaterial_flags

◆ kmaterial_model

◆ kmaterial_sampler_config

◆ kmaterial_texture_input

◆ kmaterial_texture_map

◆ kmaterial_type

◆ kpixel_format

Represents the format of image (or texture) pixel data.

◆ kpoint_light_render_data

Point light data formatted for direct shader use.

◆ krenderbuffer_render_data

◆ kskybox_render_data

◆ kstatic_mesh_render_data

Contains data required to render a static mesh (ultimately its submeshes).

◆ kstatic_mesh_render_data_flag_bits

Collection of flags for a static mesh submesh to be rendered.

See also
kstatic_mesh_render_data_flag

◆ kstatic_mesh_submesh_render_data

The render data for an individual static sub-mesh to be rendered.

◆ kstaticm_esh_render_data_flag

Defines flags used for rendering static meshes.

◆ kwater_plane_render_data

◆ material_instance

A material instance, which contains handles to both the base material as well as the instance itself. Every time an instance is "acquired", one of these is created, and the instance should be referenced using this going from that point.

◆ primitive_topology_type_bits

Various topology type flag bit fields.

◆ primitive_topology_types

A combination of topology bit flags.

◆ renderer_default_texture

◆ shader_attribute

Represents a single shader vertex attribute.

◆ shader_attribute_config

Configuration for an attribute.

◆ shader_attribute_type

Available attribute types.

◆ shader_flag_bits

Various shader flag bit fields.

◆ shader_flags

typedef u32 shader_flags

A combination of topology bit flags.

◆ shader_frequency_data

Represents data required for a particular update frequency within a shader.

◆ shader_generic_sampler

◆ shader_stage

typedef enum shader_stage shader_stage

Shader stages available in the system.

◆ shader_stage_config

The configuration for a single stage of the shader.

◆ shader_state

typedef enum shader_state shader_state

Represents the current state of a given shader.

◆ shader_uniform

Represents a single entry in the internal uniform array.

◆ shader_uniform_config

Configuration for a uniform.

◆ shader_uniform_type

Available uniform types.

◆ shader_update_frequency

Defines shader update frequencies, typically used for uniforms.

◆ texture_channel

◆ texture_filter

Represents supported texture filtering modes.

◆ texture_repeat

Enumeration Type Documentation

◆ face_cull_mode

Determines face culling mode during rendering.

Enumerator
FACE_CULL_MODE_NONE 

No faces are culled.

FACE_CULL_MODE_FRONT 

Only front faces are culled.

FACE_CULL_MODE_BACK 

Only back faces are culled.

FACE_CULL_MODE_FRONT_AND_BACK 

Both front and back faces are culled.

◆ kmaterial_flag_bits

Enumerator
KMATERIAL_FLAG_HAS_TRANSPARENCY_BIT 
KMATERIAL_FLAG_DOUBLE_SIDED_BIT 
KMATERIAL_FLAG_RECIEVES_SHADOW_BIT 
KMATERIAL_FLAG_CASTS_SHADOW_BIT 
KMATERIAL_FLAG_NORMAL_ENABLED_BIT 
KMATERIAL_FLAG_AO_ENABLED_BIT 
KMATERIAL_FLAG_EMISSIVE_ENABLED_BIT 
KMATERIAL_FLAG_MRA_ENABLED_BIT 
KMATERIAL_FLAG_REFRACTION_ENABLED_BIT 
KMATERIAL_FLAG_USE_VERTEX_COLOUR_AS_BASE_COLOUR_BIT 

◆ kmaterial_model

Enumerator
KMATERIAL_MODEL_UNLIT 
KMATERIAL_MODEL_PBR 
KMATERIAL_MODEL_PHONG 
KMATERIAL_MODEL_COUNT 
KMATERIAL_MODEL_CUSTOM 

◆ kmaterial_texture_map

Enumerator
KMATERIAL_TEXTURE_MAP_BASE_COLOUR 
KMATERIAL_TEXTURE_MAP_NORMAL 
KMATERIAL_TEXTURE_MAP_METALLIC 
KMATERIAL_TEXTURE_MAP_ROUGHNESS 
KMATERIAL_TEXTURE_MAP_AO 
KMATERIAL_TEXTURE_MAP_MRA 
KMATERIAL_TEXTURE_MAP_EMISSIVE 

◆ kmaterial_type

Enumerator
KMATERIAL_TYPE_UNKNOWN 
KMATERIAL_TYPE_STANDARD 
KMATERIAL_TYPE_WATER 
KMATERIAL_TYPE_BLENDED 
KMATERIAL_TYPE_COUNT 
KMATERIAL_TYPE_CUSTOM 

◆ kpixel_format

Represents the format of image (or texture) pixel data.

Enumerator
KPIXEL_FORMAT_UNKNOWN 
KPIXEL_FORMAT_RGBA8 
KPIXEL_FORMAT_RGB8 
KPIXEL_FORMAT_RG8 
KPIXEL_FORMAT_R8 
KPIXEL_FORMAT_RGBA16 
KPIXEL_FORMAT_RGB16 
KPIXEL_FORMAT_RG16 
KPIXEL_FORMAT_R16 
KPIXEL_FORMAT_RGBA32 
KPIXEL_FORMAT_RGB32 
KPIXEL_FORMAT_RG32 
KPIXEL_FORMAT_R32 

◆ kstatic_mesh_render_data_flag

Defines flags used for rendering static meshes.

Enumerator
KSTATICM_ESH_RENDER_DATA_FLAG_WINDING_INVERTED_BIT 

Indicates that the winding order for the given static mesh should be inverted.

◆ primitive_topology_type_bits

Various topology type flag bit fields.

Enumerator
PRIMITIVE_TOPOLOGY_TYPE_NONE_BIT 

Topology type not defined. Not valid for shader creation.

PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_LIST_BIT 

A list of triangles. The default if nothing is defined.

PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_STRIP_BIT 
PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE_FAN_BIT 
PRIMITIVE_TOPOLOGY_TYPE_LINE_LIST_BIT 
PRIMITIVE_TOPOLOGY_TYPE_LINE_STRIP_BIT 
PRIMITIVE_TOPOLOGY_TYPE_POINT_LIST_BIT 
PRIMITIVE_TOPOLOGY_TYPE_MAX_BIT 

◆ renderer_default_texture

Enumerator
RENDERER_DEFAULT_TEXTURE_BASE_COLOUR 
RENDERER_DEFAULT_TEXTURE_ALBEDO 
RENDERER_DEFAULT_TEXTURE_DIFFUSE 
RENDERER_DEFAULT_TEXTURE_NORMAL 
RENDERER_DEFAULT_TEXTURE_METALLIC 
RENDERER_DEFAULT_TEXTURE_ROUGHNESS 
RENDERER_DEFAULT_TEXTURE_AMBIENT_OCCLUSION 
RENDERER_DEFAULT_TEXTURE_EMISSIVE 
RENDERER_DEFAULT_TEXTURE_DUDV 
RENDERER_DEFAULT_TEXTURE_COUNT 

◆ shader_attribute_type

Available attribute types.

Enumerator
SHADER_ATTRIB_TYPE_FLOAT32 
SHADER_ATTRIB_TYPE_FLOAT32_2 
SHADER_ATTRIB_TYPE_FLOAT32_3 
SHADER_ATTRIB_TYPE_FLOAT32_4 
SHADER_ATTRIB_TYPE_MATRIX_4 
SHADER_ATTRIB_TYPE_INT8 
SHADER_ATTRIB_TYPE_UINT8 
SHADER_ATTRIB_TYPE_INT16 
SHADER_ATTRIB_TYPE_UINT16 
SHADER_ATTRIB_TYPE_INT32 
SHADER_ATTRIB_TYPE_UINT32 

◆ shader_flag_bits

Various shader flag bit fields.

Enumerator
SHADER_FLAG_NONE_BIT 
SHADER_FLAG_DEPTH_TEST_BIT 
SHADER_FLAG_DEPTH_WRITE_BIT 
SHADER_FLAG_WIREFRAME_BIT 
SHADER_FLAG_STENCIL_TEST_BIT 
SHADER_FLAG_STENCIL_WRITE_BIT 
SHADER_FLAG_COLOUR_READ_BIT 
SHADER_FLAG_COLOUR_WRITE_BIT 

◆ shader_generic_sampler

Enumerator
SHADER_GENERIC_SAMPLER_LINEAR_REPEAT 
SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_MIRRORED 
SHADER_GENERIC_SAMPLER_LINEAR_CLAMP 
SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_BORDER 
SHADER_GENERIC_SAMPLER_NEAREST_REPEAT 
SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_MIRRORED 
SHADER_GENERIC_SAMPLER_NEAREST_CLAMP 
SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_BORDER 
SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_LINEAR_REPEAT_MIRRORED_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_LINEAR_CLAMP_BORDER_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_NEAREST_REPEAT_MIRRORED_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_NEAREST_CLAMP_BORDER_NO_ANISOTROPY 
SHADER_GENERIC_SAMPLER_COUNT 

◆ shader_stage

Shader stages available in the system.

Enumerator
SHADER_STAGE_VERTEX 
SHADER_STAGE_GEOMETRY 
SHADER_STAGE_FRAGMENT 
SHADER_STAGE_COMPUTE 

◆ shader_state

Represents the current state of a given shader.

Enumerator
SHADER_STATE_NOT_CREATED 

The shader has not yet gone through the creation process, and is unusable.

SHADER_STATE_UNINITIALIZED 

The shader has gone through the creation process, but not initialization. It is unusable.

SHADER_STATE_INITIALIZED 

The shader is created and initialized, and is ready for use.

◆ shader_uniform_type

Available uniform types.

Enumerator
SHADER_UNIFORM_TYPE_FLOAT32 
SHADER_UNIFORM_TYPE_FLOAT32_2 
SHADER_UNIFORM_TYPE_FLOAT32_3 
SHADER_UNIFORM_TYPE_FLOAT32_4 
SHADER_UNIFORM_TYPE_INT8 
SHADER_UNIFORM_TYPE_UINT8 
SHADER_UNIFORM_TYPE_INT16 
SHADER_UNIFORM_TYPE_UINT16 
SHADER_UNIFORM_TYPE_INT32 
SHADER_UNIFORM_TYPE_UINT32 
SHADER_UNIFORM_TYPE_MATRIX_4 
SHADER_UNIFORM_TYPE_STRUCT 
SHADER_UNIFORM_TYPE_TEXTURE_1D 
SHADER_UNIFORM_TYPE_TEXTURE_2D 
SHADER_UNIFORM_TYPE_TEXTURE_3D 
SHADER_UNIFORM_TYPE_TEXTURE_CUBE 
SHADER_UNIFORM_TYPE_TEXTURE_1D_ARRAY 
SHADER_UNIFORM_TYPE_TEXTURE_2D_ARRAY 
SHADER_UNIFORM_TYPE_TEXTURE_CUBE_ARRAY 
SHADER_UNIFORM_TYPE_SAMPLER 
SHADER_UNIFORM_TYPE_CUSTOM 

◆ shader_update_frequency

Defines shader update frequencies, typically used for uniforms.

Enumerator
SHADER_UPDATE_FREQUENCY_PER_FRAME 

The uniform is updated once per frame.

SHADER_UPDATE_FREQUENCY_PER_GROUP 

The uniform is updated once per "group", it is up to the shader using this to determine what this means.

SHADER_UPDATE_FREQUENCY_PER_DRAW 

The uniform is updated once per draw call (i.e. "instance" of an object in the world).

◆ texture_channel

Enumerator
TEXTURE_CHANNEL_R 
TEXTURE_CHANNEL_G 
TEXTURE_CHANNEL_B 
TEXTURE_CHANNEL_A 

◆ texture_filter

Represents supported texture filtering modes.

Enumerator
TEXTURE_FILTER_MODE_NEAREST 

Nearest-neighbor filtering.

TEXTURE_FILTER_MODE_LINEAR 

Linear (i.e. bilinear) filtering.

◆ texture_repeat

Enumerator
TEXTURE_REPEAT_REPEAT 
TEXTURE_REPEAT_MIRRORED_REPEAT 
TEXTURE_REPEAT_CLAMP_TO_EDGE 
TEXTURE_REPEAT_CLAMP_TO_BORDER 
TEXTURE_REPEAT_COUNT