#define KAPI
Import/export qualifier.
Definition: defines.h:177
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
KAPI void renderer_on_resized(u16 width, u16 height)
Handles resize events.
KAPI b8 renderer_renderbuffer_clear(renderbuffer *buffer, b8 zero_memory)
Clears the given buffer. Internally, resets the free list if one is used.
KAPI b8 renderer_geometry_upload(geometry *geometry)
Acquires GPU resources and uploads geometry data.
KAPI void renderer_scissor_set(vec4 rect)
Sets the renderer scissor to the given rectangle. Must be done within a renderpass.
KAPI void renderer_system_shutdown(void *state)
Shuts the renderer system/frontend down.
KAPI void renderer_render_target_destroy(render_target *target, b8 free_internal_memory)
Destroys the provided render target.
KAPI b8 renderer_renderbuffer_unbind(renderbuffer *buffer)
Unbinds the given buffer.
KAPI u8 renderer_window_attachment_index_get(void)
Returns the current window attachment index.
KAPI b8 renderer_is_multithreaded(void)
Indicates if the renderer is capable of multi-threading.
KAPI b8 renderer_shader_uniform_set(struct shader *s, struct shader_uniform *uniform, const void *value)
Sets the uniform of the given shader to the provided value.
KAPI void * renderer_renderbuffer_map_memory(renderbuffer *buffer, u64 offset, u64 size)
Maps memory from the given buffer in the provided range to a block of memory and returns it....
KAPI b8 renderer_renderbuffer_draw(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....
struct renderer_system_config renderer_system_config
KAPI b8 renderer_shader_apply_instance(struct shader *s, b8 needs_update)
Applies data for the currently bound instance.
KAPI void renderer_active_viewport_set(struct viewport *v)
Sets the currently active viewport.
KAPI void renderer_viewport_reset(void)
Resets the viewport to the default, which matches the application window. Must be done within a rende...
KAPI void renderer_texture_resize(texture *t, u32 new_width, u32 new_height)
Resizes a texture. There is no check at this level to see if the texture is writeable....
KAPI texture * renderer_depth_attachment_get(u8 index)
Returns a pointer to the main depth texture target.
KAPI b8 renderer_renderbuffer_allocate(renderbuffer *buffer, u64 size, u64 *out_offset)
Attempts to allocate memory from the given buffer. Should only be used on buffers that were created w...
KAPI void renderer_texture_map_resources_release(struct texture_map *map)
Releases internal resources for the given texture map.
KAPI void renderer_texture_destroy(struct texture *texture)
Destroys the given texture, releasing internal resources from the GPU.
KAPI void renderer_geometry_draw(geometry_render_data *data)
Draws the given geometry. Should only be called inside a renderpass, within a frame.
KAPI b8 renderer_renderbuffer_load_range(renderbuffer *buffer, u64 offset, u64 size, const void *data)
Loads provided data into the specified rage of the given buffer.
KAPI b8 renderer_shader_create(struct shader *s, const shader_config *config, renderpass *pass, u8 stage_count, const char **stage_filenames, shader_stage *stages)
Creates internal shader resources using the provided parameters.
KAPI void renderer_renderbuffer_unmap_memory(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...
KAPI b8 renderer_system_initialize(u64 *memory_requirement, void *state, void *config)
Initializes the renderer frontend/system. Should be called twice - once to obtain the memory requirem...
KAPI void renderer_texture_create(const u8 *pixels, struct texture *texture)
Creates a new texture.
KAPI b8 renderer_renderbuffer_read(renderbuffer *buffer, u64 offset, u64 size, void **out_memory)
Reads memory from the provided buffer at the given range to the output variable.
KAPI b8 renderer_shader_apply_globals(struct shader *s, b8 needs_update)
Applies global data to the uniform buffer.
KAPI b8 renderer_frame_prepare(struct frame_data *p_frame_data)
Performs setup routines required at the start of a frame.
KAPI void renderer_texture_create_writeable(texture *t)
Creates a new writeable texture with no data written to it.
KAPI void renderer_viewport_set(vec4 rect)
Sets the renderer viewport to the given rectangle. Must be done within a renderpass.
KAPI b8 renderer_renderbuffer_bind(renderbuffer *buffer, u64 offset)
Binds the given buffer at the provided offset.
KAPI b8 renderer_renderbuffer_flush(renderbuffer *buffer, u64 offset, u64 size)
Flushes buffer memory at the given range. Should be done after a write.
KAPI struct viewport * renderer_active_viewport_get(void)
Returns a pointer to the currently active viewport.
KAPI void renderer_renderpass_destroy(renderpass *pass)
Destroys the given renderpass.
KAPI b8 renderer_end(struct frame_data *p_frame_data)
Ends a render.
KAPI b8 renderer_renderbuffer_create(const char *name, renderbuffer_type type, u64 total_size, renderbuffer_track_type track_type, renderbuffer *out_buffer)
Creates a new renderbuffer to hold data for a given purpose/use. Backed by a renderer-backend-specifi...
KAPI b8 renderer_present(struct frame_data *p_frame_data)
Performs routines required to draw a frame, such as presentation. Should only be called after a succe...
KAPI b8 renderer_shader_initialize(struct shader *s)
Initializes a configured shader. Will be automatically destroyed if this step fails....
KAPI b8 renderer_shader_bind_instance(struct shader *s, u32 instance_id)
Binds instance resources for use and updating.
KAPI void renderer_scissor_reset(void)
Resets the scissor to the default, which matches the application window. Must be done within a render...
KAPI b8 renderer_texture_map_resources_acquire(struct texture_map *map)
Acquires internal resources for the given texture map.
KAPI b8 renderer_geometry_create(geometry *geometry, u32 vertex_size, u32 vertex_count, const void *vertices, u32 index_size, u32 index_count, const void *indices)
Creates geometry, taking a copy of the provided data and setting up the data structure.
KAPI void renderer_geometry_vertex_update(geometry *g, u32 offset, u32 vertex_count, void *vertices)
Updates vertex data in the given geometry with the provided data in the given range.
KAPI void renderer_texture_write_data(texture *t, u32 offset, u32 size, const u8 *pixels)
Writes the given data to the provided texture.
KAPI texture * renderer_window_attachment_get(u8 index)
Attempts to get the window render target at the given index.
KAPI b8 renderer_begin(struct frame_data *p_frame_data)
Begins a render. There must be at least one of these and a matching end per frame.
KAPI b8 renderer_renderbuffer_free(renderbuffer *buffer, u64 size, u64 offset)
Frees memory from the given buffer.
KAPI b8 renderer_renderbuffer_resize(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...
KAPI b8 renderer_renderpass_begin(renderpass *pass, render_target *target)
Begins the given renderpass.
KAPI void renderer_winding_set(renderer_winding winding)
Set the renderer to use the given winding direction.
KAPI b8 renderer_shader_bind_globals(struct shader *s)
Binds global resources for use and updating.
KAPI b8 renderer_flag_enabled_get(renderer_config_flags flag)
Indicates if the provided renderer flag is enabled. If multiple flags are passed, all must be set for...
KAPI void renderer_shader_destroy(struct shader *s)
Destroys the given shader and releases any resources held by it.
KAPI b8 renderer_shader_instance_resources_acquire(struct shader *s, u32 texture_map_count, texture_map **maps, u32 *out_instance_id)
Acquires internal instance-level resources and provides an instance id.
KAPI void renderer_texture_read_data(texture *t, u32 offset, u32 size, void **out_memory)
Reads the given data from the provided texture.
KAPI void renderer_texture_read_pixel(texture *t, u32 x, u32 y, u8 **out_rgba)
Reads a pixel from the provided texture at the given x/y coordinate.
KAPI b8 renderer_shader_use(struct shader *s)
Uses the given shader, activating it for updates to attributes, uniforms and such,...
KAPI u8 renderer_window_attachment_count_get(void)
Returns the number of attachments required for window-based render targets.
KAPI b8 renderer_renderbuffer_copy_range(renderbuffer *source, u64 source_offset, renderbuffer *dest, u64 dest_offset, u64 size)
Copies data in the specified rage fron the source to the destination buffer.
KAPI void renderer_flag_enabled_set(renderer_config_flags flag, b8 enabled)
Sets whether the included flag(s) are enabled or not. If multiple flags are passed,...
KAPI b8 renderer_renderpass_end(renderpass *pass)
Ends the given renderpass.
KAPI void renderer_geometry_destroy(geometry *geometry)
Destroys the given geometry, releasing GPU resources.
KAPI void renderer_render_target_create(u8 attachment_count, render_target_attachment *attachments, renderpass *pass, u32 width, u32 height, render_target *out_target)
Creates a new render target using the provided data.
KAPI void renderer_renderbuffer_destroy(renderbuffer *buffer)
Destroys the given renderbuffer.
KAPI b8 renderer_shader_instance_resources_release(struct shader *s, u32 instance_id)
Releases internal instance-level resources for the given instance id.
KAPI b8 renderer_renderpass_create(const renderpass_config *config, renderpass *out_renderpass)
Creates a new renderpass.
renderbuffer_track_type
Definition: renderer_types.h:166
renderbuffer_type
Definition: renderer_types.h:149
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
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
A generic "interface" for the renderer plugin. The renderer backend is what is responsible for making...
Definition: renderer_types.h:225
Definition: renderer_frontend.h:23
char * application_name
Definition: renderer_frontend.h:24
renderer_plugin plugin
Definition: renderer_frontend.h:25
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