DRW: Add DRW_shgroup_uniform_vec4_array_copy

This commit is contained in:
Clément Foucault 2020-05-28 01:14:45 +02:00
parent 68d6b73fde
commit bf690ecd39
2 changed files with 22 additions and 0 deletions

View File

@ -521,6 +521,10 @@ void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name,
void DRW_shgroup_uniform_vec2_copy(DRWShadingGroup *shgroup, const char *name, const float *value);
void DRW_shgroup_uniform_vec3_copy(DRWShadingGroup *shgroup, const char *name, const float *value);
void DRW_shgroup_uniform_vec4_copy(DRWShadingGroup *shgroup, const char *name, const float *value);
void DRW_shgroup_uniform_vec4_array_copy(DRWShadingGroup *shgroup,
const char *name,
const float (*value)[4],
int arraysize);
bool DRW_shgroup_is_empty(DRWShadingGroup *shgroup);

View File

@ -436,6 +436,24 @@ void DRW_shgroup_uniform_vec4_copy(DRWShadingGroup *shgroup, const char *name, c
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_FLOAT_COPY, value, 4, 1);
}
void DRW_shgroup_uniform_vec4_array_copy(DRWShadingGroup *shgroup,
const char *name,
const float (*value)[4],
int arraysize)
{
int location = GPU_shader_get_uniform_ensure(shgroup->shader, name);
if (location == -1) {
/* Nice to enable eventually, for now eevee uses uniforms that might not exist. */
// BLI_assert(0);
return;
}
for (int i = 0; i < arraysize; i++) {
drw_shgroup_uniform_create_ex(shgroup, location + i, DRW_UNIFORM_FLOAT_COPY, &value[i], 4, 1);
}
}
/** \} */
/* -------------------------------------------------------------------- */