#pragma once
#define MDL_VERSION_MIN 101
-#define MDL_VERSION_NR 105
+#define MDL_VERSION_NR 106
enum mdl_shader{
k_shader_standard = 0,
v3_mul( a->s, b->s, d->s );
}
-struct mdl_material
+struct mdl_file
+{
+ u32 pstr_path,
+ pack_offset,
+ pack_size;
+};
+
+#if (MDL_VERSION_MIN <= 105)
+struct mdl_material_v105
{
u32 pstr_name,
shader,
tex_none0,
tex_none1;
};
+#endif
+
+struct mdl_material
+{
+ u32 pstr_name,
+ shader,
+ flags,
+ surface_prop;
+
+ union
+ {
+ struct
+ {
+ u32 offset, size;
+ /* -> vg_msg containing KV properties */
+ }
+ kvs;
+ void *compiled; /* -> shader specific structure for render */
+ }
+ props;
+};
struct mdl_bone
{
armature_id;
};
-struct mdl_file
-{
- u32 pstr_path,
- pack_offset,
- pack_size;
-};
-
struct mdl_texture
{
mdl_file file;
int mdl_load_animation_block( mdl_context *mdl, void *lin_alloc );
int mdl_load_metadata_block( mdl_context *mdl, void *lin_alloc );
int mdl_load_mesh_block( mdl_context *mdl, void *lin_alloc );
+int mdl_load_materials( mdl_context *mdl, void *lin_alloc );
/* load mesh */
void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh, u32 *fixup_table );