39 lines
797 B
C
39 lines
797 B
C
#pragma once
|
|
|
|
#include "libs/sokol_gfx.h"
|
|
#include "libs/handmademath.h"
|
|
#include "libs/cgltf.h"
|
|
#include "colla/colla.h"
|
|
|
|
|
|
#define MAX_SCENE_OBJECTS 64
|
|
|
|
typedef struct vertex_t vertex_t;
|
|
struct vertex_t {
|
|
vec3 pos;
|
|
vec3 norm;
|
|
vec2 tex;
|
|
vec2 lightmap;
|
|
};
|
|
|
|
typedef struct obj_t obj_t;
|
|
struct obj_t {
|
|
char name[16];
|
|
sg_bindings bindings;
|
|
u16 draw_count;
|
|
};
|
|
|
|
typedef struct scene_t scene_t;
|
|
struct scene_t {
|
|
obj_t objects[MAX_SCENE_OBJECTS];
|
|
int object_count;
|
|
};
|
|
|
|
typedef bool (*obj_material_cb)(arena_t scratch, cgltf_material *material, sg_image *out, void *userdata);
|
|
typedef struct obj_desc_t obj_desc_t;
|
|
struct obj_desc_t {
|
|
obj_material_cb material_cb;
|
|
void *userdata;
|
|
};
|
|
|
|
scene_t obj_load_gltf(arena_t scratch, strview_t filename, obj_desc_t *desc);
|