13 #define ASSET_MAGIC 0xcafebabe
14 #define ASSET_MAGIC_U64 0xcafebabebadc0ffee
17 #define KASSET_TYPE_MAX_LENGTH 64
19 #define KASSET_NAME_MAX_LENGTH 256
21 #define KPACKAGE_NAME_MAX_LENGTH 128
24 #define KASSET_FULLY_QUALIFIED_NAME_MAX_LENGTH = (KPACKAGE_NAME_MAX_LENGTH + KASSET_TYPE_MAX_LENGTH + KASSET_NAME_MAX_LENGTH + 2)
186 #define KASSET_TYPE_NAME_HEIGHTMAP_TERRAIN "HeightmapTerrain"
198 #define KASSET_TYPE_NAME_IMAGE "Image"
212 #define KASSET_TYPE_NAME_STATIC_MESH "StaticMesh"
233 #define KASSET_TYPE_NAME_MATERIAL "Material"
298 #define KASSET_TYPE_NAME_TEXT "Text"
304 #define KASSET_TYPE_NAME_BINARY "Binary"
311 #define KASSET_TYPE_NAME_KSON "Kson"
319 #define KASSET_TYPE_NAME_SCENE "Scene"
329 #define KASSET_TYPE_NAME_SHADER "Shader"
388 #define KASSET_TYPE_NAME_SYSTEM_FONT "SystemFont"
403 #define KASSET_TYPE_NAME_BITMAP_FONT "BitmapFont"
441 array_kasset_bitmap_font_page
pages;
444 #define KASSET_TYPE_NAME_AUDIO "Audio"
This files contains an implementation of a static-sized (but dynamically allocated) array.
face_cull_mode
Determines face culling mode during rendering.
Definition: core_render_types.h:11
texture_channel
Definition: core_render_types.h:74
kmaterial_model
Definition: core_render_types.h:324
u32 primitive_topology_types
A combination of topology bit flags.
Definition: core_render_types.h:39
shader_attribute_type
Available attribute types.
Definition: core_render_types.h:102
shader_update_frequency
Defines shader update frequencies, typically used for uniforms.
Definition: core_render_types.h:92
kpixel_format
Represents the format of image (or texture) pixel data.
Definition: core_render_types.h:42
shader_uniform_type
Available uniform types.
Definition: core_render_types.h:117
shader_stage
Shader stages available in the system.
Definition: core_render_types.h:82
kmaterial_type
Definition: core_render_types.h:315
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:25
signed char i8
Signed 8-bit integer.
Definition: defines.h:33
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
signed int i32
Signed 32-bit integer.
Definition: defines.h:39
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:22
signed short i16
Signed 16-bit integer.
Definition: defines.h:36
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:19
Contains a system for creating numeric identifiers.
struct kasset_static_mesh kasset_static_mesh
Represents a static mesh asset.
struct kasset_system_font kasset_system_font
struct kasset_system_font_face kasset_system_font_face
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_kson kasset_kson
struct kasset_shader_attribute kasset_shader_attribute
struct kasset_binary kasset_binary
struct kasset_shader_stage kasset_shader_stage
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:108
asset_request_result
Definition: kasset_types.h:65
@ ASSET_REQUEST_RESULT_SUCCESS
Definition: kasset_types.h:67
@ ASSET_REQUEST_RESULT_COUNT
Definition: kasset_types.h:89
@ ASSET_REQUEST_RESULT_GPU_UPLOAD_FAILED
Definition: kasset_types.h:77
@ ASSET_REQUEST_RESULT_AUTO_IMPORT_FAILED
Definition: kasset_types.h:87
@ ASSET_REQUEST_RESULT_INVALID_NAME
Definition: kasset_types.h:73
@ ASSET_REQUEST_RESULT_INTERNAL_FAILURE
Definition: kasset_types.h:79
@ ASSET_REQUEST_RESULT_PARSE_FAILED
Definition: kasset_types.h:75
@ ASSET_REQUEST_RESULT_INVALID_ASSET_TYPE
Definition: kasset_types.h:71
@ ASSET_REQUEST_RESULT_NO_IMPORTER_FOR_SOURCE_ASSET
Definition: kasset_types.h:83
@ ASSET_REQUEST_RESULT_VFS_REQUEST_FAILED
Definition: kasset_types.h:85
@ ASSET_REQUEST_RESULT_INVALID_PACKAGE
Definition: kasset_types.h:69
@ ASSET_REQUEST_RESULT_NO_HANDLER
Definition: kasset_types.h:81
struct kasset_static_mesh_geometry kasset_static_mesh_geometry
ARRAY_TYPE(kasset_bitmap_font_glyph)
struct kasset_shader_uniform kasset_shader_uniform
Represents a shader uniform within a shader asset.
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:122
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:100
struct kasset_bitmap_font_kerning kasset_bitmap_font_kerning
struct kasset_scene kasset_scene
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
struct kasset_bitmap_font kasset_bitmap_font
kasset_type
Definition: kasset_types.h:26
@ KASSET_TYPE_SKELETAL_MESH
Definition: kasset_types.h:40
@ KASSET_TYPE_MAX
Definition: kasset_types.h:43
@ KASSET_TYPE_SYSTEM_FONT
Definition: kasset_types.h:35
@ KASSET_TYPE_IMAGE
Definition: kasset_types.h:29
@ KASSET_TYPE_STATIC_MESH
Definition: kasset_types.h:31
@ KASSET_TYPE_BINARY
Definition: kasset_types.h:37
@ KASSET_TYPE_SHADER
Definition: kasset_types.h:42
@ KASSET_TYPE_MATERIAL
Definition: kasset_types.h:30
@ KASSET_TYPE_AUDIO
Definition: kasset_types.h:41
@ KASSET_TYPE_KSON
Definition: kasset_types.h:38
@ KASSET_TYPE_BITMAP_FONT
Definition: kasset_types.h:34
@ KASSET_TYPE_VOXEL_TERRAIN
Definition: kasset_types.h:39
@ KASSET_TYPE_TEXT
Definition: kasset_types.h:36
@ KASSET_TYPE_SCENE
Definition: kasset_types.h:33
@ KASSET_TYPE_HEIGHTMAP_TERRAIN
Definition: kasset_types.h:32
@ KASSET_TYPE_UNKNOWN
Definition: kasset_types.h:27
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:213
Definition: identifier.h:20
Definition: kasset_types.h:449
i32 channels
Definition: kasset_types.h:452
kname name
Definition: kasset_types.h:450
u32 total_sample_count
Definition: kasset_types.h:456
i16 * pcm_data
Definition: kasset_types.h:460
u64 pcm_data_size
Definition: kasset_types.h:458
u32 sample_rate
Definition: kasset_types.h:454
Definition: kasset_types.h:306
const void * content
Definition: kasset_types.h:308
u64 size
Definition: kasset_types.h:307
Definition: kasset_types.h:405
u16 height
Definition: kasset_types.h:410
u16 width
Definition: kasset_types.h:409
i16 x_advance
Definition: kasset_types.h:413
i16 y_offset
Definition: kasset_types.h:412
u16 y
Definition: kasset_types.h:408
u8 page_id
Definition: kasset_types.h:414
u16 x
Definition: kasset_types.h:407
i16 x_offset
Definition: kasset_types.h:411
i32 codepoint
Definition: kasset_types.h:406
Definition: kasset_types.h:417
i32 codepoint_1
Definition: kasset_types.h:419
i32 codepoint_0
Definition: kasset_types.h:418
i16 amount
Definition: kasset_types.h:420
Definition: kasset_types.h:423
i8 id
Definition: kasset_types.h:424
kname image_asset_name
Definition: kasset_types.h:425
Definition: kasset_types.h:432
i32 atlas_size_x
Definition: kasset_types.h:437
array_kasset_bitmap_font_kerning kernings
Definition: kasset_types.h:440
i32 line_height
Definition: kasset_types.h:435
array_kasset_bitmap_font_glyph glyphs
Definition: kasset_types.h:439
i32 baseline
Definition: kasset_types.h:436
array_kasset_bitmap_font_page pages
Definition: kasset_types.h:441
i32 atlas_size_y
Definition: kasset_types.h:438
u32 size
Definition: kasset_types.h:434
kname face
Definition: kasset_types.h:433
Definition: kasset_types.h:188
u32 version
Definition: kasset_types.h:195
kname * material_names
Definition: kasset_types.h:194
u8 material_count
Definition: kasset_types.h:193
vec3 tile_scale
Definition: kasset_types.h:192
kname heightmap_asset_name
Definition: kasset_types.h:189
u16 chunk_size
Definition: kasset_types.h:191
kname heightmap_asset_package_name
Definition: kasset_types.h:190
Definition: kasset_types.h:200
kname name
Definition: kasset_types.h:201
u8 channel_count
Definition: kasset_types.h:205
u8 * pixels
Definition: kasset_types.h:209
u8 mip_levels
Definition: kasset_types.h:206
kpixel_format format
Definition: kasset_types.h:207
u32 width
Definition: kasset_types.h:202
u64 pixel_array_size
Definition: kasset_types.h:208
u32 height
Definition: kasset_types.h:203
u32 depth
Definition: kasset_types.h:204
Represents the interface point for an importer.
Definition: kasset_types.h:127
const char * source_type
The file type supported by the importer.
Definition: kasset_types.h:129
Definition: kasset_types.h:313
kson_tree tree
Definition: kasset_types.h:316
const char * source_text
Definition: kasset_types.h:315
kasset base
Definition: kasset_types.h:314
Definition: kasset_types.h:235
kmaterial_texture_input metallic_map
Definition: kasset_types.h:261
f32 metallic
Definition: kasset_types.h:260
b8 normal_enabled
Definition: kasset_types.h:256
texture_channel metallic_map_source_channel
Definition: kasset_types.h:262
f32 wave_speed
Definition: kasset_types.h:294
kname name
Definition: kasset_types.h:236
kmaterial_model model
Definition: kasset_types.h:239
kmaterial_texture_input roughness_map
Definition: kasset_types.h:265
vec3 mra
Definition: kasset_types.h:274
u32 custom_sampler_count
Definition: kasset_types.h:286
vec4 base_colour
Definition: kasset_types.h:250
kname custom_shader_name
Definition: kasset_types.h:248
b8 double_sided
Definition: kasset_types.h:242
kmaterial_texture_input dudv_map
Definition: kasset_types.h:284
kmaterial_texture_input base_colour_map
Definition: kasset_types.h:251
kmaterial_texture_input ambient_occlusion_map
Definition: kasset_types.h:270
vec3 normal
Definition: kasset_types.h:257
b8 use_mra
Definition: kasset_types.h:277
kmaterial_texture_input specular_colour_map
Definition: kasset_types.h:254
kmaterial_texture_input mra_map
Definition: kasset_types.h:275
b8 emissive_enabled
Definition: kasset_types.h:279
b8 has_transparency
Definition: kasset_types.h:241
b8 use_vertex_colour_as_base_colour
Definition: kasset_types.h:245
kmaterial_texture_input normal_map
Definition: kasset_types.h:258
b8 recieves_shadow
Definition: kasset_types.h:243
kmaterial_texture_input emissive_map
Definition: kasset_types.h:281
kmaterial_type type
Definition: kasset_types.h:237
kmaterial_sampler_config * custom_samplers
Definition: kasset_types.h:287
texture_channel ambient_occlusion_map_source_channel
Definition: kasset_types.h:271
f32 roughness
Definition: kasset_types.h:264
f32 tiling
Definition: kasset_types.h:290
b8 casts_shadow
Definition: kasset_types.h:244
vec4 emissive
Definition: kasset_types.h:280
texture_channel roughness_map_source_channel
Definition: kasset_types.h:266
f32 ambient_occlusion
Definition: kasset_types.h:269
b8 ambient_occlusion_enabled
Definition: kasset_types.h:268
vec4 specular_colour
Definition: kasset_types.h:253
f32 wave_strength
Definition: kasset_types.h:292
Definition: kasset_types.h:321
scene_node_config * nodes
Definition: kasset_types.h:326
u32 version
Definition: kasset_types.h:323
kname name
Definition: kasset_types.h:322
u32 node_count
Definition: kasset_types.h:325
const char * description
Definition: kasset_types.h:324
Definition: kasset_types.h:337
const char * name
Definition: kasset_types.h:338
shader_attribute_type type
Definition: kasset_types.h:339
Definition: kasset_types.h:331
shader_stage type
Definition: kasset_types.h:332
const char * package_name
Definition: kasset_types.h:334
const char * source_asset_name
Definition: kasset_types.h:333
Represents a shader asset, typically loaded from disk.
Definition: kasset_types.h:361
b8 supports_wireframe
Definition: kasset_types.h:370
b8 stencil_write
Definition: kasset_types.h:367
u32 version
Definition: kasset_types.h:363
kname name
Definition: kasset_types.h:362
b8 colour_write
Definition: kasset_types.h:369
u32 attribute_count
Definition: kasset_types.h:381
b8 depth_write
Definition: kasset_types.h:365
kasset_shader_uniform * uniforms
Definition: kasset_types.h:385
b8 stencil_test
Definition: kasset_types.h:366
u32 uniform_count
Definition: kasset_types.h:384
kasset_shader_stage * stages
Definition: kasset_types.h:379
u16 max_draw_ids
Definition: kasset_types.h:376
b8 depth_test
Definition: kasset_types.h:364
kasset_shader_attribute * attributes
Definition: kasset_types.h:382
primitive_topology_types topology_types
Definition: kasset_types.h:371
face_cull_mode cull_mode
Definition: kasset_types.h:373
u32 stage_count
Definition: kasset_types.h:378
b8 colour_read
Definition: kasset_types.h:368
u16 max_groups
Definition: kasset_types.h:375
Definition: kasset_types.h:214
vec3 center
Definition: kasset_types.h:222
kname name
Definition: kasset_types.h:215
u32 * indices
Definition: kasset_types.h:220
u32 index_count
Definition: kasset_types.h:219
u32 vertex_count
Definition: kasset_types.h:217
kname material_asset_name
Definition: kasset_types.h:216
vertex_3d * vertices
Definition: kasset_types.h:218
extents_3d extents
Definition: kasset_types.h:221
Represents a static mesh asset.
Definition: kasset_types.h:226
kasset_static_mesh_geometry * geometries
Definition: kasset_types.h:228
u16 geometry_count
Definition: kasset_types.h:227
vec3 center
Definition: kasset_types.h:230
extents_3d extents
Definition: kasset_types.h:229
Definition: kasset_types.h:390
kname name
Definition: kasset_types.h:391
Definition: kasset_types.h:394
kname ttf_asset_name
Definition: kasset_types.h:395
u32 face_count
Definition: kasset_types.h:397
u32 font_binary_size
Definition: kasset_types.h:399
kasset_system_font_face * faces
Definition: kasset_types.h:398
kname ttf_asset_package_name
Definition: kasset_types.h:396
void * font_binary
Definition: kasset_types.h:400
Definition: kasset_types.h:300
const char * content
Definition: kasset_types.h:301
a structure meant to be included as the first member in the struct of all asset types for quick casti...
Definition: kasset_types.h:167
kname name
Definition: kasset_types.h:175
kasset_metadata meta
Metadata for the asset.
Definition: kasset_types.h:181
u32 file_watch_id
The file watch id, if the asset is being watched. Otherwise INVALID_ID.
Definition: kasset_types.h:183
identifier id
A system-wide unique identifier for the asset.
Definition: kasset_types.h:169
u32 generation
Increments every time the asset is loaded/reloaded. Otherwise INVALID_ID.
Definition: kasset_types.h:171
kasset_type type
The asset type.
Definition: kasset_types.h:179
kname package_name
Definition: kasset_types.h:177
u64 size
Definition: kasset_types.h:173
Definition: core_render_types.h:380
Definition: core_render_types.h:368
Definition: kson_parser.h:121
Represents the configuration for a scene node.
Definition: core_resource_types.h:142
Represents a single vertex in 3D space.
Definition: math_types.h:223
Represents data and properties from an asset loaded from the VFS.
Definition: vfs.h:54
A 3-element vector.
Definition: math_types.h:49
A 4-element vector.
Definition: math_types.h:89