22 #define RENDERER_MAX_FRAME_COUNT 3
524 b8 (*
shader_create)(
struct renderer_backend_interface* backend,
khandle shader,
kname name,
shader_flags flags,
u32 topology_types,
face_cull_mode cull_mode,
u32 stage_count,
shader_stage* stages,
kname* stage_names,
const char** stage_sources,
u32 max_groups,
u32 max_draw_ids,
u32 attribute_count,
const shader_attribute* attributes,
u32 uniform_count,
const shader_uniform* d_uniforms);
face_cull_mode
Determines face culling mode during rendering.
Definition: core_render_types.h:11
texture_filter
Represents supported texture filtering modes.
Definition: core_render_types.h:59
u32 shader_flags
A combination of topology bit flags.
Definition: core_render_types.h:237
texture_repeat
Definition: core_render_types.h:66
shader_stage
Shader stages available in the system.
Definition: core_render_types.h:82
This file contains global type definitions which are used throughout the entire engine and applicatio...
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:25
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:22
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:19
This file contains a free list, used for custom memory allocation tracking.
struct khandle khandle
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
This files contains an implementation of knames.
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
u16 ktexture
Represents a texture to be used for rendering purposes, stored on the GPU (VRAM)
Definition: kresource_types.h:45
u8 ktexture_flag_bits
Holds bit flags for textures..
Definition: kresource_types.h:39
ktexture_type
Represents various types of textures.
Definition: kresource_types.h:10
Contains various math types required for the engine.
renderer_config_flag_bits
Definition: renderer_types.h:209
@ RENDERER_CONFIG_FLAG_POWER_SAVING_BIT
Configures the renderer backend in a way that conserves power where possible.
Definition: renderer_types.h:213
@ RENDERER_CONFIG_FLAG_ENABLE_VALIDATION
Enables advanced validation in the renderer backend, if supported.
Definition: renderer_types.h:215
@ RENDERER_CONFIG_FLAG_VSYNC_ENABLED_BIT
Indicates that vsync should be enabled.
Definition: renderer_types.h:211
renderer_compare_op
Definition: renderer_types.h:99
@ RENDERER_COMPARE_OP_LESS
Specifies that the comparison evaluates reference < test.
Definition: renderer_types.h:103
@ RENDERER_COMPARE_OP_GREATER_OR_EQUAL
Specifies that the comparison evaluates reference >= test.
Definition: renderer_types.h:113
@ RENDERER_COMPARE_OP_GREATER
Specifies that the comparison evaluates reference > test.
Definition: renderer_types.h:109
@ RENDERER_COMPARE_OP_LESS_OR_EQUAL
Specifies that the comparison evaluates reference <= test.
Definition: renderer_types.h:107
@ RENDERER_COMPARE_OP_ALWAYS
Specifies that the comparison is always true.
Definition: renderer_types.h:115
@ RENDERER_COMPARE_OP_NEVER
Specifies that the comparison always evaluates false.
Definition: renderer_types.h:101
@ RENDERER_COMPARE_OP_EQUAL
Specifies that the comparison evaluates reference = test.
Definition: renderer_types.h:105
@ RENDERER_COMPARE_OP_NOT_EQUAL
Specifies that the comparison evaluates reference != test.
Definition: renderer_types.h:111
renderer_cull_mode
The face cull mode.
Definition: renderer_types.h:241
@ RENDERER_CULL_MODE_FRONT
Only front faces are culled.
Definition: renderer_types.h:245
@ RENDERER_CULL_MODE_NONE
No faces are culled.
Definition: renderer_types.h:243
@ RENDERER_CULL_MODE_FRONT_AND_BACK
Both front and back faces are culled.
Definition: renderer_types.h:249
@ RENDERER_CULL_MODE_BACK
Only back faces are culled.
Definition: renderer_types.h:247
renderer_attachment_use
Definition: renderer_types.h:136
@ RENDERER_ATTACHMENT_USE_COLOUR_PRESENT
Definition: renderer_types.h:139
@ RENDERER_ATTACHMENT_USE_COLOUR_SHADER_READ
Definition: renderer_types.h:140
@ RENDERER_ATTACHMENT_USE_DEPTH_STENCIL_ATTACHMENT
Definition: renderer_types.h:142
@ RENDERER_ATTACHMENT_USE_DEPTH_STENCIL_SHADER_WRITE
Definition: renderer_types.h:144
@ RENDERER_ATTACHMENT_USE_COLOUR_SHADER_WRITE
Definition: renderer_types.h:141
@ RENDERER_ATTACHMENT_USE_COLOUR_ATTACHMENT
Definition: renderer_types.h:138
@ RENDERER_ATTACHMENT_USE_DONT_CARE
Definition: renderer_types.h:137
@ RENDERER_ATTACHMENT_USE_DEPTH_STENCIL_SHADER_READ
Definition: renderer_types.h:143
struct renderer_backend_interface renderer_backend_interface
A generic "interface" for the renderer backend. The renderer backend is what is responsible for makin...
renderbuffer_track_type
Definition: renderer_types.h:164
@ RENDERBUFFER_TRACK_TYPE_LINEAR
Definition: renderer_types.h:167
@ RENDERBUFFER_TRACK_TYPE_NONE
Definition: renderer_types.h:165
@ RENDERBUFFER_TRACK_TYPE_FREELIST
Definition: renderer_types.h:166
struct renderbuffer_queued_deletion renderbuffer_queued_deletion
Represents a queued renderbuffer deletion.
struct kwindow_renderer_state kwindow_renderer_state
The internal state of a window for the renderer frontend.
struct renderer_backend_config renderer_backend_config
The generic configuration for a renderer backend.
renderer_attachment_load_operation
Definition: renderer_types.h:126
@ RENDERER_ATTACHMENT_LOAD_OPERATION_LOAD
Definition: renderer_types.h:128
@ RENDERER_ATTACHMENT_LOAD_OPERATION_DONT_CARE
Definition: renderer_types.h:127
struct renderbuffer_data renderbuffer_data
u32 renderer_attachment_type_flags
Definition: renderer_types.h:124
struct renderbuffer renderbuffer
renderer_stencil_op
Definition: renderer_types.h:80
@ RENDERER_STENCIL_OP_INCREMENT_AND_WRAP
Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the...
Definition: renderer_types.h:94
@ RENDERER_STENCIL_OP_KEEP
Keeps the current value.
Definition: renderer_types.h:82
@ RENDERER_STENCIL_OP_INCREMENT_AND_CLAMP
Increments the current stencil buffer value. Clamps to the maximum representable unsigned value.
Definition: renderer_types.h:88
@ RENDERER_STENCIL_OP_ZERO
Sets the stencil buffer value to 0.
Definition: renderer_types.h:84
@ RENDERER_STENCIL_OP_REPLACE
Sets the stencil buffer value to ref, as specified in the function.
Definition: renderer_types.h:86
@ RENDERER_STENCIL_OP_DECREMENT_AND_WRAP
Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable ...
Definition: renderer_types.h:96
@ RENDERER_STENCIL_OP_INVERT
Bitwise inverts the current stencil buffer value.
Definition: renderer_types.h:92
@ RENDERER_STENCIL_OP_DECREMENT_AND_CLAMP
Decrements the current stencil buffer value. Clamps to 0.
Definition: renderer_types.h:90
renderbuffer_type
Definition: renderer_types.h:147
@ RENDERBUFFER_TYPE_STORAGE
Buffer is used for data storage.
Definition: renderer_types.h:161
@ RENDERBUFFER_TYPE_VERTEX
Buffer is used for vertex data.
Definition: renderer_types.h:151
@ RENDERBUFFER_TYPE_UNIFORM
Buffer is used for uniform data.
Definition: renderer_types.h:155
@ RENDERBUFFER_TYPE_READ
Buffer is used for reading purposes (i.e copy to from device local, then read)
Definition: renderer_types.h:159
@ RENDERBUFFER_TYPE_INDEX
Buffer is used for index data.
Definition: renderer_types.h:153
@ RENDERBUFFER_TYPE_STAGING
Buffer is used for staging purposes (i.e. from host-visible to device-local memory)
Definition: renderer_types.h:157
@ RENDERBUFFER_TYPE_UNKNOWN
Buffer is use is unknown. Default, but usually invalid.
Definition: renderer_types.h:149
struct geometry_render_data geometry_render_data
u32 renderer_config_flags
Definition: renderer_types.h:218
renderer_attachment_store_operation
Definition: renderer_types.h:131
@ RENDERER_ATTACHMENT_STORE_OPERATION_DONT_CARE
Definition: renderer_types.h:132
@ RENDERER_ATTACHMENT_STORE_OPERATION_STORE
Definition: renderer_types.h:133
renderer_winding
The winding order of vertices, used to determine what is the front-face of a triangle.
Definition: renderer_types.h:233
@ RENDERER_WINDING_CLOCKWISE
Counter-clockwise vertex winding.
Definition: renderer_types.h:237
@ RENDERER_WINDING_COUNTER_CLOCKWISE
Counter-clockwise vertex winding.
Definition: renderer_types.h:235
renderer_debug_view_mode
Definition: renderer_types.h:64
@ RENDERER_VIEW_MODE_DEFAULT
Definition: renderer_types.h:65
@ RENDERER_VIEW_MODE_LIGHTING
Definition: renderer_types.h:66
@ RENDERER_VIEW_MODE_WIREFRAME
Definition: renderer_types.h:69
@ RENDERER_VIEW_MODE_NORMALS
Definition: renderer_types.h:67
@ RENDERER_VIEW_MODE_CASCADES
Definition: renderer_types.h:68
renderer_projection_matrix_type
Definition: renderer_types.h:72
@ RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC
An orthographic matrix that is zero-based on the top left.
Definition: renderer_types.h:75
@ RENDERER_PROJECTION_MATRIX_TYPE_ORTHOGRAPHIC_CENTERED
An orthographic matrix that is centered around width/height instead of zero-based....
Definition: renderer_types.h:77
@ RENDERER_PROJECTION_MATRIX_TYPE_PERSPECTIVE
Definition: renderer_types.h:73
renderer_attachment_type_flag_bits
Definition: renderer_types.h:118
@ RENDERER_ATTACHMENT_TYPE_FLAG_COLOUR_BIT
Definition: renderer_types.h:119
@ RENDERER_ATTACHMENT_TYPE_FLAG_STENCIL_BIT
Definition: renderer_types.h:121
@ RENDERER_ATTACHMENT_TYPE_FLAG_DEPTH_BIT
Definition: renderer_types.h:120
Represents a camera that can be used for a variety of things, especially rendering....
Definition: camera.h:21
Engine-level current frame-specific data.
Definition: frame_data.h:11
A data structure to be used alongside an allocator for dynamic memory allocation. Tracks free ranges ...
Definition: freelist.h:20
Definition: renderer_types.h:35
u32 ibl_probe_index
The index of the IBL probe to use.
Definition: renderer_types.h:61
b8 winding_inverted
Definition: renderer_types.h:43
mat4 model
Definition: renderer_types.h:36
u32 index_count
The index count.
Definition: renderer_types.h:54
material_instance material
Definition: renderer_types.h:37
u64 unique_id
Definition: renderer_types.h:42
u32 vertex_count
The vertex count.
Definition: renderer_types.h:47
vec4 diffuse_colour
Definition: renderer_types.h:44
u32 index_element_size
The size of each index.
Definition: renderer_types.h:56
u64 vertex_buffer_offset
The offset from the beginning of the vertex buffer.
Definition: renderer_types.h:51
u32 vertex_element_size
The size of each vertex.
Definition: renderer_types.h:49
u32 draw_id
Definition: renderer_types.h:40
u64 index_buffer_offset
The offset from the beginning of the index buffer.
Definition: renderer_types.h:58
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
Definition: khandle.h:25
A range, typically of memory.
Definition: defines.h:61
The Vulkan-specific backend window state.
Definition: vulkan_types.h:602
The internal state of a window for the renderer frontend.
Definition: renderer_types.h:255
ktexture colourbuffer
Definition: renderer_types.h:262
ktexture depthbuffer
Definition: renderer_types.h:264
struct viewport * active_viewport
Definition: renderer_types.h:259
struct kwindow_renderer_backend_state * backend_state
The internal state of the window containing renderer backend data.
Definition: renderer_types.h:267
struct kwindow * window
Definition: renderer_types.h:257
Represents a window in the application.
Definition: platform.h:69
A material instance, which contains handles to both the base material as well as the instance itself....
Definition: core_render_types.h:395
Definition: renderer_types.h:24
u32 element_count
The element count.
Definition: renderer_types.h:26
u64 buffer_offset
The offset from the beginning of the buffer.
Definition: renderer_types.h:32
u32 element_size
The size of each element.
Definition: renderer_types.h:28
void * elements
The element data.
Definition: renderer_types.h:30
Represents a queued renderbuffer deletion.
Definition: renderer_types.h:173
krange range
The range to be deleted. Considered a "free" slot if range's values are 0.
Definition: renderer_types.h:177
u8 frames_until_delete
The number of frames remaining until the deletion occurs.
Definition: renderer_types.h:175
Definition: renderer_types.h:180
renderbuffer_type type
The type of buffer, which typically determines its use.
Definition: renderer_types.h:184
freelist buffer_freelist
The buffer freelist, if used.
Definition: renderer_types.h:192
char * name
The name of the buffer, used for debugging purposes.
Definition: renderer_types.h:182
u64 offset
The byte offset used for linear tracking.
Definition: renderer_types.h:198
renderbuffer_queued_deletion * delete_queue
Queue of ranges to be deleted in this buffer. This is to ensure that the data isn't being used before...
Definition: renderer_types.h:206
u64 total_size
The total size of the buffer in bytes.
Definition: renderer_types.h:186
renderbuffer_track_type track_type
indicates the allocation tracking type.
Definition: renderer_types.h:188
void * internal_data
Contains internal data for the renderer-API-specific buffer.
Definition: renderer_types.h:196
void * freelist_block
The freelist memory block, if needed.
Definition: renderer_types.h:194
u64 freelist_memory_requirement
The amount of memory required to store the freelist. 0 if not used.
Definition: renderer_types.h:190
The generic configuration for a renderer backend.
Definition: renderer_types.h:221
b8 use_triple_buffering
Indicates if triple buffering should be used. Otherwise, double-buffering is used.
Definition: renderer_types.h:229
u16 max_shader_count
The max number of shaders that be be held. Should match shader system config.
Definition: renderer_types.h:227
renderer_config_flags flags
Various configuration flags for renderer backend setup.
Definition: renderer_types.h:225
const char * application_name
The name of the application.
Definition: renderer_types.h:223
A generic "interface" for the renderer backend. The renderer backend is what is responsible for makin...
Definition: renderer_types.h:277
void(* end_rendering)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
Definition: renderer_types.h:435
void(* cull_mode_set)(struct renderer_backend_interface *backend, renderer_cull_mode cull_mode)
Set the renderer to use the given cull mode.
Definition: renderer_types.h:389
b8(* texture_read_pixel)(struct renderer_backend_interface *backend, khandle renderer_texture_handle, u32 x, u32 y, u8 **out_rgba)
Reads a pixel from the provided texture at the given x/y coordinate.
Definition: renderer_types.h:514
b8(* shader_per_group_resources_acquire)(struct renderer_backend_interface *backend, khandle shader, u32 *out_instance_id)
Acquires internal instance-level resources and provides an instance id.
Definition: renderer_types.h:651
void(* set_stencil_write_mask)(struct renderer_backend_interface *backend, u32 write_mask)
Set stencil write mask.
Definition: renderer_types.h:451
b8(* renderbuffer_resize)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 new_total_size)
Resizes the given buffer to new_total_size. new_total_size must be greater than the current buffer si...
Definition: renderer_types.h:860
b8(* shader_flag_get)(const struct renderer_backend_interface *backend, khandle shader, shader_flags flag)
Indicates if the given shader flag is set.
Definition: renderer_types.h:572
b8(* renderbuffer_flush)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size)
Flushes buffer memory at the given range. Should be done after a write.
Definition: renderer_types.h:836
b8(* shader_apply_per_draw)(struct renderer_backend_interface *backend, khandle shader, u16 generation)
Applies per-draw data to the uniform buffer.
Definition: renderer_types.h:641
b8(* texture_write_data)(struct renderer_backend_interface *backend, khandle renderer_texture_handle, u32 offset, u32 size, const u8 *pixels, b8 include_in_frame_workload)
Writes the given data to the provided texture. NOTE: At this level, this can either be a writeable or...
Definition: renderer_types.h:490
void(* shader_flag_set)(struct renderer_backend_interface *backend, khandle shader, shader_flags flag, b8 enabled)
Sets the given shader flag.
Definition: renderer_types.h:582
void(* renderbuffer_unmap_memory)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size)
Unmaps memory from the given buffer in the provided range to a block of memory. This memory should be...
Definition: renderer_types.h:825
f32(* max_anisotropy_get)(struct renderer_backend_interface *backend)
Obtains the max anisotropy level available from the renderer. 0 means not available.
Definition: renderer_types.h:768
b8(* renderbuffer_unbind)(struct renderer_backend_interface *backend, renderbuffer *buffer)
Unbinds the given buffer.
Definition: renderer_types.h:803
b8(* sampler_refresh)(struct renderer_backend_interface *backend, khandle *sampler, texture_filter filter, texture_repeat repeat, f32 anisotropy, u32 mip_levels)
Recreates the internal sampler pointed to by the given handle. Modifies the handle.
Definition: renderer_types.h:726
void(* set_stencil_compare_mask)(struct renderer_backend_interface *backend, u32 compare_mask)
Set stencil compare mask.
Definition: renderer_types.h:443
b8(* shader_bind_per_draw)(struct renderer_backend_interface *backend, khandle shader, u32 draw_id)
Binds the given per-draw frequency id.
Definition: renderer_types.h:611
khandle(* sampler_acquire)(struct renderer_backend_interface *backend, kname name, texture_filter filter, texture_repeat repeat, f32 anisotropy)
Acquires a internal sampler and returns a handle to it.
Definition: renderer_types.h:707
void(* renderbuffer_internal_destroy)(struct renderer_backend_interface *backend, renderbuffer *buffer)
Destroys the given buffer.
Definition: renderer_types.h:785
b8(* shader_create)(struct renderer_backend_interface *backend, khandle shader, kname name, shader_flags flags, u32 topology_types, face_cull_mode cull_mode, u32 stage_count, shader_stage *stages, kname *stage_names, const char **stage_sources, u32 max_groups, u32 max_draw_ids, u32 attribute_count, const shader_attribute *attributes, u32 uniform_count, const shader_uniform *d_uniforms)
Creates internal shader resources using the provided parameters.
Definition: renderer_types.h:524
void(* texture_prepare_for_sampling)(struct renderer_backend_interface *backend, khandle renderer_texture_handle, ktexture_flag_bits flags)
Definition: renderer_types.h:459
b8(* frame_commands_begin)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
Definition: renderer_types.h:338
b8(* shader_use)(struct renderer_backend_interface *backend, khandle shader)
Uses the given shader, activating it for updates to attributes, uniforms and such,...
Definition: renderer_types.h:553
void(* viewport_reset)(struct renderer_backend_interface *backend)
Resets the viewport to the default, which matches the application window.
Definition: renderer_types.h:358
b8(* renderbuffer_read)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size, void **out_memory)
Reads memory from the provided buffer at the given range to the output variable.
Definition: renderer_types.h:848
kname(* sampler_name_get)(struct renderer_backend_interface *backend, khandle sampler)
Attempts to obtain the name of a sampler with the given handle. Returns INVALID_KNAME if not found.
Definition: renderer_types.h:735
b8(* texture_resize)(struct renderer_backend_interface *backend, khandle renderer_texture_handle, u32 new_width, u32 new_height)
Resizes a texture. There is no check at this level to see if the texture is writeable....
Definition: renderer_types.h:475
struct renderer_system_state * frontend_state
Definition: renderer_types.h:279
void(* clear_depth_set)(struct renderer_backend_interface *backend, f32 depth)
Definition: renderer_types.h:454
b8(* frame_present)(struct renderer_backend_interface *backend, struct kwindow *window, struct frame_data *p_frame_data)
Definition: renderer_types.h:343
void(* begin_debug_label)(struct renderer_backend_interface *backend, const char *label_text, vec3 colour)
Definition: renderer_types.h:306
b8(* is_multithreaded)(struct renderer_backend_interface *backend)
Indicates if the renderer is capable of multi-threading.
Definition: renderer_types.h:742
b8(* initialize)(struct renderer_backend_interface *backend, const renderer_backend_config *config)
Initializes the backend.
Definition: renderer_types.h:297
u64 internal_context_size
The size of the backend-specific renderer context.
Definition: renderer_types.h:284
void(* window_resized)(struct renderer_backend_interface *backend, const struct kwindow *window)
Handles window resizes.
Definition: renderer_types.h:332
void(* flag_enabled_set)(struct renderer_backend_interface *backend, renderer_config_flags flag, b8 enabled)
Sets whether the included flag(s) are enabled or not. If multiple flags are passed,...
Definition: renderer_types.h:761
b8(* frame_submit)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
Definition: renderer_types.h:342
void(* scissor_reset)(struct renderer_backend_interface *backend)
Resets the scissor to the default, which matches the application window.
Definition: renderer_types.h:373
b8(* shader_per_draw_resources_release)(struct renderer_backend_interface *backend, khandle shader, u32 local_id)
Releases internal local-level resources for the given instance id.
Definition: renderer_types.h:683
void(* clear_colour_set)(struct renderer_backend_interface *backend, vec4 clear_colour)
Definition: renderer_types.h:453
void(* shader_destroy)(struct renderer_backend_interface *backend, khandle shader)
Destroys the given shader and releases any resources held by it.
Definition: renderer_types.h:532
b8(* frame_commands_end)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
Definition: renderer_types.h:340
b8(* shader_apply_per_frame)(struct renderer_backend_interface *backend, khandle shader, u16 renderer_frame_number)
Applies per-frame data to the uniform buffer.
Definition: renderer_types.h:621
void(* set_stencil_reference)(struct renderer_backend_interface *backend, u32 reference)
Set the stencil reference for testing.
Definition: renderer_types.h:421
b8(* frame_prepare)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
Definition: renderer_types.h:334
b8(* texture_resources_acquire)(struct renderer_backend_interface *backend, const char *name, ktexture_type type, u32 width, u32 height, u8 channel_count, u8 mip_levels, u16 array_size, ktexture_flag_bits flags, khandle *out_renderer_texture_handle)
Definition: renderer_types.h:461
b8(* shader_uniform_set)(struct renderer_backend_interface *backend, khandle frontend_shader, struct shader_uniform *uniform, u32 array_index, const void *value)
Sets the uniform of the given shader to the provided value.
Definition: renderer_types.h:695
void(* wait_for_idle)(struct renderer_backend_interface *backend)
Definition: renderer_types.h:904
void(* clear_colour)(struct renderer_backend_interface *backend, khandle renderer_texture_handle)
Definition: renderer_types.h:456
void(* winding_set)(struct renderer_backend_interface *backend, renderer_winding winding)
Set the renderer to use the given winding direction.
Definition: renderer_types.h:381
b8(* frame_prepare_window_surface)(struct renderer_backend_interface *backend, struct kwindow *window, struct frame_data *p_frame_data)
Definition: renderer_types.h:336
b8(* shader_reload)(struct renderer_backend_interface *backend, khandle s, u32 stage_count, shader_stage *stages, kname *names, const char **sources)
Reloads the internals of the given shader.
Definition: renderer_types.h:543
b8(* shader_per_group_resources_release)(struct renderer_backend_interface *backend, khandle shader, u32 instance_id)
Releases internal instance-level resources for the given instance id.
Definition: renderer_types.h:661
b8(* renderbuffer_bind)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset)
Binds the given buffer at the provided offset.
Definition: renderer_types.h:795
void(* begin_rendering)(struct renderer_backend_interface *backend, struct frame_data *p_frame_data, rect_2d render_area, u32 colour_target_count, khandle *colour_targets, khandle depth_stencil_target, u32 depth_stencil_layer)
Definition: renderer_types.h:434
b8(* renderbuffer_load_range)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size, const void *data, b8 include_in_frame_workload)
Loads provided data into the specified rage of the given buffer.
Definition: renderer_types.h:872
void(* set_depth_test_enabled)(struct renderer_backend_interface *backend, b8 enabled)
Set depth testing enabled/disabled.
Definition: renderer_types.h:405
void(* colour_texture_prepare_for_present)(struct renderer_backend_interface *backend, khandle renderer_texture_handle)
Definition: renderer_types.h:458
b8(* shader_supports_wireframe)(const struct renderer_backend_interface *backend, khandle shader)
Indicates if the supplied shader supports wireframe mode.
Definition: renderer_types.h:562
b8(* texture_read_data)(struct renderer_backend_interface *backend, khandle renderer_texture_handle, u32 offset, u32 size, u8 **out_pixels)
Reads the given data from the provided texture.
Definition: renderer_types.h:502
void(* sampler_release)(struct renderer_backend_interface *backend, khandle *sampler)
Releases the internal sampler for the given handle.
Definition: renderer_types.h:714
b8(* window_create)(struct renderer_backend_interface *backend, struct kwindow *window)
Handles window creation.
Definition: renderer_types.h:316
b8(* renderbuffer_draw)(struct renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u32 element_count, b8 bind_only)
Attempts to draw the contents of the provided buffer at the given offset and element count....
Definition: renderer_types.h:898
void(* clear_depth_stencil)(struct renderer_backend_interface *backend, khandle renderer_texture_handle)
Definition: renderer_types.h:457
void(* set_stencil_test_enabled)(struct renderer_backend_interface *backend, b8 enabled)
Set stencil testing enabled/disabled.
Definition: renderer_types.h:397
void * internal_context
The backend-specific renderer context.
Definition: renderer_types.h:288
void(* texture_resources_release)(struct renderer_backend_interface *backend, khandle *renderer_texture_handle)
Definition: renderer_types.h:462
b8(* renderbuffer_internal_create)(struct renderer_backend_interface *backend, renderbuffer *buffer)
Creates and assigns the renderer-backend-specific buffer.
Definition: renderer_types.h:777
b8(* shader_bind_per_group)(struct renderer_backend_interface *backend, khandle shader, u32 group_id)
Binds the given per-group frequency id.
Definition: renderer_types.h:601
b8(* flag_enabled_get)(struct renderer_backend_interface *backend, renderer_config_flags flag)
Indicates if the provided renderer flag is enabled. If multiple flags are passed, all must be set for...
Definition: renderer_types.h:752
void(* set_depth_write_enabled)(struct renderer_backend_interface *backend, b8 enabled)
Set depth write enabled/disabled.
Definition: renderer_types.h:413
void(* window_destroy)(struct renderer_backend_interface *backend, struct kwindow *window)
Handles window destruction.
Definition: renderer_types.h:324
b8(* renderbuffer_copy_range)(struct renderer_backend_interface *backend, renderbuffer *source, u64 source_offset, renderbuffer *dest, u64 dest_offset, u64 size, b8 include_in_frame_workload)
Copies data in the specified rage fron the source to the destination buffer.
Definition: renderer_types.h:885
void(* viewport_set)(struct renderer_backend_interface *backend, vec4 rect)
Sets the renderer viewport to the given rectangle.
Definition: renderer_types.h:351
void(* clear_stencil_set)(struct renderer_backend_interface *backend, u32 stencil)
Definition: renderer_types.h:455
void(* scissor_set)(struct renderer_backend_interface *backend, vec4 rect)
Sets the renderer scissor to the given rectangle.
Definition: renderer_types.h:366
void(* end_debug_label)(struct renderer_backend_interface *backend)
Definition: renderer_types.h:307
void(* set_stencil_op)(struct renderer_backend_interface *backend, renderer_stencil_op fail_op, renderer_stencil_op pass_op, renderer_stencil_op depth_fail_op, renderer_compare_op compare_op)
Set stencil operation.
Definition: renderer_types.h:432
void(* shutdown)(struct renderer_backend_interface *backend)
Shuts the renderer backend down.
Definition: renderer_types.h:304
b8(* shader_bind_per_frame)(struct renderer_backend_interface *backend, khandle shader)
Binds the per-frame frequency.
Definition: renderer_types.h:591
b8(* shader_per_draw_resources_acquire)(struct renderer_backend_interface *backend, khandle shader, u32 *out_local_id)
Acquires internal local-level resources and provides an instance id.
Definition: renderer_types.h:673
b8(* shader_apply_per_group)(struct renderer_backend_interface *backend, khandle shader, u16 generation)
Applies data for the currently bound group.
Definition: renderer_types.h:631
Represents a single shader vertex attribute.
Definition: core_render_types.h:207
a 4x4 matrix, typically used to represent object transformations.
Definition: math_types.h:195
A 3-element vector.
Definition: math_types.h:49
A 4-element vector.
Definition: math_types.h:89