Demos (master): util: add GL_FLOAT_MAT4 support, more sampler types
Brian Paul
brianp at kemper.freedesktop.org
Wed May 9 14:09:52 UTC 2012
Module: Demos
Branch: master
Commit: 1e01b1ec23f68b93d1dbeb0035c5387ea3506912
URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=1e01b1ec23f68b93d1dbeb0035c5387ea3506912
Author: Brian Paul <brianp at vmware.com>
Date: Wed May 9 08:08:56 2012 -0600
util: add GL_FLOAT_MAT4 support, more sampler types
---
src/util/shaderutil.c | 13 +++++++++++++
src/util/shaderutil.h | 4 ++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/util/shaderutil.c b/src/util/shaderutil.c
index 7ac8160..0fa300b 100644
--- a/src/util/shaderutil.c
+++ b/src/util/shaderutil.c
@@ -38,6 +38,7 @@ PFNGLUNIFORM1FVPROC Uniform1fv = NULL;
PFNGLUNIFORM2FVPROC Uniform2fv = NULL;
PFNGLUNIFORM3FVPROC Uniform3fv = NULL;
PFNGLUNIFORM4FVPROC Uniform4fv = NULL;
+PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv = NULL;
PFNGLGETACTIVEATTRIBPROC GetActiveAttrib = NULL;
PFNGLGETATTRIBLOCATIONPROC GetAttribLocation = NULL;
@@ -70,6 +71,7 @@ ShadersSupported(void)
Uniform2fv = glUniform2fv;
Uniform3fv = glUniform3fv;
Uniform4fv = glUniform4fv;
+ UniformMatrix4fv = glUniformMatrix4fv;
GetActiveAttrib = glGetActiveAttrib;
GetAttribLocation = glGetAttribLocation;
return GL_TRUE;
@@ -95,6 +97,7 @@ ShadersSupported(void)
Uniform2fv = glUniform2fvARB;
Uniform3fv = glUniform3fvARB;
Uniform4fv = glUniform4fvARB;
+ UniformMatrix4fv = glUniformMatrix4fvARB;
GetActiveAttrib = glGetActiveAttribARB;
GetAttribLocation = glGetAttribLocationARB;
return GL_TRUE;
@@ -267,6 +270,12 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[])
case GL_SAMPLER_3D:
case GL_SAMPLER_CUBE:
case GL_SAMPLER_2D_RECT_ARB:
+ case GL_SAMPLER_1D_SHADOW:
+ case GL_SAMPLER_2D_SHADOW:
+ case GL_SAMPLER_1D_ARRAY:
+ case GL_SAMPLER_2D_ARRAY:
+ case GL_SAMPLER_1D_ARRAY_SHADOW:
+ case GL_SAMPLER_2D_ARRAY_SHADOW:
assert(uniforms[i].value[0] >= 0.0F);
Uniform1i(uniforms[i].location,
(GLint) uniforms[i].value[0]);
@@ -283,6 +292,10 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[])
case GL_FLOAT_VEC4:
Uniform4fv(uniforms[i].location, 1, uniforms[i].value);
break;
+ case GL_FLOAT_MAT4:
+ UniformMatrix4fv(uniforms[i].location, 1, GL_FALSE,
+ uniforms[i].value);
+ break;
default:
if (strncmp(uniforms[i].name, "gl_", 3) == 0) {
/* built-in uniform: ignore */
diff --git a/src/util/shaderutil.h b/src/util/shaderutil.h
index 08b2f28..7af6a31 100644
--- a/src/util/shaderutil.h
+++ b/src/util/shaderutil.h
@@ -7,8 +7,8 @@ struct uniform_info
{
const char *name;
GLuint size; /**< number of value[] elements: 1, 2, 3 or 4 */
- GLenum type; /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, etc */
- GLfloat value[4];
+ GLenum type; /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, GL_FLOAT_MAT4, etc */
+ GLfloat value[16];
GLint location; /**< filled in by InitUniforms() */
};
More information about the mesa-commit
mailing list