aboutsummaryrefslogtreecommitdiff
path: root/src/scene/material.c
blob: 9fe6c1b1c6ed39f0c9a6e1638b8a5833def33f8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "material_impl.h"

#include "memory.h"

static void material_make(Material* material, const MaterialDesc* desc) {
  assert(material);
  assert(desc);
  assert(desc->num_uniforms < GFX_MAX_UNIFORMS_PER_MATERIAL);
  material->alpha_mode   = desc->alpha_mode;
  material->alpha_cutoff = desc->alpha_cutoff;
  material->num_uniforms = (int8_t)desc->num_uniforms;
  for (int i = 0; i < desc->num_uniforms; ++i) {
    material->uniforms[i] = desc->uniforms[i];
  }
}

Material* gfx_make_material(const MaterialDesc* desc) {
  assert(desc);
  Material* material = mem_alloc_material();
  material_make(material, desc);
  return material;
}

void gfx_destroy_material(Material** material) { mem_free_material(material); }