Skip to content

Commit eb4e1cf

Browse files
committed
Don't use real unforms in uniform packing test
In the unit tests for GL shader uniform packing, avoid using real uniform classes (e.g. u_DeformMagnitude) and define uniform classes just for the test. This way tests don't get in the way when changing shaders.
1 parent 91621cb commit eb4e1cf

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

src/engine/renderer/gl_shader_test.cpp

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3636

3737
namespace {
3838

39+
struct u_float_A : GLUniform1f { u_float_A(GLShader* s) : GLUniform1f(s, "u_float_A") {} };
40+
struct u_float_B : GLUniform1f { u_float_B(GLShader* s) : GLUniform1f(s, "u_float_B") {} };
41+
struct u_vec2_A : GLUniform2f { u_vec2_A(GLShader* s) : GLUniform2f(s, "u_vec2_A") {} };
42+
struct u_vec3_A : GLUniform3f { u_vec3_A(GLShader* s) : GLUniform3f(s, "u_vec3_A") {} };
43+
struct u_vec3_B : GLUniform3f { u_vec3_B(GLShader* s) : GLUniform3f(s, "u_vec3_B") {} };
44+
struct u_mat4_A: GLUniformMatrix4f { u_mat4_A(GLShader* s) : GLUniformMatrix4f(s, "u_mat4_A") {} };
45+
struct u_vec4Array6_A : GLUniform4fv { u_vec4Array6_A(GLShader* s) : GLUniform4fv( s, "u_Vec4Array6_A", 6 ) {} };
46+
3947
class MaterialUniformPackingTestShaderBase : public GLShader
4048
{
4149
public:
@@ -59,83 +67,83 @@ GLUniform* Get(ShaderT& shader)
5967
TEST(MaterialUniformPackingTest, OneMatrix)
6068
{
6169
class Shader1 : public MaterialUniformPackingTestShaderBase,
62-
public u_ModelViewMatrix //mat4
70+
public u_mat4_A
6371
{
6472
public:
65-
Shader1() : u_ModelViewMatrix(this) {}
73+
Shader1() : u_mat4_A(this) {}
6674
};
6775

6876
Shader1 shader1;
6977
std::vector<GLUniform*> uniforms = shader1.GetUniforms();
7078
EXPECT_EQ(shader1.GetSTD140Size(), 16u);
7179
ASSERT_EQ(uniforms.size(), 1);
72-
EXPECT_EQ(uniforms[0], Get<u_ModelViewMatrix>(shader1));
80+
EXPECT_EQ(uniforms[0], Get<u_mat4_A>(shader1));
7381
EXPECT_EQ(uniforms[0]->_std430Size, 16u);
7482
}
7583

7684
TEST(MaterialUniformPackingTest, TwoFloats)
7785
{
7886
class Shader1 : public MaterialUniformPackingTestShaderBase,
79-
public u_DeformMagnitude, //float
80-
public u_InverseGamma //float
87+
public u_float_A,
88+
public u_float_B
8189
{
8290
public:
83-
Shader1() : u_DeformMagnitude(this), u_InverseGamma(this) {}
91+
Shader1() : u_float_A(this), u_float_B(this) {}
8492
};
8593

8694
Shader1 shader1;
8795
std::vector<GLUniform*> uniforms = shader1.GetUniforms();
8896
EXPECT_EQ(shader1.GetSTD140Size(), 4u);
8997
ASSERT_EQ(uniforms.size(), 2);
90-
EXPECT_EQ(uniforms[0], Get<u_DeformMagnitude>(shader1));
98+
EXPECT_EQ(uniforms[0], Get<u_float_A>(shader1));
9199
EXPECT_EQ(uniforms[0]->_std430Size, 1u);
92-
EXPECT_EQ(uniforms[1], Get<u_InverseGamma>(shader1));
100+
EXPECT_EQ(uniforms[1], Get<u_float_B>(shader1));
93101
EXPECT_EQ(uniforms[1]->_std430Size, 3u);
94102
}
95103

96104
TEST(MaterialUniformPackingTest, Vec3Handling)
97105
{
98106
class Shader1 : public MaterialUniformPackingTestShaderBase,
99-
public u_DeformMagnitude, //float
100-
public u_SpecularExponent, //vec2
101-
public u_FogColor, //vec3
102-
public u_blurVec //vec3
107+
public u_float_A,
108+
public u_vec2_A,
109+
public u_vec3_A,
110+
public u_vec3_B
103111
{
104112
public:
105-
Shader1() : u_DeformMagnitude(this),
106-
u_SpecularExponent(this),
107-
u_FogColor(this),
108-
u_blurVec(this) {}
113+
Shader1() : u_float_A(this),
114+
u_vec2_A(this),
115+
u_vec3_A(this),
116+
u_vec3_B(this) {}
109117
};
110118

111119
Shader1 shader1;
112120
std::vector<GLUniform*> uniforms = shader1.GetUniforms();
113121
EXPECT_EQ(shader1.GetSTD140Size(), 12u);
114122
ASSERT_EQ(uniforms.size(), 4);
115-
EXPECT_EQ(uniforms[0], Get<u_FogColor>(shader1));
123+
EXPECT_EQ(uniforms[0], Get<u_vec3_A>(shader1));
116124
EXPECT_EQ(uniforms[0]->_std430Size, 3u);
117-
EXPECT_EQ(uniforms[1], Get<u_DeformMagnitude>(shader1));
125+
EXPECT_EQ(uniforms[1], Get<u_float_A>(shader1));
118126
EXPECT_EQ(uniforms[1]->_std430Size, 1u);
119-
EXPECT_EQ(uniforms[2], Get<u_blurVec>(shader1));
127+
EXPECT_EQ(uniforms[2], Get<u_vec3_B>(shader1));
120128
EXPECT_EQ(uniforms[2]->_std430Size, 4u);
121-
EXPECT_EQ(uniforms[3], Get<u_SpecularExponent>(shader1));
129+
EXPECT_EQ(uniforms[3], Get<u_vec2_A>(shader1));
122130
EXPECT_EQ(uniforms[3]->_std430Size, 4u);
123131
}
124132

125133
TEST(MaterialUniformPackingTest, Array)
126134
{
127135
class Shader1 : public MaterialUniformPackingTestShaderBase,
128-
public u_Frustum //vec4[6]
136+
public u_vec4Array6_A
129137
{
130138
public:
131-
Shader1() : u_Frustum(this) {}
139+
Shader1() : u_vec4Array6_A(this) {}
132140
};
133141

134142
Shader1 shader1;
135143
std::vector<GLUniform*> uniforms = shader1.GetUniforms();
136144
EXPECT_EQ(shader1.GetSTD140Size(), 24u);
137145
ASSERT_EQ(uniforms.size(), 1);
138-
EXPECT_EQ(uniforms[0], Get<u_Frustum>(shader1));
146+
EXPECT_EQ(uniforms[0], Get<u_vec4Array6_A>(shader1));
139147
EXPECT_EQ(uniforms[0]->_std430Size, 4u);
140148
}
141149

0 commit comments

Comments
 (0)