Uniform colors
This commit is contained in:
44
shader.odin
44
shader.odin
@@ -128,6 +128,7 @@ set_shader_uniform :: proc { // TODO: SS - Improve setting shader uniforms. A bi
|
||||
set_shader_uniform_float,
|
||||
set_shader_uniform_matrix4f32,
|
||||
set_shader_uniform_vector3,
|
||||
set_shader_uniform_color,
|
||||
}
|
||||
|
||||
set_shader_uniform_texture :: proc(program: ^Shader_Program, uniform: Uniform_Texture) -> bool {
|
||||
@@ -190,5 +191,48 @@ set_shader_uniform_vector3 :: proc(program: ^Shader_Program, uniform: Uniform_Ve
|
||||
return opengl_set_shader_uniform_vector3(program, uniform)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
set_shader_uniform_color :: proc(program: ^Shader_Program, uniform: Uniform_Color) -> 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)?
|
||||
|
||||
switch &c in uniform.value {
|
||||
case RGB_Color: {
|
||||
rgb := color_to_f32(c)
|
||||
|
||||
u := Uniform_Vector3 {
|
||||
name = uniform.name,
|
||||
value = &rgb,
|
||||
}
|
||||
|
||||
when RENDER_BACKEND_OPENGL {
|
||||
return opengl_set_shader_uniform_vector3(program, u)
|
||||
}
|
||||
}
|
||||
case RGBA_Color: {
|
||||
rgba := color_to_f32(c)
|
||||
|
||||
// u := Uniform_Vector4 {
|
||||
// name = uniform.name,
|
||||
// value = &rgba,
|
||||
// }
|
||||
|
||||
// TODO: SS - Set vector4.
|
||||
// when RENDER_BACKEND_OPENGL {
|
||||
// return opengl_set_shader_uniform_vector4(program, uniform)
|
||||
// }
|
||||
assert(false, "TODO: SS - Allow setting rgba in uniform.")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user