diff options
author | Luc Deschenaux <luc.deschenaux@freesurf.ch> | 2011-11-17 17:36:44 +0100 |
---|---|---|
committer | Matthew Waters <ystreet00@gmail.com> | 2014-03-15 18:36:42 +0100 |
commit | 268f1a30b239ec0262e2eaa33117a2aa14df19ff (patch) | |
tree | 71f4489ee781d2c549c325248ecf53ead0e78fa4 /gst-libs/gst/gl/gstglshader.c | |
parent | 7d4de78102aeb7de6657b7638e868a0c43e03500 (diff) | |
download | gstreamer-plugins-bad-268f1a30b239ec0262e2eaa33117a2aa14df19ff.tar.gz |
[471/906] glshader: add dynamic fragment shader filter
Also add fragment shader parser
Fix bug #600195
Diffstat (limited to 'gst-libs/gst/gl/gstglshader.c')
-rw-r--r-- | gst-libs/gst/gl/gstglshader.c | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c index 45fb3e3d9..0ae7b3020 100644 --- a/gst-libs/gst/gl/gstglshader.c +++ b/gst-libs/gst/gl/gstglshader.c @@ -519,6 +519,314 @@ gst_gl_shader_set_uniform_1i (GstGLShader * shader, const gchar * name, } void +gst_gl_shader_set_uniform_1iv (GstGLShader * shader, const gchar * name, + guint count, gint * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform1ivARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_2f (GstGLShader * shader, const gchar * name, + gfloat value0, gfloat value1) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform2fARB (location, value0, value1); +} + +void +gst_gl_shader_set_uniform_2fv (GstGLShader * shader, const gchar * name, + guint count, gfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform2fvARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_2i (GstGLShader * shader, const gchar * name, + gint v0, gint v1) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform2iARB (location, v0, v1); +} + +void +gst_gl_shader_set_uniform_2iv (GstGLShader * shader, const gchar * name, + guint count, gint * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform2ivARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_3f (GstGLShader * shader, const gchar * name, + gfloat v0, gfloat v1, gfloat v2) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform3fARB (location, v0, v1, v2); +} + +void +gst_gl_shader_set_uniform_3fv (GstGLShader * shader, const gchar * name, + guint count, gfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform3fvARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_3i (GstGLShader * shader, const gchar * name, + gint v0, gint v1, gint v2) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform3iARB (location, v0, v1, v2); +} + +void +gst_gl_shader_set_uniform_3iv (GstGLShader * shader, const gchar * name, + guint count, gint * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform3ivARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_4f (GstGLShader * shader, const gchar * name, + gfloat v0, gfloat v1, gfloat v2, gfloat v3) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform4fARB (location, v0, v1, v2, v3); +} + +void +gst_gl_shader_set_uniform_4fv (GstGLShader * shader, const gchar * name, + guint count, gfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform4fvARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_4i (GstGLShader * shader, const gchar * name, + gint v0, gint v1, gint v2, gint v3) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform4iARB (location, v0, v1, v2, v3); +} + +void +gst_gl_shader_set_uniform_4iv (GstGLShader * shader, const gchar * name, + guint count, gint * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniform4ivARB (location, count, value); +} + +void +gst_gl_shader_set_uniform_matrix_2fv (GstGLShader * shader, const gchar * name, + GLsizei count, GLboolean transpose, const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix2fvARB (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_2x3fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix2x3fv (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_2x4fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix2x4fv (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_3fv (GstGLShader * shader, const gchar * name, + GLsizei count, GLboolean transpose, const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix3fvARB (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_3x2fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix3x2fv (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_3x4fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix3x4fv (location, count, transpose, value); +} + +void gst_gl_shader_set_uniform_matrix_4fv (GstGLShader * shader, const gchar * name, GLsizei count, GLboolean transpose, const GLfloat * value) { @@ -534,6 +842,40 @@ gst_gl_shader_set_uniform_matrix_4fv (GstGLShader * shader, const gchar * name, glUniformMatrix4fvARB (location, count, transpose, value); } +void +gst_gl_shader_set_uniform_matrix_4x2fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix4x2fv (location, count, transpose, value); +} + +void +gst_gl_shader_set_uniform_matrix_4x3fv (GstGLShader * shader, + const gchar * name, GLsizei count, GLboolean transpose, + const GLfloat * value) +{ + GstGLShaderPrivate *priv; + GLint location = -1; + + priv = shader->priv; + + g_return_if_fail (priv->program_handle != 0); + + location = glGetUniformLocationARB (priv->program_handle, name); + + glUniformMatrix4x3fv (location, count, transpose, value); +} + GLint gst_gl_shader_get_attribute_location (GstGLShader * shader, const gchar * name) { |