Kohi Game Engine
renderer_types.h File Reference

Go to the source code of this file.

Data Structures

struct  geometry_render_data
 
struct  render_target_attachment_config
 
struct  render_target_config
 
struct  render_target_attachment
 
struct  render_target
 Represents a render target, which is used for rendering to a texture or set of textures. More...
 
struct  renderpass_config
 
struct  renderpass
 Represents a generic renderpass. More...
 
struct  renderbuffer
 
struct  renderer_backend_config
 The generic configuration for a renderer backend. More...
 
struct  renderer_plugin
 A generic "interface" for the renderer plugin. The renderer backend is what is responsible for making calls to the graphics API such as Vulkan, OpenGL or DirectX. Each of these should implement this interface. The frontend only interacts via this structure and has no knowledge of the way things actually work on the backend. More...
 
struct  render_view
 A render view instance, responsible for the generation of view packets based on internal logic and given config. More...
 
struct  skybox_packet_data
 
struct  render_view_packet
 A packet for and generated by a render view, which contains data about what is to be rendered. More...
 
struct  mesh_packet_data
 
struct  ui_packet_data
 
struct  pick_packet_data
 
struct  render_packet
 A structure which is generated by the application and sent once to the renderer to render a given frame. Consists of any data required, such as delta time and a collection of views to be rendered. More...
 

Typedefs

typedef struct geometry_render_data geometry_render_data
 
typedef enum renderer_debug_view_mode renderer_debug_view_mode
 
typedef enum render_target_attachment_type render_target_attachment_type
 
typedef enum render_target_attachment_source render_target_attachment_source
 
typedef enum render_target_attachment_load_operation render_target_attachment_load_operation
 
typedef enum render_target_attachment_store_operation render_target_attachment_store_operation
 
typedef enum renderer_projection_matrix_type renderer_projection_matrix_type
 
typedef struct render_target_attachment_config render_target_attachment_config
 
typedef struct render_target_config render_target_config
 
typedef struct render_target_attachment render_target_attachment
 
typedef struct render_target render_target
 Represents a render target, which is used for rendering to a texture or set of textures. More...
 
typedef enum renderpass_clear_flag renderpass_clear_flag
 The types of clearing to be done on a renderpass. Can be combined together for multiple clearing functions. More...
 
typedef struct renderpass_config renderpass_config
 
typedef struct renderpass renderpass
 Represents a generic renderpass. More...
 
typedef enum renderbuffer_type renderbuffer_type
 
typedef enum renderbuffer_track_type renderbuffer_track_type
 
typedef struct renderbuffer renderbuffer
 
typedef enum renderer_config_flag_bits renderer_config_flag_bits
 
typedef u32 renderer_config_flags
 
typedef struct renderer_backend_config renderer_backend_config
 The generic configuration for a renderer backend. More...
 
typedef enum renderer_winding renderer_winding
 The winding order of vertices, used to determine what is the front-face of a triangle. More...
 
typedef struct renderer_plugin renderer_plugin
 A generic "interface" for the renderer plugin. The renderer backend is what is responsible for making calls to the graphics API such as Vulkan, OpenGL or DirectX. Each of these should implement this interface. The frontend only interacts via this structure and has no knowledge of the way things actually work on the backend. More...
 
typedef struct render_view render_view
 A render view instance, responsible for the generation of view packets based on internal logic and given config. More...
 
typedef struct skybox_packet_data skybox_packet_data
 
typedef struct render_view_packet render_view_packet
 A packet for and generated by a render view, which contains data about what is to be rendered. More...
 
typedef struct mesh_packet_data mesh_packet_data
 
typedef struct ui_packet_data ui_packet_data
 
typedef struct pick_packet_data pick_packet_data
 
typedef struct render_packet render_packet
 A structure which is generated by the application and sent once to the renderer to render a given frame. Consists of any data required, such as delta time and a collection of views to be rendered. More...
 

Enumerations

enum  renderer_debug_view_mode { RENDERER_VIEW_MODE_DEFAULT = 0 , RENDERER_VIEW_MODE_LIGHTING = 1 , RENDERER_VIEW_MODE_NORMALS = 2 }
 
enum  render_target_attachment_type { RENDER_TARGET_ATTACHMENT_TYPE_COLOUR = 0x1 , RENDER_TARGET_ATTACHMENT_TYPE_DEPTH = 0x2 , RENDER_TARGET_ATTACHMENT_TYPE_STENCIL = 0x4 }
 
enum  render_target_attachment_source { RENDER_TARGET_ATTACHMENT_SOURCE_DEFAULT = 0x1 , RENDER_TARGET_ATTACHMENT_SOURCE_VIEW = 0x2 }
 
enum  render_target_attachment_load_operation { RENDER_TARGET_ATTACHMENT_LOAD_OPERATION_DONT_CARE = 0x0 , RENDER_TARGET_ATTACHMENT_LOAD_OPERATION_LOAD = 0x1 }
 
enum  render_target_attachment_store_operation { RENDER_TARGET_ATTACHMENT_STORE_OPERATION_DONT_CARE = 0x0 , RENDER_TARGET_ATTACHMENT_STORE_OPERATION_STORE = 0x1 }
 
enum  renderer_projection_matrix_type { RENDERER_PROJECTION_MATRIX_TYPE_PERSPECTIVE = 0x0 , RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC = 0x1 , RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC_CENTERED = 0x2 }
 
enum  renderpass_clear_flag { RENDERPASS_CLEAR_NONE_FLAG = 0x0 , RENDERPASS_CLEAR_COLOUR_BUFFER_FLAG = 0x1 , RENDERPASS_CLEAR_DEPTH_BUFFER_FLAG = 0x2 , RENDERPASS_CLEAR_STENCIL_BUFFER_FLAG = 0x4 }
 The types of clearing to be done on a renderpass. Can be combined together for multiple clearing functions. More...
 
enum  renderbuffer_type {
  RENDERBUFFER_TYPE_UNKNOWN , RENDERBUFFER_TYPE_VERTEX , RENDERBUFFER_TYPE_INDEX , RENDERBUFFER_TYPE_UNIFORM ,
  RENDERBUFFER_TYPE_STAGING , RENDERBUFFER_TYPE_READ , RENDERBUFFER_TYPE_STORAGE
}
 
enum  renderbuffer_track_type { RENDERBUFFER_TRACK_TYPE_NONE = 0 , RENDERBUFFER_TRACK_TYPE_FREELIST = 1 , RENDERBUFFER_TRACK_TYPE_LINEAR = 2 }
 
enum  renderer_config_flag_bits { RENDERER_CONFIG_FLAG_VSYNC_ENABLED_BIT = 0x1 , RENDERER_CONFIG_FLAG_POWER_SAVING_BIT = 0x2 }
 
enum  renderer_winding { RENDERER_WINDING_COUNTER_CLOCKWISE = 0 , RENDERER_WINDING_CLOCKWISE = 1 }
 The winding order of vertices, used to determine what is the front-face of a triangle. More...
 

Typedef Documentation

◆ geometry_render_data

◆ mesh_packet_data

◆ pick_packet_data

◆ render_packet

typedef struct render_packet render_packet

A structure which is generated by the application and sent once to the renderer to render a given frame. Consists of any data required, such as delta time and a collection of views to be rendered.

◆ render_target

typedef struct render_target render_target

Represents a render target, which is used for rendering to a texture or set of textures.

◆ render_target_attachment

◆ render_target_attachment_config

◆ render_target_attachment_load_operation

◆ render_target_attachment_source

◆ render_target_attachment_store_operation

◆ render_target_attachment_type

◆ render_target_config

◆ render_view

typedef struct render_view render_view

A render view instance, responsible for the generation of view packets based on internal logic and given config.

◆ render_view_packet

A packet for and generated by a render view, which contains data about what is to be rendered.

◆ renderbuffer

typedef struct renderbuffer renderbuffer

◆ renderbuffer_track_type

◆ renderbuffer_type

◆ renderer_backend_config

The generic configuration for a renderer backend.

◆ renderer_config_flag_bits

◆ renderer_config_flags

◆ renderer_debug_view_mode

◆ renderer_plugin

A generic "interface" for the renderer plugin. The renderer backend is what is responsible for making calls to the graphics API such as Vulkan, OpenGL or DirectX. Each of these should implement this interface. The frontend only interacts via this structure and has no knowledge of the way things actually work on the backend.

◆ renderer_projection_matrix_type

◆ renderer_winding

The winding order of vertices, used to determine what is the front-face of a triangle.

◆ renderpass

typedef struct renderpass renderpass

Represents a generic renderpass.

◆ renderpass_clear_flag

The types of clearing to be done on a renderpass. Can be combined together for multiple clearing functions.

◆ renderpass_config

◆ skybox_packet_data

◆ ui_packet_data

Enumeration Type Documentation

◆ render_target_attachment_load_operation

Enumerator
RENDER_TARGET_ATTACHMENT_LOAD_OPERATION_DONT_CARE 
RENDER_TARGET_ATTACHMENT_LOAD_OPERATION_LOAD 

◆ render_target_attachment_source

Enumerator
RENDER_TARGET_ATTACHMENT_SOURCE_DEFAULT 
RENDER_TARGET_ATTACHMENT_SOURCE_VIEW 

◆ render_target_attachment_store_operation

Enumerator
RENDER_TARGET_ATTACHMENT_STORE_OPERATION_DONT_CARE 
RENDER_TARGET_ATTACHMENT_STORE_OPERATION_STORE 

◆ render_target_attachment_type

Enumerator
RENDER_TARGET_ATTACHMENT_TYPE_COLOUR 
RENDER_TARGET_ATTACHMENT_TYPE_DEPTH 
RENDER_TARGET_ATTACHMENT_TYPE_STENCIL 

◆ renderbuffer_track_type

Enumerator
RENDERBUFFER_TRACK_TYPE_NONE 
RENDERBUFFER_TRACK_TYPE_FREELIST 
RENDERBUFFER_TRACK_TYPE_LINEAR 

◆ renderbuffer_type

Enumerator
RENDERBUFFER_TYPE_UNKNOWN 

Buffer is use is unknown. Default, but usually invalid.

RENDERBUFFER_TYPE_VERTEX 

Buffer is used for vertex data.

RENDERBUFFER_TYPE_INDEX 

Buffer is used for index data.

RENDERBUFFER_TYPE_UNIFORM 

Buffer is used for uniform data.

RENDERBUFFER_TYPE_STAGING 

Buffer is used for staging purposes (i.e. from host-visible to device-local memory)

RENDERBUFFER_TYPE_READ 

Buffer is used for reading purposes (i.e copy to from device local, then read)

RENDERBUFFER_TYPE_STORAGE 

Buffer is used for data storage.

◆ renderer_config_flag_bits

Enumerator
RENDERER_CONFIG_FLAG_VSYNC_ENABLED_BIT 

Indicates that vsync should be enabled.

RENDERER_CONFIG_FLAG_POWER_SAVING_BIT 

Configures the renderer backend in a way that conserves power where possible.

◆ renderer_debug_view_mode

Enumerator
RENDERER_VIEW_MODE_DEFAULT 
RENDERER_VIEW_MODE_LIGHTING 
RENDERER_VIEW_MODE_NORMALS 

◆ renderer_projection_matrix_type

Enumerator
RENDERER_PROJECTION_MATRIX_TYPE_PERSPECTIVE 
RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC 

An orthographic matrix that is zero-based on the top left.

RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC_CENTERED 

An orthographic matrix that is centered around width/height instead of zero-based. Uses fov as a "zoom".

◆ renderer_winding

The winding order of vertices, used to determine what is the front-face of a triangle.

Enumerator
RENDERER_WINDING_COUNTER_CLOCKWISE 

Counter-clockwise vertex winding.

RENDERER_WINDING_CLOCKWISE 

Counter-clockwise vertex winding.

◆ renderpass_clear_flag

The types of clearing to be done on a renderpass. Can be combined together for multiple clearing functions.

Enumerator
RENDERPASS_CLEAR_NONE_FLAG 

No clearing should be done.

RENDERPASS_CLEAR_COLOUR_BUFFER_FLAG 

Clear the colour buffer.

RENDERPASS_CLEAR_DEPTH_BUFFER_FLAG 

Clear the depth buffer.

RENDERPASS_CLEAR_STENCIL_BUFFER_FLAG 

Clear the stencil buffer.