diff options
Diffstat (limited to 'src/llr/material.c')
| -rw-r--r-- | src/llr/material.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/src/llr/material.c b/src/llr/material.c deleted file mode 100644 index f09dd3f..0000000 --- a/src/llr/material.c +++ /dev/null | |||
| @@ -1,57 +0,0 @@ | |||
| 1 | #include "material_impl.h" | ||
| 2 | |||
| 3 | #include "memory.h" | ||
| 4 | |||
| 5 | #include <gfx/core.h> | ||
| 6 | |||
| 7 | static void material_make(Material* material, const MaterialDesc* desc) { | ||
| 8 | assert(material); | ||
| 9 | assert(desc); | ||
| 10 | assert(desc->num_uniforms < GFX_MAX_UNIFORMS_PER_MATERIAL); | ||
| 11 | material->num_uniforms = desc->num_uniforms; | ||
| 12 | for (int i = 0; i < desc->num_uniforms; ++i) { | ||
| 13 | material->uniforms[i] = desc->uniforms[i]; | ||
| 14 | } | ||
| 15 | } | ||
| 16 | |||
| 17 | Material* gfx_make_material(const MaterialDesc* desc) { | ||
| 18 | assert(desc); | ||
| 19 | Material* material = mem_alloc_material(); | ||
| 20 | material_make(material, desc); | ||
| 21 | return material; | ||
| 22 | } | ||
| 23 | |||
| 24 | void gfx_destroy_material(Material** material) { mem_free_material(material); } | ||
| 25 | |||
| 26 | static void set_uniform(ShaderProgram* prog, const ShaderUniform* uniform) { | ||
| 27 | switch (uniform->type) { | ||
| 28 | case UniformTexture: | ||
| 29 | gfx_set_texture_uniform(prog, uniform->name.str, uniform->value.texture); | ||
| 30 | break; | ||
| 31 | case UniformMat4: | ||
| 32 | gfx_set_mat4_uniform(prog, uniform->name.str, &uniform->value.mat4); | ||
| 33 | break; | ||
| 34 | case UniformVec3: | ||
| 35 | gfx_set_vec3_uniform(prog, uniform->name.str, uniform->value.vec3); | ||
| 36 | break; | ||
| 37 | case UniformVec4: | ||
| 38 | gfx_set_vec4_uniform(prog, uniform->name.str, uniform->value.vec4); | ||
| 39 | break; | ||
| 40 | case UniformFloat: | ||
| 41 | gfx_set_float_uniform(prog, uniform->name.str, uniform->value.scalar); | ||
| 42 | break; | ||
| 43 | case UniformMat4Array: | ||
| 44 | gfx_set_mat4_array_uniform( | ||
| 45 | prog, uniform->name.str, uniform->value.array.values, | ||
| 46 | uniform->value.array.count); | ||
| 47 | break; | ||
| 48 | } | ||
| 49 | } | ||
| 50 | |||
| 51 | void gfx_material_activate(ShaderProgram* shader, const Material* material) { | ||
| 52 | assert(material); | ||
| 53 | for (int i = 0; i < material->num_uniforms; ++i) { | ||
| 54 | const ShaderUniform* uniform = &material->uniforms[i]; | ||
| 55 | set_uniform(shader, uniform); | ||
| 56 | } | ||
| 57 | } | ||
