From 0dc3a9df980630b671bbc5df69503c2e72dcf004 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sun, 2 Nov 2025 18:18:56 -0800 Subject: Consolidate scene data structures --- src/core/shader_program.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/core') diff --git a/src/core/shader_program.c b/src/core/shader_program.c index eeb46f8..3840019 100644 --- a/src/core/shader_program.c +++ b/src/core/shader_program.c @@ -209,6 +209,35 @@ static ShaderUniform* get_or_allocate_uniform( // The functions below save the value of a uniform in the shader program. If the // uniform does not even exist, then there is no need to store the value. +void gfx_set_uniform(ShaderProgram* prog, const ShaderUniform* uniform) { + switch (uniform->type) { + case UniformInt: + gfx_set_int_uniform(prog, uniform->name.str, uniform->value.uniform_int); + break; + case UniformFloat: + gfx_set_float_uniform( + prog, uniform->name.str, uniform->value.uniform_float); + break; + case UniformMat4: + gfx_set_mat4_uniform(prog, uniform->name.str, &uniform->value.uniform_mat4); + break; + case UniformVec3: + gfx_set_vec3_uniform(prog, uniform->name.str, uniform->value.uniform_vec3); + break; + case UniformVec4: + gfx_set_vec4_uniform(prog, uniform->name.str, uniform->value.uniform_vec4); + break; + case UniformTexture: + gfx_set_texture_uniform(prog, uniform->name.str, uniform->value.texture); + break; + case UniformMat4Array: + gfx_set_mat4_array_uniform( + prog, uniform->name.str, uniform->value.array.values, + uniform->value.array.count); + break; + } +} + void gfx_set_int_uniform(ShaderProgram* prog, const char* name, int value) { assert(prog); assert(name); -- cgit v1.2.3