Mesa (master): progs/glsl: change uniform_info:: type field to use GLSL vector types

Brian Paul brianp at kemper.freedesktop.org
Wed Aug 12 23:31:58 UTC 2009


Module: Mesa
Branch: master
Commit: fdfb0d4b0e04bff2f3dbae2d1f8e3765fb4b0dce
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdfb0d4b0e04bff2f3dbae2d1f8e3765fb4b0dce

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Aug 12 17:25:49 2009 -0600

progs/glsl: change uniform_info::type field to use GLSL vector types

---

 progs/glsl/brick.c      |   10 ++--
 progs/glsl/bump.c       |   10 ++--
 progs/glsl/mandelbrot.c |    8 ++--
 progs/glsl/multitex.c   |    4 +-
 progs/glsl/noise.c      |    4 +-
 progs/glsl/texdemo1.c   |    8 ++--
 progs/glsl/toyball.c    |   24 +++++-----
 progs/glsl/vert-tex.c   |    2 +-
 progs/tests/floattex.c  |    2 +-
 progs/util/shaderutil.c |  107 +++++++----------------------------------------
 progs/util/shaderutil.h |    4 +-
 11 files changed, 53 insertions(+), 130 deletions(-)

diff --git a/progs/glsl/brick.c b/progs/glsl/brick.c
index e5f5c96..0653c59 100644
--- a/progs/glsl/brick.c
+++ b/progs/glsl/brick.c
@@ -24,12 +24,12 @@ static GLuint program;
 
 static struct uniform_info Uniforms[] = {
    /* vert */
-   { "LightPosition",     3, GL_FLOAT, { 0.1, 0.1, 9.0, 0}, -1 },
+   { "LightPosition",     1, GL_FLOAT_VEC3, { 0.1, 0.1, 9.0, 0}, -1 },
    /* frag */
-   { "BrickColor",        3, GL_FLOAT, { 0.8, 0.2, 0.2, 0 }, -1 },
-   { "MortarColor",       3, GL_FLOAT, { 0.6, 0.6, 0.6, 0 }, -1 },
-   { "BrickSize",         2, GL_FLOAT, { 1.0, 0.3, 0, 0 }, -1 },
-   { "BrickPct",          2, GL_FLOAT, { 0.9, 0.8, 0, 0 }, -1 },
+   { "BrickColor",        1, GL_FLOAT_VEC3, { 0.8, 0.2, 0.2, 0 }, -1 },
+   { "MortarColor",       1, GL_FLOAT_VEC3, { 0.6, 0.6, 0.6, 0 }, -1 },
+   { "BrickSize",         1, GL_FLOAT_VEC2, { 1.0, 0.3, 0, 0 }, -1 },
+   { "BrickPct",          1, GL_FLOAT_VEC2, { 0.9, 0.8, 0, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/glsl/bump.c b/progs/glsl/bump.c
index 29af26f..c0d39c0 100644
--- a/progs/glsl/bump.c
+++ b/progs/glsl/bump.c
@@ -24,11 +24,11 @@ static GLuint program;
 
 
 static struct uniform_info Uniforms[] = {
-   { "LightPosition",    3, GL_FLOAT, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
-   { "SurfaceColor",     3, GL_FLOAT, { 0.8, 0.8, 0.2, 0 }, -1 },
-   { "BumpDensity",      1, GL_FLOAT, { 10.0, 0, 0, 0 }, -1 },
-   { "BumpSize",         1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
-   { "SpecularFactor",   1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
+   { "LightPosition",  1, GL_FLOAT_VEC3, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
+   { "SurfaceColor",   1, GL_FLOAT_VEC3, { 0.8, 0.8, 0.2, 0 }, -1 },
+   { "BumpDensity",    1, GL_FLOAT, { 10.0, 0, 0, 0 }, -1 },
+   { "BumpSize",       1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
+   { "SpecularFactor", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/glsl/mandelbrot.c b/progs/glsl/mandelbrot.c
index 09c65d2..729a6f1 100644
--- a/progs/glsl/mandelbrot.c
+++ b/progs/glsl/mandelbrot.c
@@ -25,7 +25,7 @@ static GLuint program;
 
 static struct uniform_info Uniforms[] = {
    /* vert */
-   { "LightPosition",        3, GL_FLOAT, { 0.1, 0.1, 9.0, 0}, -1 },
+   { "LightPosition",        1, GL_FLOAT_VEC3, { 0.1, 0.1, 9.0, 0}, -1 },
    { "SpecularContribution", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
    { "DiffuseContribution",  1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
    { "Shininess",            1, GL_FLOAT, { 20.0, 0, 0, 0 }, -1 },
@@ -34,9 +34,9 @@ static struct uniform_info Uniforms[] = {
    { "Zoom",                 1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
    { "Xcenter",              1, GL_FLOAT, { -1.5, 0, 0, 0 }, -1 },
    { "Ycenter",              1, GL_FLOAT, { .005, 0, 0, 0 }, -1 },
-   { "InnerColor",           3, GL_FLOAT, { 1, 0, 0, 0 }, -1 },
-   { "OuterColor1",          3, GL_FLOAT, { 0, 1, 0, 0 }, -1 },
-   { "OuterColor2",          3, GL_FLOAT, { 0, 0, 1, 0 }, -1 },
+   { "InnerColor",           1, GL_FLOAT_VEC3, { 1, 0, 0, 0 }, -1 },
+   { "OuterColor1",          1, GL_FLOAT_VEC3, { 0, 1, 0, 0 }, -1 },
+   { "OuterColor2",          1, GL_FLOAT_VEC3, { 0, 0, 1, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/glsl/multitex.c b/progs/glsl/multitex.c
index ce79bc1..6ec9c83 100644
--- a/progs/glsl/multitex.c
+++ b/progs/glsl/multitex.c
@@ -59,8 +59,8 @@ static GLint VertCoord_attr = -1, TexCoord0_attr = -1, TexCoord1_attr = -1;
 
 /* value[0] = tex unit */
 static struct uniform_info Uniforms[] = {
-   { "tex1",  1, GL_INT, { 0, 0, 0, 0 }, -1 },
-   { "tex2",  1, GL_INT, { 1, 0, 0, 0 }, -1 },
+   { "tex1",  1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 },
+   { "tex2",  1, GL_SAMPLER_2D, { 1, 0, 0, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/glsl/noise.c b/progs/glsl/noise.c
index 6ef2a80..8c36e1c 100644
--- a/progs/glsl/noise.c
+++ b/progs/glsl/noise.c
@@ -35,8 +35,8 @@ static const char *FragShaderText =
 
 
 static struct uniform_info Uniforms[] = {
-   { "Scale",    4, GL_FLOAT, { 0.5, 0.4, 0.0, 0}, -1 },
-   { "Bias",     4, GL_FLOAT, { 0.5, 0.3, 0.0, 0}, -1 },
+   { "Scale",    1, GL_FLOAT_VEC4, { 0.5, 0.4, 0.0, 0}, -1 },
+   { "Bias",     1, GL_FLOAT_VEC4, { 0.5, 0.3, 0.0, 0}, -1 },
    { "Slice",    1, GL_FLOAT, { 0.5, 0, 0, 0}, -1 },
    END_OF_UNIFORMS
 };
diff --git a/progs/glsl/texdemo1.c b/progs/glsl/texdemo1.c
index f0dce85..5b1913a 100644
--- a/progs/glsl/texdemo1.c
+++ b/progs/glsl/texdemo1.c
@@ -53,14 +53,14 @@ static int win = 0;
 
 
 static struct uniform_info ReflectUniforms[] = {
-   { "cubeTex",  1, GL_INT, { 0, 0, 0, 0 }, -1 },
-   { "lightPos", 3, GL_FLOAT, { 10, 10, 20, 0 }, -1 },
+   { "cubeTex",  1, GL_SAMPLER_CUBE, { 0, 0, 0, 0 }, -1 },
+   { "lightPos", 1, GL_FLOAT_VEC3, { 10, 10, 20, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
 static struct uniform_info SimpleUniforms[] = {
-   { "tex2d",    1, GL_INT,   { 1, 0, 0, 0 }, -1 },
-   { "lightPos", 3, GL_FLOAT, { 10, 10, 20, 0 }, -1 },
+   { "tex2d",    1, GL_SAMPLER_2D, { 1, 0, 0, 0 }, -1 },
+   { "lightPos", 1, GL_FLOAT_VEC3, { 10, 10, 20, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/glsl/toyball.c b/progs/glsl/toyball.c
index 13f5776..89733d6 100644
--- a/progs/glsl/toyball.c
+++ b/progs/glsl/toyball.c
@@ -24,18 +24,18 @@ static GLuint program;
 
 
 static struct uniform_info Uniforms[] = {
-   { "LightDir",       4, GL_FLOAT, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
-   { "HVector",        4, GL_FLOAT, { 0.32506, 0.32506, 0.88808, 0.0 }, -1 },
-   { "BallCenter",     4, GL_FLOAT, { 0.0, 0.0, 0.0, 1.0 }, -1 },
-   { "SpecularColor",  4, GL_FLOAT, { 0.4, 0.4, 0.4, 60.0 }, -1 },
-   { "Red",         4, GL_FLOAT, { 0.6, 0.0, 0.0, 1.0 }, -1 },
-   { "Blue",        4, GL_FLOAT, { 0.0, 0.3, 0.6, 1.0 }, -1 },
-   { "Yellow",      4, GL_FLOAT, { 0.6, 0.5, 0.0, 1.0 }, -1 },
-   { "HalfSpace0",  4, GL_FLOAT, { 1.0, 0.0, 0.0, 0.2 }, -1 },
-   { "HalfSpace1",  4, GL_FLOAT, { 0.309016994, 0.951056516, 0.0, 0.2 }, -1 },
-   { "HalfSpace2",  4, GL_FLOAT, { -0.809016994, 0.587785252, 0.0, 0.2 }, -1 },
-   { "HalfSpace3",  4, GL_FLOAT, { -0.809016994, -0.587785252, 0.0, 0.2 }, -1 },
-   { "HalfSpace4",  4, GL_FLOAT, { 0.309116994, -0.951056516, 0.0, 0.2 }, -1 },
+   { "LightDir",    1, GL_FLOAT_VEC4, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
+   { "HVector",     1, GL_FLOAT_VEC4, { 0.32506, 0.32506, 0.88808, 0.0 }, -1 },
+   { "BallCenter",  1, GL_FLOAT_VEC4, { 0.0, 0.0, 0.0, 1.0 }, -1 },
+   { "SpecularColor", 1, GL_FLOAT_VEC4, { 0.4, 0.4, 0.4, 60.0 }, -1 },
+   { "Red",         1, GL_FLOAT_VEC4, { 0.6, 0.0, 0.0, 1.0 }, -1 },
+   { "Blue",        1, GL_FLOAT_VEC4, { 0.0, 0.3, 0.6, 1.0 }, -1 },
+   { "Yellow",      1, GL_FLOAT_VEC4, { 0.6, 0.5, 0.0, 1.0 }, -1 },
+   { "HalfSpace0",  1, GL_FLOAT_VEC4, { 1.0, 0.0, 0.0, 0.2 }, -1 },
+   { "HalfSpace1",  1, GL_FLOAT_VEC4, { 0.309016994, 0.951056516, 0.0, 0.2 }, -1 },
+   { "HalfSpace2",  1, GL_FLOAT_VEC4, { -0.809016994, 0.587785252, 0.0, 0.2 }, -1 },
+   { "HalfSpace3",  1, GL_FLOAT_VEC4, { -0.809016994, -0.587785252, 0.0, 0.2 }, -1 },
+   { "HalfSpace4",  1, GL_FLOAT_VEC4, { 0.309116994, -0.951056516, 0.0, 0.2 }, -1 },
    { "InOrOutInit", 1, GL_FLOAT, { -3.0, 0, 0, 0 }, -1 },
    { "StripeWidth", 1, GL_FLOAT, {  0.3, 0, 0, 0 }, -1 },
    { "FWidth",      1, GL_FLOAT, { 0.005, 0, 0, 0 }, -1 },
diff --git a/progs/glsl/vert-tex.c b/progs/glsl/vert-tex.c
index e791a57..4c8bfa5 100644
--- a/progs/glsl/vert-tex.c
+++ b/progs/glsl/vert-tex.c
@@ -43,7 +43,7 @@ static GLfloat xRot = -70.0f, yRot = 0.0f, zRot = 0.0f;
 
 /* value[0] = tex unit */
 static struct uniform_info Uniforms[] = {
-   { "tex1",  1, GL_INT, { 0, 0, 0, 0 }, -1 },
+   { "tex1",  1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/tests/floattex.c b/progs/tests/floattex.c
index e6b7658..39302ce 100644
--- a/progs/tests/floattex.c
+++ b/progs/tests/floattex.c
@@ -33,7 +33,7 @@ static const char *VertShaderText =
    "} \n";
 
 static struct uniform_info Uniforms[] = {
-   { "tex1",  1, GL_INT, { 0, 0, 0, 0 }, -1 },
+   { "tex1",  1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 },
    END_OF_UNIFORMS
 };
 
diff --git a/progs/util/shaderutil.c b/progs/util/shaderutil.c
index f057adf..2332521 100644
--- a/progs/util/shaderutil.c
+++ b/progs/util/shaderutil.c
@@ -130,21 +130,26 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[])
       uniforms[i].location
          = glGetUniformLocation(program, uniforms[i].name);
 
-      switch (uniforms[i].size) {
-      case 1:
-         if (uniforms[i].type == GL_INT)
-            glUniform1i(uniforms[i].location,
-                             (GLint) uniforms[i].value[0]);
-         else
-            glUniform1fv(uniforms[i].location, 1, uniforms[i].value);
+      switch (uniforms[i].type) {
+      case GL_INT:
+      case GL_SAMPLER_1D:
+      case GL_SAMPLER_2D:
+      case GL_SAMPLER_3D:
+      case GL_SAMPLER_CUBE:
+      case GL_SAMPLER_2D_RECT_ARB:
+         glUniform1i(uniforms[i].location,
+                     (GLint) uniforms[i].value[0]);
+         break;
+      case GL_FLOAT:
+         glUniform1fv(uniforms[i].location, 1, uniforms[i].value);
          break;
-      case 2:
+      case GL_FLOAT_VEC2:
          glUniform2fv(uniforms[i].location, 1, uniforms[i].value);
          break;
-      case 3:
+      case GL_FLOAT_VEC3:
          glUniform3fv(uniforms[i].location, 1, uniforms[i].value);
          break;
-      case 4:
+      case GL_FLOAT_VEC4:
          glUniform4fv(uniforms[i].location, 1, uniforms[i].value);
          break;
       default:
@@ -171,52 +176,6 @@ GetUniforms(GLuint program, struct uniform_info uniforms[])
       glGetActiveUniform(program, i, 100, &len, &size, &type, name);
 
       uniforms[i].name = strdup(name);
-      switch (type) {
-      case GL_FLOAT:
-         size = 1;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC2:
-         size = 2;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC3:
-         size = 3;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC4:
-         size = 4;
-         type = GL_FLOAT;
-         break;
-      case GL_INT:
-         size = 1;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC2:
-         size = 2;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC3:
-         size = 3;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC4:
-         size = 4;
-         type = GL_INT;
-         break;
-      case GL_FLOAT_MAT3:
-         /* XXX fix me */
-         size = 3;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_MAT4:
-         /* XXX fix me */
-         size = 4;
-         type = GL_FLOAT;
-         break;
-      default:
-         abort();
-      }
       uniforms[i].size = size;
       uniforms[i].type = type;
       uniforms[i].location = glGetUniformLocation(program, name);
@@ -267,42 +226,6 @@ GetAttribs(GLuint program, struct attrib_info attribs[])
       glGetActiveAttrib(program, i, 100, &len, &size, &type, name);
 
       attribs[i].name = strdup(name);
-      switch (type) {
-      case GL_FLOAT:
-         size = 1;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC2:
-         size = 2;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC3:
-         size = 3;
-         type = GL_FLOAT;
-         break;
-      case GL_FLOAT_VEC4:
-         size = 4;
-         type = GL_FLOAT;
-         break;
-      case GL_INT:
-         size = 1;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC2:
-         size = 2;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC3:
-         size = 3;
-         type = GL_INT;
-         break;
-      case GL_INT_VEC4:
-         size = 4;
-         type = GL_INT;
-         break;
-      default:
-         abort();
-      }
       attribs[i].size = size;
       attribs[i].type = type;
       attribs[i].location = glGetAttribLocation(program, name);
diff --git a/progs/util/shaderutil.h b/progs/util/shaderutil.h
index 22dc4dc..0a6be02 100644
--- a/progs/util/shaderutil.h
+++ b/progs/util/shaderutil.h
@@ -7,7 +7,7 @@ struct uniform_info
 {
    const char *name;
    GLuint size;  /**< number of value[] elements: 1, 2, 3 or 4 */
-   GLenum type;  /**< GL_FLOAT or GL_INT */
+   GLenum type;  /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, etc */
    GLfloat value[4];
    GLint location;  /**< filled in by InitUniforms() */
 };
@@ -19,7 +19,7 @@ struct attrib_info
 {
    const char *name;
    GLuint size;  /**< number of value[] elements: 1, 2, 3 or 4 */
-   GLenum type;  /**< GL_FLOAT or GL_INT */
+   GLenum type;  /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, etc */
    GLint location;
 };
 




More information about the mesa-commit mailing list