Allowed setting uniforms in shader

This commit is contained in:
2026-02-03 09:37:56 +01:00
parent 991d394098
commit 32a6d498b9
6 changed files with 267 additions and 48 deletions

View File

@@ -122,3 +122,73 @@ reload_shader_program :: proc(renderer: ^Renderer, p: ^Shader_Program) -> bool {
return true
}
set_shader_uniform :: proc { // TODO: SS - Improve setting shader uniforms. A bit bug-prone and annoying to explicitly add code-paths for every 'Uniform' type needed.
set_shader_uniform_texture,
set_shader_uniform_float,
set_shader_uniform_matrix4f32,
set_shader_uniform_vector3,
}
set_shader_uniform_texture :: proc(program: ^Shader_Program, uniform: Uniform_Texture) -> bool {
assert(program != nil)
assert(uniform.index < MATERIAL_MAX_TEXTURES)
assert(uniform.value != nil)
when RENDER_BACKEND_OPENGL {
return opengl_set_shader_uniform_texture(program, uniform)
}
return false
}
set_shader_uniform_float :: proc(program: ^Shader_Program, uniform: Uniform_Float) -> bool {
assert(program != nil)
assert(len(uniform.name) > 0)
if uniform.value == nil {
return false
}
// TODO: SS - Somehow verify that 'uniform.name' exists in the shader(s)?
when RENDER_BACKEND_OPENGL {
return opengl_set_shader_uniform_float(program, uniform)
}
return false
}
set_shader_uniform_matrix4f32 :: proc(program: ^Shader_Program, uniform: Uniform_Matrix4f32) -> bool {
assert(program != nil)
assert(len(uniform.name) > 0)
if uniform.value == nil {
return false
}
// TODO: SS - Somehow verify that 'uniform.name' exists in the shader(s)?
when RENDER_BACKEND_OPENGL {
return opengl_set_shader_uniform_matrix4f32(program, uniform)
}
return false
}
set_shader_uniform_vector3 :: proc(program: ^Shader_Program, uniform: Uniform_Vector3) -> bool {
assert(program != nil)
assert(len(uniform.name) > 0)
if uniform.value == nil {
return false
}
// TODO: SS - Somehow verify that 'uniform.name' exists in the shader(s)?
when RENDER_BACKEND_OPENGL {
return opengl_set_shader_uniform_vector3(program, uniform)
}
return false
}