summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2009-08-12 17:25:49 -0600
committerBrian Paul <brianp@vmware.com>2009-08-12 17:28:45 -0600
commitf989727f4c1193a05b44e596411efa13a6d24717 (patch)
treeed841f737073bc76220ebff2ad8241beadcdff56 /src
parent45825b116ba39074ffbe89dec7e402895ad2df00 (diff)
progs/glsl: change uniform_info::type field to use GLSL vector types
Diffstat (limited to 'src')
-rw-r--r--src/glsl/brick.c10
-rw-r--r--src/glsl/bump.c10
-rw-r--r--src/glsl/mandelbrot.c8
-rw-r--r--src/glsl/multitex.c4
-rw-r--r--src/glsl/noise.c4
-rw-r--r--src/glsl/texdemo1.c8
-rw-r--r--src/glsl/toyball.c24
-rw-r--r--src/glsl/vert-tex.c2
-rw-r--r--src/tests/floattex.c2
-rw-r--r--src/util/shaderutil.c107
-rw-r--r--src/util/shaderutil.h4
11 files changed, 53 insertions, 130 deletions
diff --git a/src/glsl/brick.c b/src/glsl/brick.c
index e5f5c966..0653c592 100644
--- a/src/glsl/brick.c
+++ b/src/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/src/glsl/bump.c b/src/glsl/bump.c
index 29af26f7..c0d39c04 100644
--- a/src/glsl/bump.c
+++ b/src/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/src/glsl/mandelbrot.c b/src/glsl/mandelbrot.c
index 09c65d2c..729a6f12 100644
--- a/src/glsl/mandelbrot.c
+++ b/src/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/src/glsl/multitex.c b/src/glsl/multitex.c
index ce79bc1b..6ec9c833 100644
--- a/src/glsl/multitex.c
+++ b/src/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/src/glsl/noise.c b/src/glsl/noise.c
index 6ef2a80f..8c36e1c5 100644
--- a/src/glsl/noise.c
+++ b/src/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/src/glsl/texdemo1.c b/src/glsl/texdemo1.c
index f0dce855..5b1913a7 100644
--- a/src/glsl/texdemo1.c
+++ b/src/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/src/glsl/toyball.c b/src/glsl/toyball.c
index 13f57766..89733d61 100644
--- a/src/glsl/toyball.c
+++ b/src/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/src/glsl/vert-tex.c b/src/glsl/vert-tex.c
index e791a575..4c8bfa58 100644
--- a/src/glsl/vert-tex.c
+++ b/src/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/src/tests/floattex.c b/src/tests/floattex.c
index e6b76581..39302ce3 100644
--- a/src/tests/floattex.c
+++ b/src/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/src/util/shaderutil.c b/src/util/shaderutil.c
index f057adf5..23325211 100644
--- a/src/util/shaderutil.c
+++ b/src/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/src/util/shaderutil.h b/src/util/shaderutil.h
index 22dc4dc4..0a6be026 100644
--- a/src/util/shaderutil.h
+++ b/src/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;
};