Module: Demos Branch: master Commit: 1e01b1ec23f68b93d1dbeb0035c5387ea3506912 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=1e01b1ec23f68b93d1dbeb0035c5387ea3506912
Author: Brian Paul <[email protected]> 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() */ }; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
