DRW: Add DRW_UNIFORM_INT_COPY.
This allow to use int uniforms that are not references. Convenient for ids.
This commit is contained in:
parent
17041bd895
commit
ad648b7693
|
@ -379,6 +379,8 @@ void DRW_shgroup_uniform_ivec2(DRWShadingGroup *shgroup, const char *name, const
|
|||
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize);
|
||||
void DRW_shgroup_uniform_mat3(DRWShadingGroup *shgroup, const char *name, const float *value);
|
||||
void DRW_shgroup_uniform_mat4(DRWShadingGroup *shgroup, const char *name, const float *value);
|
||||
/* Store value instead of referencing it. */
|
||||
void DRW_shgroup_uniform_int_copy(DRWShadingGroup *shgroup, const char *name, const int value);
|
||||
|
||||
/* Passes */
|
||||
DRWPass *DRW_pass_create(const char *name, DRWState state);
|
||||
|
|
|
@ -157,6 +157,7 @@ typedef enum {
|
|||
DRW_UNIFORM_SHORT_TO_INT,
|
||||
DRW_UNIFORM_SHORT_TO_FLOAT,
|
||||
DRW_UNIFORM_INT,
|
||||
DRW_UNIFORM_INT_COPY,
|
||||
DRW_UNIFORM_FLOAT,
|
||||
DRW_UNIFORM_TEXTURE,
|
||||
DRW_UNIFORM_TEXTURE_PERSIST,
|
||||
|
|
|
@ -211,6 +211,12 @@ void DRW_shgroup_uniform_mat4(DRWShadingGroup *shgroup, const char *name, const
|
|||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 16, 1);
|
||||
}
|
||||
|
||||
/* Stores the int instead of a pointer. */
|
||||
void DRW_shgroup_uniform_int_copy(DRWShadingGroup *shgroup, const char *name, const int value)
|
||||
{
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_INT_COPY, SET_INT_IN_POINTER(value), 1, 1);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
|
|
@ -873,7 +873,12 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
|
|||
case DRW_UNIFORM_SHORT_TO_INT:
|
||||
val = (int)*((short *)uni->value);
|
||||
GPU_shader_uniform_vector_int(
|
||||
shgroup->shader, uni->location, uni->length, uni->arraysize, (int *)&val);
|
||||
shgroup->shader, uni->location, uni->length, uni->arraysize, &val);
|
||||
break;
|
||||
case DRW_UNIFORM_INT_COPY:
|
||||
val = GET_INT_FROM_POINTER(uni->value);
|
||||
GPU_shader_uniform_vector_int(
|
||||
shgroup->shader, uni->location, uni->length, uni->arraysize, &val);
|
||||
break;
|
||||
case DRW_UNIFORM_SHORT_TO_FLOAT:
|
||||
fval = (float)*((short *)uni->value);
|
||||
|
|
Loading…
Reference in New Issue