diff options
Diffstat (limited to 'src/objects')
| -rw-r--r-- | src/objects/material.h | 6 | ||||
| -rw-r--r-- | src/objects/model.h | 1 | ||||
| -rw-r--r-- | src/objects/pass.c | 12 | ||||
| -rw-r--r-- | src/objects/pass.h | 8 |
4 files changed, 23 insertions, 4 deletions
diff --git a/src/objects/material.h b/src/objects/material.h index 72b2d45..e7311c0 100644 --- a/src/objects/material.h +++ b/src/objects/material.h @@ -1,11 +1,13 @@ #ifndef _MATERIAL_H #define _MATERIAL_H +#include <jansson.h> + #include "pass.h" -typedef struct { +struct mri_material { mvec(mri_pass) passes; -} mri_material; +}; void mri_material_parse(mri_material *material, json_t *value); void mri_material_unload(mri_material *material); diff --git a/src/objects/model.h b/src/objects/model.h index e59b369..f1068d7 100644 --- a/src/objects/model.h +++ b/src/objects/model.h @@ -3,6 +3,7 @@ #include <jansson.h> +#include "pass.h" #include "material.h" typedef struct { diff --git a/src/objects/pass.c b/src/objects/pass.c index c90eb92..ba9de8c 100644 --- a/src/objects/pass.c +++ b/src/objects/pass.c @@ -1,10 +1,15 @@ #include "pass.h" +#include "material.h" #include "../json.h" #include "../texture.h" #include "../assets.h" void mri_pass_parse(mri_pass *pass, json_t *root) { + // TODO + pass->material = (mri_material *)malloc(sizeof(mri_material)); + mri_material_parse(pass->material, json_object_get(root, "material")); + json_t *texture; json_t *textures = json_object_get(root, "textures"); json_array(texture, textures) { @@ -13,7 +18,14 @@ void mri_pass_parse(mri_pass *pass, json_t *root) { mri_texture_unload(pass->textures[i]); } } + + json_t *shader = json_object_get(root, "shader"); + if (json_is_string(shader)) { + mri_shader_load(&pass->shader, json_string_value(shader)); + mri_shader_unload(&pass->shader); + } } void mri_pass_unload(mri_pass *pass) { + free(pass->material); } diff --git a/src/objects/pass.h b/src/objects/pass.h index aa8e2fb..ce34edd 100644 --- a/src/objects/pass.h +++ b/src/objects/pass.h @@ -3,11 +3,15 @@ #include <jansson.h> +#include "../shader.h" #include "../texture.h" +typedef struct mri_material mri_material; + typedef struct { - // mri_shader *shader; - // mri_material *material; + mri_material *material; + + mri_shader shader; mri_texture *textures[7]; // mvec(mri_uniform) uniforms; |