78 b8 vulkan_renderer_shader_create(
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
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
A global handle system for Kohi. Handles are used to obtain various resources using a unique handle i...
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
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
renderer_compare_op
Definition: renderer_types.h:99
renderer_cull_mode
The face cull mode.
Definition: renderer_types.h:241
renderer_stencil_op
Definition: renderer_types.h:80
u32 renderer_config_flags
Definition: renderer_types.h:218
renderer_winding
The winding order of vertices, used to determine what is the front-face of a triangle.
Definition: renderer_types.h:233
Engine-level current frame-specific data.
Definition: frame_data.h:11
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
Definition: khandle.h:25
Represents a window in the application.
Definition: platform.h:69
u16 height
The height of the window in pixels.
Definition: platform.h:78
u16 width
The width of the window in pixels.
Definition: platform.h:76
const char * name
The internal name of the window.
Definition: platform.h:71
Definition: renderer_types.h:180
The generic configuration for a renderer backend.
Definition: renderer_types.h:221
A generic "interface" for the renderer backend. The renderer backend is what is responsible for makin...
Definition: renderer_types.h:277
Represents a single shader vertex attribute.
Definition: core_render_types.h:207
A 3-element vector.
Definition: math_types.h:49
A 4-element vector.
Definition: math_types.h:89
b8 vulkan_buffer_copy_range(renderer_backend_interface *backend, renderbuffer *source, u64 source_offset, renderbuffer *dest, u64 dest_offset, u64 size, b8 include_in_frame_workload)
void vulkan_renderer_scissor_set(renderer_backend_interface *backend, vec4 rect)
void vulkan_renderer_begin_debug_label(renderer_backend_interface *backend, const char *label_text, vec3 colour)
void vulkan_renderer_end_debug_label(renderer_backend_interface *backend)
void vulkan_renderer_set_depth_test_enabled(struct renderer_backend_interface *backend, b8 enabled)
b8 vulkan_renderer_shader_use(renderer_backend_interface *backend, khandle shader)
b8 vulkan_buffer_unbind(renderer_backend_interface *backend, renderbuffer *buffer)
void vulkan_renderer_clear_depth_set(renderer_backend_interface *backend, f32 depth)
b8 vulkan_renderer_texture_resize(renderer_backend_interface *backend, khandle texture_handle, u32 new_width, u32 new_height)
void vulkan_renderer_clear_colour_set(renderer_backend_interface *backend, vec4 clear_colour)
b8 vulkan_renderer_frame_command_list_begin(renderer_backend_interface *backend, struct frame_data *p_frame_data)
void vulkan_renderer_scissor_reset(renderer_backend_interface *backend)
b8 vulkan_renderer_on_window_created(renderer_backend_interface *backend, struct kwindow *window)
void vulkan_renderer_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)
void vulkan_renderer_on_window_destroyed(renderer_backend_interface *backend, struct kwindow *window)
b8 vulkan_renderer_shader_apply_per_frame(renderer_backend_interface *backend, khandle shader, u16 renderer_frame_number)
void vulkan_renderer_sampler_release(renderer_backend_interface *backend, khandle *sampler)
b8 vulkan_buffer_resize(renderer_backend_interface *backend, renderbuffer *buffer, u64 new_size)
b8 vulkan_renderer_shader_reload(renderer_backend_interface *backend, khandle shader, u32 stage_count, shader_stage *stages, kname *names, const char **sources)
b8 vulkan_renderer_frame_submit(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
b8 vulkan_renderer_shader_flag_get(const renderer_backend_interface *backend, khandle shader, shader_flags flag)
void vulkan_renderer_viewport_reset(renderer_backend_interface *backend)
b8 vulkan_renderer_texture_read_data(renderer_backend_interface *backend, khandle texture_handle, u32 offset, u32 size, u8 **out_pixels)
void vulkan_renderer_shader_flag_set(renderer_backend_interface *backend, khandle shader, shader_flags flag, b8 enabled)
void vulkan_renderer_texture_prepare_for_sampling(renderer_backend_interface *backend, khandle texture_handle, ktexture_flag_bits flags)
b8 vulkan_renderer_texture_resources_acquire(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_texture_handle)
void vulkan_renderer_winding_set(struct renderer_backend_interface *backend, renderer_winding winding)
b8 vulkan_buffer_flush(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size)
void vulkan_renderer_backend_on_window_resized(renderer_backend_interface *backend, const struct kwindow *window)
b8 vulkan_renderer_texture_read_pixel(renderer_backend_interface *backend, khandle texture_handle, u32 x, u32 y, u8 **out_rgba)
void vulkan_renderer_set_depth_write_enabled(struct renderer_backend_interface *backend, b8 enabled)
void vulkan_renderer_wait_for_idle(renderer_backend_interface *backend)
b8 vulkan_renderer_shader_bind_per_draw(renderer_backend_interface *backend, khandle shader, u32 draw_id)
b8 vulkan_renderer_begin(renderer_backend_interface *backend, struct frame_data *p_frame_data)
b8 vulkan_buffer_draw(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u32 element_count, b8 bind_only)
void vulkan_renderer_texture_resources_release(renderer_backend_interface *backend, khandle *texture_handle)
b8 vulkan_renderer_shader_apply_per_group(renderer_backend_interface *backend, khandle shader, u16 renderer_frame_number)
b8 vulkan_renderer_shader_per_draw_resources_release(renderer_backend_interface *backend, khandle shader, u32 local_id)
b8 vulkan_renderer_shader_supports_wireframe(const renderer_backend_interface *backend, const khandle s)
void vulkan_renderer_clear_colour_texture(renderer_backend_interface *backend, khandle texture_handle)
b8 vulkan_buffer_bind(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset)
void vulkan_renderer_backend_shutdown(renderer_backend_interface *backend)
b8 vulkan_renderer_flag_enabled_get(renderer_backend_interface *backend, renderer_config_flags flag)
b8 vulkan_renderer_shader_uniform_set(renderer_backend_interface *backend, khandle frontend_shader, struct shader_uniform *uniform, u32 array_index, const void *value)
b8 vulkan_renderer_backend_initialize(renderer_backend_interface *backend, const renderer_backend_config *config)
b8 vulkan_renderer_shader_apply_per_draw(renderer_backend_interface *backend, khandle shader, u16 renderer_frame_number)
b8 vulkan_renderer_texture_write_data(renderer_backend_interface *backend, khandle texture_handle, u32 offset, u32 size, const u8 *pixels, b8 include_in_frame_workload)
f32 vulkan_renderer_max_anisotropy_get(renderer_backend_interface *backend)
void vulkan_renderer_clear_stencil_set(renderer_backend_interface *backend, u32 stencil)
b8 vulkan_renderer_end(renderer_backend_interface *backend, struct frame_data *p_frame_data)
b8 vulkan_buffer_create_internal(renderer_backend_interface *backend, renderbuffer *buffer)
void vulkan_renderer_set_stencil_test_enabled(struct renderer_backend_interface *backend, b8 enabled)
b8 vulkan_renderer_frame_present(renderer_backend_interface *backend, struct kwindow *window, struct frame_data *p_frame_data)
b8 vulkan_renderer_frame_command_list_end(renderer_backend_interface *backend, struct frame_data *p_frame_data)
void vulkan_renderer_shader_destroy(renderer_backend_interface *backend, khandle shader)
void vulkan_renderer_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)
void vulkan_renderer_end_rendering(struct renderer_backend_interface *backend, struct frame_data *p_frame_data)
void * vulkan_buffer_map_memory(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size)
void vulkan_buffer_unmap_memory(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size)
void vulkan_renderer_clear_depth_stencil(renderer_backend_interface *backend, khandle texture_handle)
void vulkan_renderer_viewport_set(renderer_backend_interface *backend, vec4 rect)
kname vulkan_renderer_sampler_name_get(renderer_backend_interface *backend, khandle sampler)
b8 vulkan_renderer_shader_per_draw_resources_acquire(renderer_backend_interface *backend, khandle shader, u32 *out_draw_id)
void vulkan_renderer_set_stencil_reference(struct renderer_backend_interface *backend, u32 reference)
b8 vulkan_renderer_shader_bind_per_frame(renderer_backend_interface *backend, khandle shader)
b8 vulkan_renderer_is_multithreaded(renderer_backend_interface *backend)
void vulkan_renderer_colour_texture_prepare_for_present(renderer_backend_interface *backend, khandle texture_handle)
void vulkan_renderer_set_stencil_compare_mask(struct renderer_backend_interface *backend, u32 compare_mask)
void vulkan_buffer_destroy_internal(renderer_backend_interface *backend, renderbuffer *buffer)
b8 vulkan_renderer_shader_per_group_resources_release(renderer_backend_interface *backend, khandle shader, u32 group_id)
b8 vulkan_renderer_shader_create(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)
void vulkan_renderer_set_stencil_write_mask(struct renderer_backend_interface *backend, u32 write_mask)
b8 vulkan_buffer_load_range(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size, const void *data, b8 include_in_frame_workload)
b8 vulkan_renderer_shader_bind_per_group(renderer_backend_interface *backend, khandle shader, u32 group_id)
void vulkan_renderer_cull_mode_set(struct renderer_backend_interface *backend, renderer_cull_mode cull_mode)
void vulkan_renderer_flag_enabled_set(renderer_backend_interface *backend, renderer_config_flags flag, b8 enabled)
khandle vulkan_renderer_sampler_acquire(renderer_backend_interface *backend, kname name, texture_filter filter, texture_repeat repeat, f32 anisotropy)
b8 vulkan_buffer_read(renderer_backend_interface *backend, renderbuffer *buffer, u64 offset, u64 size, void **out_memory)
b8 vulkan_renderer_frame_prepare(renderer_backend_interface *backend, struct frame_data *p_frame_data)
b8 vulkan_renderer_frame_prepare_window_surface(renderer_backend_interface *backend, struct kwindow *window, struct frame_data *p_frame_data)
b8 vulkan_renderer_sampler_refresh(renderer_backend_interface *backend, khandle *sampler, texture_filter filter, texture_repeat repeat, f32 anisotropy, u32 mip_levels)
b8 vulkan_renderer_shader_per_group_resources_acquire(renderer_backend_interface *backend, khandle shader, u32 *out_group_id)