From 8846a97329d0ec632b837347ab0b4389b862c860 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 24 Aug 2020 19:20:38 -0400 Subject: implement most of the shader parsing --- src/objects/material.h | 6 ++++-- src/objects/model.h | 1 + src/objects/pass.c | 12 ++++++++++++ src/objects/pass.h | 8 ++++++-- 4 files changed, 23 insertions(+), 4 deletions(-) (limited to 'src/objects') 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 + #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 +#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 +#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; -- cgit v1.2.3-101-g0448