11 #define ASSET_MAGIC 0xDECAFBAD
14 #define KASSET_TYPE_MAX_LENGTH 64
16 #define KASSET_NAME_MAX_LENGTH 256
18 #define KPACKAGE_NAME_MAX_LENGTH 128
21 #define KASSET_FULLY_QUALIFIED_NAME_MAX_LENGTH = (KPACKAGE_NAME_MAX_LENGTH + KASSET_TYPE_MAX_LENGTH + KASSET_NAME_MAX_LENGTH + 2)
187 #define KASSET_TYPE_NAME_HEIGHTMAP_TERRAIN "HeightmapTerrain"
199 #define KASSET_TYPE_NAME_IMAGE "Image"
213 #define KASSET_TYPE_NAME_MATERIAL "Material"
279 #define KASSET_TYPE_NAME_TEXT "Text"
285 #define KASSET_TYPE_NAME_BINARY "Binary"
292 #define KASSET_TYPE_NAME_KSON "Kson"
300 #define KASSET_TYPE_NAME_SHADER "Shader"
358 #define KASSET_TYPE_NAME_SYSTEM_FONT "SystemFont"
373 #define KASSET_TYPE_NAME_BITMAP_FONT "BitmapFont"
413 #define KASSET_TYPE_NAME_AUDIO "Audio"
432 #define KASSET_TYPE_NAME_MODEL "Model"
434 #define KASSET_MODEL_CURRENT_VERSION 1
texture_channel
Definition: core_render_types.h:85
kmaterial_model
Definition: core_render_types.h:332
primitive_topology_type
Definition: core_render_types.h:30
u32 primitive_topology_type_bits
A combination of topology bit flags.
Definition: core_render_types.h:44
shader_attribute_type
Available attribute types.
Definition: core_render_types.h:101
kpixel_format
Represents the format of image (or texture) pixel data.
Definition: core_render_types.h:47
shader_stage
Shader stages available in the system.
Definition: core_render_types.h:93
kmaterial_type
Definition: core_render_types.h:323
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:27
signed char i8
Signed 8-bit integer.
Definition: defines.h:35
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
signed int i32
Signed 32-bit integer.
Definition: defines.h:41
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:24
signed short i16
Signed 16-bit integer.
Definition: defines.h:38
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
Contains a system for creating numeric identifiers.
struct kasset_system_font kasset_system_font
struct kasset_system_font_face kasset_system_font_face
struct kasset_model_node kasset_model_node
struct kasset_metadata kasset_metadata
Various metadata included with the asset.
struct kasset_image kasset_image
struct kasset_shader kasset_shader
Represents a shader asset, typically loaded from disk.
struct kasset_shader_pipeline kasset_shader_pipeline
struct kasset_kson kasset_kson
struct kasset_model_bone kasset_model_bone
struct kasset_shader_attribute kasset_shader_attribute
struct kasset_binary kasset_binary
struct kasset_shader_stage kasset_shader_stage
struct kasset_shader_attachment kasset_shader_attachment
void(* PFN_kasset_on_hot_reload)(const struct vfs_asset_data *asset_data, const struct kasset *asset)
A function pointer typedef to be used to provide the asset system with a callback function when an as...
Definition: kasset_types.h:109
struct kasset_model kasset_model
asset_request_result
Definition: kasset_types.h:66
@ ASSET_REQUEST_RESULT_SUCCESS
Definition: kasset_types.h:68
@ ASSET_REQUEST_RESULT_COUNT
Definition: kasset_types.h:90
@ ASSET_REQUEST_RESULT_GPU_UPLOAD_FAILED
Definition: kasset_types.h:78
@ ASSET_REQUEST_RESULT_AUTO_IMPORT_FAILED
Definition: kasset_types.h:88
@ ASSET_REQUEST_RESULT_INVALID_NAME
Definition: kasset_types.h:74
@ ASSET_REQUEST_RESULT_INTERNAL_FAILURE
Definition: kasset_types.h:80
@ ASSET_REQUEST_RESULT_PARSE_FAILED
Definition: kasset_types.h:76
@ ASSET_REQUEST_RESULT_INVALID_ASSET_TYPE
Definition: kasset_types.h:72
@ ASSET_REQUEST_RESULT_NO_IMPORTER_FOR_SOURCE_ASSET
Definition: kasset_types.h:84
@ ASSET_REQUEST_RESULT_VFS_REQUEST_FAILED
Definition: kasset_types.h:86
@ ASSET_REQUEST_RESULT_INVALID_PACKAGE
Definition: kasset_types.h:70
@ ASSET_REQUEST_RESULT_NO_HANDLER
Definition: kasset_types.h:82
struct kasset_model_animation kasset_model_animation
struct kasset_model_key_quat kasset_model_key_quat
struct kasset_model_submesh_data kasset_model_submesh_data
struct kasset_importer kasset_importer
Represents the interface point for an importer.
struct kasset_heightmap_terrain kasset_heightmap_terrain
b8(* PFN_kasset_importer_import)(const struct kasset_importer *self, u64 data_size, const void *data, void *params, struct kasset *out_asset)
Imports an asset according to the provided params and the importer's internal logic....
Definition: kasset_types.h:123
struct binary_asset_header binary_asset_header
The primary header for binary assets, to be used for serialization. This should be the first member o...
void(* PFN_kasset_on_result)(asset_request_result result, const struct kasset *asset, void *listener_inst)
A function pointer typedef to be used to provide the asset asset_system with a calback function when ...
Definition: kasset_types.h:101
struct kasset_bitmap_font_kerning kasset_bitmap_font_kerning
struct kasset kasset
a structure meant to be included as the first member in the struct of all asset types for quick casti...
struct kasset_material kasset_material
struct kasset_bitmap_font_page kasset_bitmap_font_page
struct kasset_text kasset_text
kasset_model_mesh_type
Definition: kasset_types.h:481
@ KASSET_MODEL_MESH_TYPE_STATIC
Definition: kasset_types.h:482
@ KASSET_MODEL_MESH_TYPE_SKINNED
Definition: kasset_types.h:483
@ KASSET_MODEL_MESH_TYPE_MAX
Definition: kasset_types.h:485
struct kasset_model_channel kasset_model_channel
struct kasset_bitmap_font kasset_bitmap_font
kasset_type
Definition: kasset_types.h:23
@ KASSET_TYPE_MAX
Definition: kasset_types.h:44
@ KASSET_TYPE_SYSTEM_FONT
Definition: kasset_types.h:34
@ KASSET_TYPE_IMAGE
Definition: kasset_types.h:26
@ KASSET_TYPE_BINARY
Definition: kasset_types.h:36
@ KASSET_TYPE_SHADER
Definition: kasset_types.h:42
@ KASSET_TYPE_RESERVED_2
Definition: kasset_types.h:40
@ KASSET_TYPE_RESERVED_1
Definition: kasset_types.h:32
@ KASSET_TYPE_RESERVED_0
Definition: kasset_types.h:29
@ KASSET_TYPE_MATERIAL
Definition: kasset_types.h:27
@ KASSET_TYPE_AUDIO
Definition: kasset_types.h:41
@ KASSET_TYPE_KSON
Definition: kasset_types.h:37
@ KASSET_TYPE_BITMAP_FONT
Definition: kasset_types.h:33
@ KASSET_TYPE_VOXEL_TERRAIN
Definition: kasset_types.h:38
@ KASSET_TYPE_TEXT
Definition: kasset_types.h:35
@ KASSET_TYPE_MODEL
Definition: kasset_types.h:43
@ KASSET_TYPE_HEIGHTMAP_TERRAIN
Definition: kasset_types.h:30
@ KASSET_TYPE_UNKNOWN
Definition: kasset_types.h:24
struct kasset_model_key_vec3 kasset_model_key_vec3
struct kasset_audio kasset_audio
struct kasset_bitmap_font_glyph kasset_bitmap_font_glyph
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
This file contains the parser implementation for the KSON (Kohi Storage Object Notation) file format.
u64 kstring_id
A kstring_id is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kstring_id.h:32
Contains various math types required for the engine.
Represents the extents of a 3d object.
Definition: math_types.h:401
Definition: identifier.h:20
Definition: kasset_types.h:418
i32 channels
Definition: kasset_types.h:421
kname name
Definition: kasset_types.h:419
u32 total_sample_count
Definition: kasset_types.h:425
i16 * pcm_data
Definition: kasset_types.h:429
u64 pcm_data_size
Definition: kasset_types.h:427
u32 sample_rate
Definition: kasset_types.h:423
Definition: kasset_types.h:287
const void * content
Definition: kasset_types.h:289
u64 size
Definition: kasset_types.h:288
Definition: kasset_types.h:375
u16 height
Definition: kasset_types.h:380
u16 width
Definition: kasset_types.h:379
i16 x_advance
Definition: kasset_types.h:383
i16 y_offset
Definition: kasset_types.h:382
u16 y
Definition: kasset_types.h:378
u8 page_id
Definition: kasset_types.h:384
u16 x
Definition: kasset_types.h:377
i16 x_offset
Definition: kasset_types.h:381
i32 codepoint
Definition: kasset_types.h:376
Definition: kasset_types.h:387
i32 codepoint_1
Definition: kasset_types.h:389
i32 codepoint_0
Definition: kasset_types.h:388
i16 amount
Definition: kasset_types.h:390
Definition: kasset_types.h:393
i8 id
Definition: kasset_types.h:394
kname image_asset_name
Definition: kasset_types.h:395
Definition: kasset_types.h:398
u32 page_count
Definition: kasset_types.h:409
u32 glyph_count
Definition: kasset_types.h:405
i32 atlas_size_x
Definition: kasset_types.h:403
kasset_bitmap_font_page * pages
Definition: kasset_types.h:410
i32 line_height
Definition: kasset_types.h:401
i32 baseline
Definition: kasset_types.h:402
i32 atlas_size_y
Definition: kasset_types.h:404
u32 size
Definition: kasset_types.h:400
u32 kerning_count
Definition: kasset_types.h:407
kasset_bitmap_font_glyph * glyphs
Definition: kasset_types.h:406
kasset_bitmap_font_kerning * kernings
Definition: kasset_types.h:408
kname face
Definition: kasset_types.h:399
Definition: kasset_types.h:189
u32 version
Definition: kasset_types.h:196
kname * material_names
Definition: kasset_types.h:195
u8 material_count
Definition: kasset_types.h:194
vec3 tile_scale
Definition: kasset_types.h:193
kname heightmap_asset_name
Definition: kasset_types.h:190
u16 chunk_size
Definition: kasset_types.h:192
kname heightmap_asset_package_name
Definition: kasset_types.h:191
Definition: kasset_types.h:201
kname name
Definition: kasset_types.h:202
u8 channel_count
Definition: kasset_types.h:206
u8 * pixels
Definition: kasset_types.h:210
u8 mip_levels
Definition: kasset_types.h:207
kpixel_format format
Definition: kasset_types.h:208
u32 width
Definition: kasset_types.h:203
u64 pixel_array_size
Definition: kasset_types.h:209
u32 height
Definition: kasset_types.h:204
u32 depth
Definition: kasset_types.h:205
Represents the interface point for an importer.
Definition: kasset_types.h:128
const char * source_type
The file type supported by the importer.
Definition: kasset_types.h:130
Definition: kasset_types.h:294
kson_tree tree
Definition: kasset_types.h:297
const char * source_text
Definition: kasset_types.h:296
kasset base
Definition: kasset_types.h:295
Definition: kasset_types.h:215
f32 metallic
Definition: kasset_types.h:241
b8 normal_enabled
Definition: kasset_types.h:237
texture_channel metallic_map_source_channel
Definition: kasset_types.h:243
f32 wave_speed
Definition: kasset_types.h:275
kname name
Definition: kasset_types.h:216
kmaterial_model model
Definition: kasset_types.h:219
vec3 mra
Definition: kasset_types.h:255
u32 custom_sampler_count
Definition: kasset_types.h:267
vec4 base_colour
Definition: kasset_types.h:231
kname custom_shader_name
Definition: kasset_types.h:229
b8 double_sided
Definition: kasset_types.h:223
kmaterial_texture_input_config dudv_map
Definition: kasset_types.h:265
kmaterial_texture_input_config roughness_map
Definition: kasset_types.h:246
vec3 normal
Definition: kasset_types.h:238
b8 use_mra
Definition: kasset_types.h:258
kmaterial_texture_input_config metallic_map
Definition: kasset_types.h:242
b8 emissive_enabled
Definition: kasset_types.h:260
kmaterial_texture_input_config base_colour_map
Definition: kasset_types.h:232
b8 has_transparency
Definition: kasset_types.h:221
b8 use_vertex_colour_as_base_colour
Definition: kasset_types.h:226
b8 recieves_shadow
Definition: kasset_types.h:224
kmaterial_type type
Definition: kasset_types.h:217
kmaterial_texture_input_config normal_map
Definition: kasset_types.h:239
kmaterial_sampler_config * custom_samplers
Definition: kasset_types.h:268
texture_channel ambient_occlusion_map_source_channel
Definition: kasset_types.h:252
f32 roughness
Definition: kasset_types.h:245
kmaterial_texture_input_config ambient_occlusion_map
Definition: kasset_types.h:251
kmaterial_texture_input_config mra_map
Definition: kasset_types.h:256
f32 tiling
Definition: kasset_types.h:271
b8 casts_shadow
Definition: kasset_types.h:225
vec4 emissive
Definition: kasset_types.h:261
texture_channel roughness_map_source_channel
Definition: kasset_types.h:247
kmaterial_texture_input_config emissive_map
Definition: kasset_types.h:262
f32 ambient_occlusion
Definition: kasset_types.h:250
b8 masked
Definition: kasset_types.h:222
b8 ambient_occlusion_enabled
Definition: kasset_types.h:249
vec4 specular_colour
Definition: kasset_types.h:234
f32 wave_strength
Definition: kasset_types.h:273
kmaterial_texture_input_config specular_colour_map
Definition: kasset_types.h:235
Definition: kasset_types.h:456
kasset_model_channel * channels
Definition: kasset_types.h:461
kname name
Definition: kasset_types.h:457
f32 ticks_per_second
Definition: kasset_types.h:459
f32 duration
Definition: kasset_types.h:458
u16 channel_count
Definition: kasset_types.h:460
Definition: kasset_types.h:465
kname name
Definition: kasset_types.h:466
mat4 offset
Definition: kasset_types.h:468
u32 id
Definition: kasset_types.h:470
Definition: kasset_types.h:446
kname name
Definition: kasset_types.h:447
kasset_model_key_vec3 * scales
Definition: kasset_types.h:451
u32 rot_count
Definition: kasset_types.h:452
u32 scale_count
Definition: kasset_types.h:450
u32 pos_count
Definition: kasset_types.h:448
kasset_model_key_quat * rotations
Definition: kasset_types.h:453
kasset_model_key_vec3 * positions
Definition: kasset_types.h:449
Definition: kasset_types.h:441
quat value
Definition: kasset_types.h:442
f32 time
Definition: kasset_types.h:443
Definition: kasset_types.h:436
f32 time
Definition: kasset_types.h:438
vec3 value
Definition: kasset_types.h:437
Definition: kasset_types.h:473
kname name
Definition: kasset_types.h:474
u16 child_count
Definition: kasset_types.h:477
u16 * children
Definition: kasset_types.h:478
u16 parent_index
Definition: kasset_types.h:476
mat4 local_transform
Definition: kasset_types.h:475
Definition: kasset_types.h:488
void * vertices
Definition: kasset_types.h:493
kname material_name
Definition: kasset_types.h:490
vec3 center
Definition: kasset_types.h:496
kname name
Definition: kasset_types.h:489
u32 * indices
Definition: kasset_types.h:495
u32 index_count
Definition: kasset_types.h:494
u32 vertex_count
Definition: kasset_types.h:491
extents_3d extents
Definition: kasset_types.h:497
kasset_model_mesh_type type
Definition: kasset_types.h:492
Definition: kasset_types.h:505
vec3 center
Definition: kasset_types.h:517
u16 animation_count
Definition: kasset_types.h:512
kasset_model_node * nodes
Definition: kasset_types.h:511
mat4 global_inverse_transform
Definition: kasset_types.h:515
u16 node_count
Definition: kasset_types.h:510
kasset_model_bone * bones
Definition: kasset_types.h:509
kasset_model_submesh_data * submeshes
Definition: kasset_types.h:507
u16 bone_count
Definition: kasset_types.h:508
kasset_model_animation * animations
Definition: kasset_types.h:513
u16 submesh_count
Definition: kasset_types.h:506
extents_3d extents
Definition: kasset_types.h:518
Definition: kasset_types.h:324
kpixel_format format
Definition: kasset_types.h:326
const char * name
Definition: kasset_types.h:325
Definition: kasset_types.h:308
const char * name
Definition: kasset_types.h:309
shader_attribute_type type
Definition: kasset_types.h:310
Definition: kasset_types.h:314
kasset_shader_stage * stages
Definition: kasset_types.h:318
u8 attribute_count
Definition: kasset_types.h:320
const char * name
Definition: kasset_types.h:315
kasset_shader_attribute * attributes
Definition: kasset_types.h:321
u8 stage_count
Definition: kasset_types.h:317
Definition: kasset_types.h:302
shader_stage type
Definition: kasset_types.h:303
const char * package_name
Definition: kasset_types.h:305
const char * source_asset_name
Definition: kasset_types.h:304
Represents a shader asset, typically loaded from disk.
Definition: kasset_types.h:332
shader_binding_set_config * binding_sets
Definition: kasset_types.h:355
b8 supports_wireframe
Definition: kasset_types.h:341
b8 stencil_write
Definition: kasset_types.h:338
u8 colour_attachment_count
Definition: kasset_types.h:345
kasset_shader_attachment stencil_attachment
Definition: kasset_types.h:349
u32 version
Definition: kasset_types.h:334
kname name
Definition: kasset_types.h:333
b8 colour_write
Definition: kasset_types.h:340
b8 depth_write
Definition: kasset_types.h:336
b8 stencil_test
Definition: kasset_types.h:337
kasset_shader_attachment depth_attachment
Definition: kasset_types.h:348
u8 binding_set_count
Definition: kasset_types.h:354
u8 pipeline_count
Definition: kasset_types.h:351
primitive_topology_type_bits topology_types
Definition: kasset_types.h:342
b8 depth_test
Definition: kasset_types.h:335
kasset_shader_pipeline * pipelines
Definition: kasset_types.h:352
primitive_topology_type default_topology
Definition: kasset_types.h:343
kasset_shader_attachment * colour_attachments
Definition: kasset_types.h:346
b8 colour_read
Definition: kasset_types.h:339
Definition: kasset_types.h:360
kname name
Definition: kasset_types.h:361
Definition: kasset_types.h:364
kname ttf_asset_name
Definition: kasset_types.h:365
u32 face_count
Definition: kasset_types.h:367
u32 font_binary_size
Definition: kasset_types.h:369
kasset_system_font_face * faces
Definition: kasset_types.h:368
kname ttf_asset_package_name
Definition: kasset_types.h:366
void * font_binary
Definition: kasset_types.h:370
Definition: kasset_types.h:281
const char * content
Definition: kasset_types.h:282
a structure meant to be included as the first member in the struct of all asset types for quick casti...
Definition: kasset_types.h:168
kname name
Definition: kasset_types.h:176
kasset_metadata meta
Metadata for the asset.
Definition: kasset_types.h:182
u32 file_watch_id
The file watch id, if the asset is being watched. Otherwise INVALID_ID.
Definition: kasset_types.h:184
identifier id
A system-wide unique identifier for the asset.
Definition: kasset_types.h:170
u32 generation
Increments every time the asset is loaded/reloaded. Otherwise INVALID_ID.
Definition: kasset_types.h:172
kasset_type type
The asset type.
Definition: kasset_types.h:180
kname package_name
Definition: kasset_types.h:178
u64 size
Definition: kasset_types.h:174
Definition: core_render_types.h:378
Definition: core_render_types.h:388
Definition: kson_parser.h:123
Definition: core_render_types.h:264
Represents data and properties from an asset loaded from the VFS.
Definition: vfs.h:53
a 4x4 matrix, typically used to represent object transformations.
Definition: math_types.h:383
A 3-element vector.
Definition: math_types.h:117
A 4-element vector.
Definition: math_types.h:229