unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:25
_Bool b8
8-bit boolean type
Definition: defines.h:58
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
u32 renderer_config_flags
Definition: renderer_types.h:200
renderer_winding
The winding order of vertices, used to determine what is the front-face of a triangle.
Definition: renderer_types.h:211
This file contains the types for common resources the engine uses.
shader_stage
Shader stages available in the system.
Definition: resource_types.h:368
Engine-level current frame-specific data.
Definition: frame_data.h:16
Definition: renderer_types.h:15
Represents actual geometry in the world. Typically (but not always, depending on use) paired with a m...
Definition: resource_types.h:311
Definition: renderer_types.h:70
Represents a render target, which is used for rendering to a texture or set of textures.
Definition: renderer_types.h:80
Definition: renderer_types.h:172
The generic configuration for a renderer backend.
Definition: renderer_types.h:203
A generic "interface" for the renderer plugin. The renderer backend is what is responsible for making...
Definition: renderer_types.h:225
Definition: renderer_types.h:104
Represents a generic renderpass.
Definition: renderer_types.h:127
Configuration for a shader. Typically created and destroyed by the shader resource loader,...
Definition: resource_types.h:454
Represents a shader on the frontend.
Definition: shader_system.h:91
A structure which maps a texture, use and other properties.
Definition: resource_types.h:208
Represents a texture.
Definition: resource_types.h:165
A 4-element vector.
Definition: math_types.h:89
void vulkan_buffer_unmap_memory(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
b8 vulkan_renderer_is_multithreaded(renderer_plugin *backend)
void vulkan_renderer_texture_map_resources_release(renderer_plugin *backend, texture_map *map)
b8 vulkan_renderer_shader_instance_resources_acquire(renderer_plugin *backend, struct shader *s, u32 texture_map_count, texture_map **maps, u32 *out_instance_id)
b8 vulkan_renderer_present(renderer_plugin *backend, struct frame_data *p_frame_data)
b8 vulkan_renderer_geometry_upload(renderer_plugin *backend, geometry *g, u32 vertex_offset, u32 vertex_size, u32 index_offset, u32 index_range)
void vulkan_renderer_texture_resize(renderer_plugin *backend, texture *t, u32 new_width, u32 new_height)
void vulkan_renderer_texture_read_pixel(renderer_plugin *backend, texture *t, u32 x, u32 y, u8 **out_rgba)
b8 vulkan_buffer_bind(renderer_plugin *backend, renderbuffer *buffer, u64 offset)
b8 vulkan_renderer_shader_bind_globals(renderer_plugin *backend, struct shader *s)
b8 vulkan_renderer_shader_bind_instance(renderer_plugin *backend, struct shader *s, u32 instance_id)
b8 vulkan_buffer_create_internal(renderer_plugin *backend, renderbuffer *buffer)
b8 vulkan_renderer_geometry_create(renderer_plugin *backend, geometry *g)
b8 vulkan_buffer_copy_range(renderer_plugin *backend, renderbuffer *source, u64 source_offset, renderbuffer *dest, u64 dest_offset, u64 size)
void vulkan_renderer_geometry_vertex_update(renderer_plugin *plugin, geometry *g, u32 offset, u32 vertex_count, void *vertices)
b8 vulkan_renderer_render_target_create(renderer_plugin *backend, u8 attachment_count, render_target_attachment *attachments, renderpass *pass, u32 width, u32 height, render_target *out_target)
u8 vulkan_renderer_window_attachment_index_get(renderer_plugin *backend)
void vulkan_buffer_destroy_internal(renderer_plugin *backend, renderbuffer *buffer)
b8 vulkan_renderer_shader_apply_instance(renderer_plugin *backend, struct shader *s, b8 needs_update)
u8 vulkan_renderer_window_attachment_count_get(renderer_plugin *backend)
b8 vulkan_renderer_texture_map_resources_acquire(renderer_plugin *backend, texture_map *map)
b8 vulkan_buffer_load_range(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size, const void *data)
void vulkan_renderpass_destroy(renderer_plugin *backend, renderpass *pass)
void vulkan_renderer_render_target_destroy(renderer_plugin *backend, render_target *target, b8 free_internal_memory)
void vulkan_renderer_texture_destroy(renderer_plugin *backend, texture *texture)
texture * vulkan_renderer_window_attachment_get(renderer_plugin *backend, u8 index)
void vulkan_renderer_viewport_set(renderer_plugin *backend, vec4 rect)
void vulkan_renderer_texture_create_writeable(renderer_plugin *backend, texture *t)
b8 vulkan_renderer_shader_initialize(renderer_plugin *backend, struct shader *shader)
void vulkan_renderer_shader_destroy(renderer_plugin *backend, struct shader *shader)
void vulkan_renderer_scissor_set(renderer_plugin *backend, vec4 rect)
b8 vulkan_renderer_renderpass_begin(renderer_plugin *backend, renderpass *pass, render_target *target)
b8 vulkan_renderer_renderpass_end(renderer_plugin *backend, renderpass *pass)
void vulkan_renderer_flag_enabled_set(renderer_plugin *backend, renderer_config_flags flag, b8 enabled)
b8 vulkan_buffer_resize(renderer_plugin *backend, renderbuffer *buffer, u64 new_size)
void vulkan_renderer_backend_shutdown(renderer_plugin *backend)
void vulkan_renderer_texture_read_data(renderer_plugin *backend, texture *t, u32 offset, u32 size, void **out_memory)
void vulkan_renderer_geometry_draw(renderer_plugin *backend, geometry_render_data *data)
b8 vulkan_renderer_backend_initialize(renderer_plugin *backend, const renderer_backend_config *config, u8 *out_window_render_target_count)
void * vulkan_buffer_map_memory(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
b8 vulkan_renderer_shader_apply_globals(renderer_plugin *backend, struct shader *s, b8 needs_update)
b8 vulkan_buffer_flush(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
b8 vulkan_buffer_unbind(renderer_plugin *backend, renderbuffer *buffer)
b8 vulkan_renderer_frame_prepare(renderer_plugin *backend, struct frame_data *p_frame_data)
b8 vulkan_buffer_draw(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u32 element_count, b8 bind_only)
b8 vulkan_renderer_shader_instance_resources_release(renderer_plugin *backend, struct shader *s, u32 instance_id)
void vulkan_renderer_geometry_destroy(renderer_plugin *backend, geometry *g)
b8 vulkan_renderpass_create(renderer_plugin *backend, const renderpass_config *config, renderpass *out_renderpass)
b8 vulkan_renderer_end(renderer_plugin *plugin, struct frame_data *p_frame_data)
void vulkan_renderer_scissor_reset(renderer_plugin *backend)
void vulkan_renderer_backend_on_resized(renderer_plugin *backend, u16 width, u16 height)
b8 vulkan_renderer_uniform_set(renderer_plugin *backend, struct shader *frontend_shader, struct shader_uniform *uniform, const void *value)
b8 vulkan_renderer_shader_use(renderer_plugin *backend, struct shader *shader)
void vulkan_renderer_viewport_reset(renderer_plugin *backend)
texture * vulkan_renderer_depth_attachment_get(renderer_plugin *backend, u8 index)
b8 vulkan_renderer_flag_enabled_get(renderer_plugin *backend, renderer_config_flags flag)
b8 vulkan_renderer_texture_map_resources_refresh(renderer_plugin *plugin, texture_map *map)
void vulkan_renderer_winding_set(struct renderer_plugin *plugin, renderer_winding winding)
b8 vulkan_renderer_begin(renderer_plugin *plugin, struct frame_data *p_frame_data)
void vulkan_renderer_texture_write_data(renderer_plugin *backend, texture *t, u32 offset, u32 size, const u8 *pixels)
void vulkan_renderer_texture_create(renderer_plugin *backend, const u8 *pixels, texture *texture)
b8 vulkan_renderer_shader_create(renderer_plugin *backend, struct shader *shader, const shader_config *config, renderpass *pass, u8 stage_count, const char **stage_filenames, shader_stage *stages)
b8 vulkan_buffer_read(renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size, void **out_memory)
Hosts creation and destruction methods for the renderer backend.