glsl-effect: Allow to set uniform matrices
Add support for setting a uniform matrix on GLSLEffect because the color vision deficiency simulation extension requires it. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2164>
This commit is contained in:
parent
e07bc62fbd
commit
170f3ee089
@ -179,3 +179,27 @@ shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect,
|
|||||||
n_components, total_count / n_components,
|
n_components, total_count / n_components,
|
||||||
value);
|
value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_glsl_effect_set_uniform_matrix:
|
||||||
|
* @effect: a #ShellGLSLEffect
|
||||||
|
* @uniform: the uniform location (as returned by shell_glsl_effect_get_uniform_location())
|
||||||
|
* @transpose: Whether to transpose the matrix
|
||||||
|
* @dimensions: the number of components in the uniform (eg. 3 for a vec3)
|
||||||
|
* @total_count: the total number of floats in @value
|
||||||
|
* @value: (array length=total_count): the array of floats to set @uniform
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect,
|
||||||
|
int uniform,
|
||||||
|
gboolean transpose,
|
||||||
|
int dimensions,
|
||||||
|
int total_count,
|
||||||
|
const float *value)
|
||||||
|
{
|
||||||
|
ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (effect);
|
||||||
|
cogl_pipeline_set_uniform_matrix (priv->pipeline, uniform,
|
||||||
|
dimensions,
|
||||||
|
total_count / (dimensions * dimensions),
|
||||||
|
transpose, value);
|
||||||
|
}
|
||||||
|
@ -52,5 +52,11 @@ void shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect,
|
|||||||
int n_components,
|
int n_components,
|
||||||
int total_count,
|
int total_count,
|
||||||
const float *value);
|
const float *value);
|
||||||
|
void shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect,
|
||||||
|
int uniform,
|
||||||
|
gboolean transpose,
|
||||||
|
int dimensions,
|
||||||
|
int total_count,
|
||||||
|
const float *value);
|
||||||
|
|
||||||
#endif /* __SHELL_GLSL_EFFECT_H__ */
|
#endif /* __SHELL_GLSL_EFFECT_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user