progs/glsl: change uniform_info::type field to use GLSL vector types
This commit is contained in:
@@ -24,12 +24,12 @@ static GLuint program;
|
|||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
/* vert */
|
/* 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 */
|
/* frag */
|
||||||
{ "BrickColor", 3, GL_FLOAT, { 0.8, 0.2, 0.2, 0 }, -1 },
|
{ "BrickColor", 1, GL_FLOAT_VEC3, { 0.8, 0.2, 0.2, 0 }, -1 },
|
||||||
{ "MortarColor", 3, GL_FLOAT, { 0.6, 0.6, 0.6, 0 }, -1 },
|
{ "MortarColor", 1, GL_FLOAT_VEC3, { 0.6, 0.6, 0.6, 0 }, -1 },
|
||||||
{ "BrickSize", 2, GL_FLOAT, { 1.0, 0.3, 0, 0 }, -1 },
|
{ "BrickSize", 1, GL_FLOAT_VEC2, { 1.0, 0.3, 0, 0 }, -1 },
|
||||||
{ "BrickPct", 2, GL_FLOAT, { 0.9, 0.8, 0, 0 }, -1 },
|
{ "BrickPct", 1, GL_FLOAT_VEC2, { 0.9, 0.8, 0, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -24,11 +24,11 @@ static GLuint program;
|
|||||||
|
|
||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
{ "LightPosition", 3, GL_FLOAT, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
|
{ "LightPosition", 1, GL_FLOAT_VEC3, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
|
||||||
{ "SurfaceColor", 3, GL_FLOAT, { 0.8, 0.8, 0.2, 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 },
|
{ "BumpDensity", 1, GL_FLOAT, { 10.0, 0, 0, 0 }, -1 },
|
||||||
{ "BumpSize", 1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
|
{ "BumpSize", 1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
|
||||||
{ "SpecularFactor", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
|
{ "SpecularFactor", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ static GLuint program;
|
|||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
/* vert */
|
/* 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 },
|
{ "SpecularContribution", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 },
|
||||||
{ "DiffuseContribution", 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 },
|
{ "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 },
|
{ "Zoom", 1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 },
|
||||||
{ "Xcenter", 1, GL_FLOAT, { -1.5, 0, 0, 0 }, -1 },
|
{ "Xcenter", 1, GL_FLOAT, { -1.5, 0, 0, 0 }, -1 },
|
||||||
{ "Ycenter", 1, GL_FLOAT, { .005, 0, 0, 0 }, -1 },
|
{ "Ycenter", 1, GL_FLOAT, { .005, 0, 0, 0 }, -1 },
|
||||||
{ "InnerColor", 3, GL_FLOAT, { 1, 0, 0, 0 }, -1 },
|
{ "InnerColor", 1, GL_FLOAT_VEC3, { 1, 0, 0, 0 }, -1 },
|
||||||
{ "OuterColor1", 3, GL_FLOAT, { 0, 1, 0, 0 }, -1 },
|
{ "OuterColor1", 1, GL_FLOAT_VEC3, { 0, 1, 0, 0 }, -1 },
|
||||||
{ "OuterColor2", 3, GL_FLOAT, { 0, 0, 1, 0 }, -1 },
|
{ "OuterColor2", 1, GL_FLOAT_VEC3, { 0, 0, 1, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -59,8 +59,8 @@ static GLint VertCoord_attr = -1, TexCoord0_attr = -1, TexCoord1_attr = -1;
|
|||||||
|
|
||||||
/* value[0] = tex unit */
|
/* value[0] = tex unit */
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
{ "tex1", 1, GL_INT, { 0, 0, 0, 0 }, -1 },
|
{ "tex1", 1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 },
|
||||||
{ "tex2", 1, GL_INT, { 1, 0, 0, 0 }, -1 },
|
{ "tex2", 1, GL_SAMPLER_2D, { 1, 0, 0, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -35,8 +35,8 @@ static const char *FragShaderText =
|
|||||||
|
|
||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
{ "Scale", 4, GL_FLOAT, { 0.5, 0.4, 0.0, 0}, -1 },
|
{ "Scale", 1, GL_FLOAT_VEC4, { 0.5, 0.4, 0.0, 0}, -1 },
|
||||||
{ "Bias", 4, GL_FLOAT, { 0.5, 0.3, 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 },
|
{ "Slice", 1, GL_FLOAT, { 0.5, 0, 0, 0}, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
@@ -53,14 +53,14 @@ static int win = 0;
|
|||||||
|
|
||||||
|
|
||||||
static struct uniform_info ReflectUniforms[] = {
|
static struct uniform_info ReflectUniforms[] = {
|
||||||
{ "cubeTex", 1, GL_INT, { 0, 0, 0, 0 }, -1 },
|
{ "cubeTex", 1, GL_SAMPLER_CUBE, { 0, 0, 0, 0 }, -1 },
|
||||||
{ "lightPos", 3, GL_FLOAT, { 10, 10, 20, 0 }, -1 },
|
{ "lightPos", 1, GL_FLOAT_VEC3, { 10, 10, 20, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct uniform_info SimpleUniforms[] = {
|
static struct uniform_info SimpleUniforms[] = {
|
||||||
{ "tex2d", 1, GL_INT, { 1, 0, 0, 0 }, -1 },
|
{ "tex2d", 1, GL_SAMPLER_2D, { 1, 0, 0, 0 }, -1 },
|
||||||
{ "lightPos", 3, GL_FLOAT, { 10, 10, 20, 0 }, -1 },
|
{ "lightPos", 1, GL_FLOAT_VEC3, { 10, 10, 20, 0 }, -1 },
|
||||||
END_OF_UNIFORMS
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -24,18 +24,18 @@ static GLuint program;
|
|||||||
|
|
||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
{ "LightDir", 4, GL_FLOAT, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
|
{ "LightDir", 1, GL_FLOAT_VEC4, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 },
|
||||||
{ "HVector", 4, GL_FLOAT, { 0.32506, 0.32506, 0.88808, 0.0 }, -1 },
|
{ "HVector", 1, GL_FLOAT_VEC4, { 0.32506, 0.32506, 0.88808, 0.0 }, -1 },
|
||||||
{ "BallCenter", 4, GL_FLOAT, { 0.0, 0.0, 0.0, 1.0 }, -1 },
|
{ "BallCenter", 1, GL_FLOAT_VEC4, { 0.0, 0.0, 0.0, 1.0 }, -1 },
|
||||||
{ "SpecularColor", 4, GL_FLOAT, { 0.4, 0.4, 0.4, 60.0 }, -1 },
|
{ "SpecularColor", 1, GL_FLOAT_VEC4, { 0.4, 0.4, 0.4, 60.0 }, -1 },
|
||||||
{ "Red", 4, GL_FLOAT, { 0.6, 0.0, 0.0, 1.0 }, -1 },
|
{ "Red", 1, GL_FLOAT_VEC4, { 0.6, 0.0, 0.0, 1.0 }, -1 },
|
||||||
{ "Blue", 4, GL_FLOAT, { 0.0, 0.3, 0.6, 1.0 }, -1 },
|
{ "Blue", 1, GL_FLOAT_VEC4, { 0.0, 0.3, 0.6, 1.0 }, -1 },
|
||||||
{ "Yellow", 4, GL_FLOAT, { 0.6, 0.5, 0.0, 1.0 }, -1 },
|
{ "Yellow", 1, GL_FLOAT_VEC4, { 0.6, 0.5, 0.0, 1.0 }, -1 },
|
||||||
{ "HalfSpace0", 4, GL_FLOAT, { 1.0, 0.0, 0.0, 0.2 }, -1 },
|
{ "HalfSpace0", 1, GL_FLOAT_VEC4, { 1.0, 0.0, 0.0, 0.2 }, -1 },
|
||||||
{ "HalfSpace1", 4, GL_FLOAT, { 0.309016994, 0.951056516, 0.0, 0.2 }, -1 },
|
{ "HalfSpace1", 1, GL_FLOAT_VEC4, { 0.309016994, 0.951056516, 0.0, 0.2 }, -1 },
|
||||||
{ "HalfSpace2", 4, GL_FLOAT, { -0.809016994, 0.587785252, 0.0, 0.2 }, -1 },
|
{ "HalfSpace2", 1, GL_FLOAT_VEC4, { -0.809016994, 0.587785252, 0.0, 0.2 }, -1 },
|
||||||
{ "HalfSpace3", 4, GL_FLOAT, { -0.809016994, -0.587785252, 0.0, 0.2 }, -1 },
|
{ "HalfSpace3", 1, GL_FLOAT_VEC4, { -0.809016994, -0.587785252, 0.0, 0.2 }, -1 },
|
||||||
{ "HalfSpace4", 4, GL_FLOAT, { 0.309116994, -0.951056516, 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 },
|
{ "InOrOutInit", 1, GL_FLOAT, { -3.0, 0, 0, 0 }, -1 },
|
||||||
{ "StripeWidth", 1, GL_FLOAT, { 0.3, 0, 0, 0 }, -1 },
|
{ "StripeWidth", 1, GL_FLOAT, { 0.3, 0, 0, 0 }, -1 },
|
||||||
{ "FWidth", 1, GL_FLOAT, { 0.005, 0, 0, 0 }, -1 },
|
{ "FWidth", 1, GL_FLOAT, { 0.005, 0, 0, 0 }, -1 },
|
||||||
|
@@ -43,7 +43,7 @@ static GLfloat xRot = -70.0f, yRot = 0.0f, zRot = 0.0f;
|
|||||||
|
|
||||||
/* value[0] = tex unit */
|
/* value[0] = tex unit */
|
||||||
static struct uniform_info Uniforms[] = {
|
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
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ static const char *VertShaderText =
|
|||||||
"} \n";
|
"} \n";
|
||||||
|
|
||||||
static struct uniform_info Uniforms[] = {
|
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
|
END_OF_UNIFORMS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -130,21 +130,26 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[])
|
|||||||
uniforms[i].location
|
uniforms[i].location
|
||||||
= glGetUniformLocation(program, uniforms[i].name);
|
= glGetUniformLocation(program, uniforms[i].name);
|
||||||
|
|
||||||
switch (uniforms[i].size) {
|
switch (uniforms[i].type) {
|
||||||
case 1:
|
case GL_INT:
|
||||||
if (uniforms[i].type == GL_INT)
|
case GL_SAMPLER_1D:
|
||||||
glUniform1i(uniforms[i].location,
|
case GL_SAMPLER_2D:
|
||||||
(GLint) uniforms[i].value[0]);
|
case GL_SAMPLER_3D:
|
||||||
else
|
case GL_SAMPLER_CUBE:
|
||||||
glUniform1fv(uniforms[i].location, 1, uniforms[i].value);
|
case GL_SAMPLER_2D_RECT_ARB:
|
||||||
|
glUniform1i(uniforms[i].location,
|
||||||
|
(GLint) uniforms[i].value[0]);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case GL_FLOAT:
|
||||||
|
glUniform1fv(uniforms[i].location, 1, uniforms[i].value);
|
||||||
|
break;
|
||||||
|
case GL_FLOAT_VEC2:
|
||||||
glUniform2fv(uniforms[i].location, 1, uniforms[i].value);
|
glUniform2fv(uniforms[i].location, 1, uniforms[i].value);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case GL_FLOAT_VEC3:
|
||||||
glUniform3fv(uniforms[i].location, 1, uniforms[i].value);
|
glUniform3fv(uniforms[i].location, 1, uniforms[i].value);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case GL_FLOAT_VEC4:
|
||||||
glUniform4fv(uniforms[i].location, 1, uniforms[i].value);
|
glUniform4fv(uniforms[i].location, 1, uniforms[i].value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -171,52 +176,6 @@ GetUniforms(GLuint program, struct uniform_info uniforms[])
|
|||||||
glGetActiveUniform(program, i, 100, &len, &size, &type, name);
|
glGetActiveUniform(program, i, 100, &len, &size, &type, name);
|
||||||
|
|
||||||
uniforms[i].name = strdup(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].size = size;
|
||||||
uniforms[i].type = type;
|
uniforms[i].type = type;
|
||||||
uniforms[i].location = glGetUniformLocation(program, name);
|
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);
|
glGetActiveAttrib(program, i, 100, &len, &size, &type, name);
|
||||||
|
|
||||||
attribs[i].name = strdup(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].size = size;
|
||||||
attribs[i].type = type;
|
attribs[i].type = type;
|
||||||
attribs[i].location = glGetAttribLocation(program, name);
|
attribs[i].location = glGetAttribLocation(program, name);
|
||||||
|
@@ -7,7 +7,7 @@ struct uniform_info
|
|||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
GLuint size; /**< number of value[] elements: 1, 2, 3 or 4 */
|
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];
|
GLfloat value[4];
|
||||||
GLint location; /**< filled in by InitUniforms() */
|
GLint location; /**< filled in by InitUniforms() */
|
||||||
};
|
};
|
||||||
@@ -19,7 +19,7 @@ struct attrib_info
|
|||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
GLuint size; /**< number of value[] elements: 1, 2, 3 or 4 */
|
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;
|
GLint location;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user