10 #define KMATERIAL_UBO_MAX_VIEWS 16
11 #define KMATERIAL_UBO_MAX_PROJECTIONS 4
12 #define KMATERIAL_UBO_MAX_SHADOW_CASCADES 4
14 #define KRENDERBUFFER_NAME_MATERIALS_GLOBAL "Kohi.StorageBuffer.MaterialsGlobal"
u16 ktexture
Represents a texture to be used for rendering purposes, stored on the GPU (VRAM)
Definition: core_render_types.h:299
u16 kmaterial
Definition: core_render_types.h:399
u16 kshader
Definition: core_render_types.h:176
#define KAPI
Import/export qualifier.
Definition: defines.h:209
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:27
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
KAPI b8 kmaterial_renderer_initialize(kmaterial_renderer *out_state, u32 max_material_count, u32 max_material_instance_count)
struct base_material_shader_data base_material_shader_data
kmaterial_data_index2
Definition: kmaterial_renderer.h:95
@ KMATERIAL_DATA_INDEX2_ANIMATION
Definition: kmaterial_renderer.h:96
@ KMATERIAL_DATA_INDEX2_BASE_MATERIAL
Definition: kmaterial_renderer.h:97
struct klight_shader_data klight_shader_data
KAPI void kmaterial_renderer_set_irradiance_cubemap_textures(kmaterial_renderer *state, u8 count, ktexture *irradiance_cubemap_textures)
KAPI void kmaterial_renderer_register_base(kmaterial_renderer *state, kmaterial_data *material_data)
struct kmaterial_renderer kmaterial_renderer
State for the material renderer.
KAPI void kmaterial_renderer_unregister_base(kmaterial_renderer *state, kmaterial_data *material_data)
#define KMATERIAL_UBO_MAX_SHADOW_CASCADES
Definition: kmaterial_renderer.h:12
KAPI void kmaterial_renderer_bind_base(kmaterial_renderer *state, kmaterial base)
KAPI void kmaterial_renderer_update(kmaterial_renderer *state)
KAPI void kmaterial_renderer_apply_immediates(kmaterial_renderer *state, kmaterial_instance instance, const kmaterial_render_immediate_data *immediates)
kmaterial_data_index
Definition: kmaterial_renderer.h:90
@ KMATERIAL_DATA_INDEX_VIEW
Definition: kmaterial_renderer.h:91
@ KMATERIAL_DATA_INDEX_PROJECTION
Definition: kmaterial_renderer.h:92
#define KMATERIAL_UBO_MAX_VIEWS
Definition: kmaterial_renderer.h:10
KAPI void kmaterial_renderer_set_fog_near_far(kmaterial_renderer *state, f32 near, f32 far)
KAPI void kmaterial_renderer_shutdown(kmaterial_renderer *state)
KAPI void kmaterial_renderer_set_fog_colour(kmaterial_renderer *state, colour3 colour)
KAPI void kmaterial_renderer_set_animated(kmaterial_renderer *state, b8 is_animated)
struct kmaterial_render_immediate_data kmaterial_render_immediate_data
struct kmaterial_settings_ubo kmaterial_settings_ubo
KAPI void kmaterial_renderer_apply_globals(kmaterial_renderer *state)
#define KMATERIAL_UBO_MAX_PROJECTIONS
Definition: kmaterial_renderer.h:11
The material system is responsible for managing materials in the engine, including reference counting...
#define KMATERIAL_MAX_IRRADIANCE_CUBEMAP_COUNT
Definition: kmaterial_system.h:24
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
Contains various math types required for the engine.
u16 krenderbuffer
Definition: renderer_types.h:175
Definition: kmaterial_renderer.h:27
f32 metallic
Definition: kmaterial_renderer.h:45
vec3 uv_scale
Definition: kmaterial_renderer.h:54
vec3 uv_offset
Definition: kmaterial_renderer.h:51
u32 material_type
Definition: kmaterial_renderer.h:39
vec3 mra
Definition: kmaterial_renderer.h:47
vec4 base_colour
Definition: kmaterial_renderer.h:41
f32 ao
Definition: kmaterial_renderer.h:52
u32 ao_texture_channel
Definition: kmaterial_renderer.h:30
vec3 normal
Definition: kmaterial_renderer.h:44
u32 tex_flags
Definition: kmaterial_renderer.h:37
u32 flags
Definition: kmaterial_renderer.h:35
u32 lighting_model
The material lighting model.
Definition: kmaterial_renderer.h:32
f32 roughness
Definition: kmaterial_renderer.h:48
f32 emissive_texture_intensity
Definition: kmaterial_renderer.h:55
u32 roughness_texture_channel
Definition: kmaterial_renderer.h:29
vec4 emissive
Definition: kmaterial_renderer.h:42
f32 refraction_scale
Definition: kmaterial_renderer.h:38
u32 metallic_texture_channel
Definition: kmaterial_renderer.h:28
Definition: kmaterial_renderer.h:20
vec4 position
Definition: kmaterial_renderer.h:24
vec4 colour
Definition: kmaterial_renderer.h:22
Definition: kmaterial_system.h:124
A material instance, which contains handles to both the base material as well as the instance itself....
Definition: core_render_types.h:409
State for the material renderer.
Definition: kmaterial_renderer.h:131
ktexture default_base_colour_texture
Definition: kmaterial_renderer.h:141
kshader material_blended_shader
Definition: kmaterial_renderer.h:153
krenderbuffer material_global_ssbo
Definition: kmaterial_renderer.h:133
struct texture_system_state * texture_system
Definition: kmaterial_renderer.h:157
u32 max_material_count
Definition: kmaterial_renderer.h:160
ktexture default_spec_texture
Definition: kmaterial_renderer.h:142
ktexture default_mra_texture
Definition: kmaterial_renderer.h:146
struct renderer_system_state * renderer
Definition: kmaterial_renderer.h:156
u32 material_standard_skinned_shader_bs_0_instance_id
Definition: kmaterial_renderer.h:151
kshader material_standard_skinned_shader
Definition: kmaterial_renderer.h:150
ktexture default_ibl_cubemap
Definition: kmaterial_renderer.h:145
struct kmaterial_system_state * material_state
Definition: kmaterial_renderer.h:158
ktexture ibl_cubemap_textures[KMATERIAL_MAX_IRRADIANCE_CUBEMAP_COUNT]
Definition: kmaterial_renderer.h:137
kname runtime_package_name
Definition: kmaterial_renderer.h:166
kmaterial_settings_ubo settings
Definition: kmaterial_renderer.h:163
u8 ibl_cubemap_texture_count
Definition: kmaterial_renderer.h:136
b8 current_uses_animated
Definition: kmaterial_renderer.h:168
ktexture shadow_map_texture
Definition: kmaterial_renderer.h:135
ktexture default_water_dudv_texture
Definition: kmaterial_renderer.h:148
ktexture default_normal_texture
Definition: kmaterial_renderer.h:143
ktexture default_water_normal_texture
Definition: kmaterial_renderer.h:147
ktexture default_texture
Definition: kmaterial_renderer.h:140
Definition: kmaterial_renderer.h:64
vec4 view_positions[KMATERIAL_UBO_MAX_VIEWS]
Definition: kmaterial_renderer.h:68
mat4 directional_light_spaces[KMATERIAL_UBO_MAX_SHADOW_CASCADES]
Definition: kmaterial_renderer.h:67
f32 shadow_distance
Definition: kmaterial_renderer.h:79
f32 delta_time
Definition: kmaterial_renderer.h:72
colour3 fog_colour
Definition: kmaterial_renderer.h:84
u32 use_pcf
Definition: kmaterial_renderer.h:75
vec4 cascade_splits
Definition: kmaterial_renderer.h:70
f32 game_time
Definition: kmaterial_renderer.h:73
f32 fog_end
Definition: kmaterial_renderer.h:87
f32 fog_start
Definition: kmaterial_renderer.h:85
u32 render_mode
Definition: kmaterial_renderer.h:74
f32 shadow_fade_distance
Definition: kmaterial_renderer.h:80
f32 shadow_bias
Definition: kmaterial_renderer.h:78
f32 shadow_split_mult
Definition: kmaterial_renderer.h:81
mat4 projections[KMATERIAL_UBO_MAX_PROJECTIONS]
Definition: kmaterial_renderer.h:66
mat4 views[KMATERIAL_UBO_MAX_VIEWS]
Definition: kmaterial_renderer.h:65
vec3 padding
Definition: kmaterial_renderer.h:86
a 4x4 matrix, typically used to represent object transformations.
Definition: math_types.h:383
A 2-element vector of unsigned ints.
Definition: math_types.h:61
A 2-element vector.
Definition: math_types.h:31
A 3-element vector.
Definition: math_types.h:117
A 4-element vector.
Definition: math_types.h:229