render tests: fixed render tests to not use gl_FragColor
gl_FragColor was eliminated in GLSL 1.3.
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index e741c4e..0283370 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -505,6 +505,8 @@
}
+#if 0
+
TEST_F(VkRenderTest, VKTriangle_FragColor)
{
static const char *vertShaderText =
@@ -532,10 +534,11 @@
"#extension GL_ARB_shading_language_420pack : enable\n"
"\n"
"layout (location = 0) in vec4 inColor;\n"
+ "layout (location = 0) out vec4 uFragColor;\n"
"\n"
"void main()\n"
"{\n"
- " gl_FragColor = inColor;\n"
+ " uFragColor = inColor;\n"
"}\n";
TEST_DESCRIPTION("VK-style shaders where fragment shader outputs to GLSL built-in gl_FragColor");
@@ -608,10 +611,11 @@
"#extension GL_ARB_shading_language_420pack : enable\n"
"\n"
"layout (location = 0) in vec4 inColor;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"\n"
"void main()\n"
"{\n"
- " gl_FragColor = inColor;\n"
+ " outColor = inColor;\n"
"}\n";
TEST_DESCRIPTION("VK-style shaders, but force test framework to compile shader to SPV and pass SPV to driver.");
@@ -633,9 +637,12 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = vec4(0,1,0,1);\n"
+ " outColor = vec4(0,1,0,1);\n"
"}\n";
TEST_DESCRIPTION("Basic shader that renders a fixed Green triangle coded as part of the vertex shader.");
@@ -656,9 +663,12 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = vec4(0,1,0,1);\n"
+ " outColor = vec4(0,1,0,1);\n"
"}\n";
TEST_DESCRIPTION("Same shader as GreenTriangle, but compiles shader to SPV and gives SPV to driver.");
@@ -685,9 +695,12 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n"
+ " outColor = vec4(1.0, 1.0, 0.0, 1.0);\n"
"}\n";
VKTriangleTest(vertShaderText, fragShaderText, false);
@@ -792,10 +805,14 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec4 uFragData0;\n"
+ "layout (location = 1) out vec4 uFragData1;\n"
"void main() {\n"
- " gl_FragData[0] = vec4(1.0, 0.0, 0.0, 1.0);\n"
- " gl_FragData[1] = vec4(0.0, 1.0, 0.0, 1.0);\n"
+ " uFragData0 = vec4(1.0, 0.0, 0.0, 1.0);\n"
+ " uFragData1 = vec4(0.0, 1.0, 0.0, 1.0);\n"
"}\n";
const float vb_data[][2] = {
{ -1.0f, -1.0f },
@@ -889,8 +906,9 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout(location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
const Vertex g_vbData[] =
@@ -1003,10 +1021,11 @@
//"layout (pixel_center_integer) in vec4 gl_FragCoord;\n"
"layout (location = 0) in vec4 color;\n"
"layout (location = 1) in vec4 color2;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
" vec2 pos = mod(gl_FragCoord.xy, vec2(50.0)) - vec2(25.0);\n"
" float dist_squared = dot(pos, pos);\n"
- " gl_FragColor = (dist_squared < 400.0)\n"
+ " outColor = (dist_squared < 400.0)\n"
" ? ((gl_FragCoord.y < 100.0) ? vec4(1.0, 0.0, 0.0, 0.0) : color)\n"
" : color2;\n"
"}\n";
@@ -1068,6 +1087,10 @@
RecordImages(m_renderTargets);
}
+//good
+
+
+
TEST_F(VkRenderTest, RedCirclesonBlue)
{
// This tests that we correctly handle unread fragment inputs
@@ -1093,10 +1116,11 @@
//"layout (pixel_center_integer) in vec4 gl_FragCoord;\n"
"layout (location = 0) in vec4 color;\n"
"layout (location = 1) in vec4 color2;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
" vec2 pos = mod(gl_FragCoord.xy, vec2(50.0)) - vec2(25.0);\n"
" float dist_squared = dot(pos, pos);\n"
- " gl_FragColor = (dist_squared < 400.0)\n"
+ " outColor = (dist_squared < 400.0)\n"
" ? vec4(1.0, 0.0, 0.0, 1.0)\n"
" : color2;\n"
"}\n";
@@ -1162,6 +1186,7 @@
// This tests reading gl_ClipDistance from FS
static const char *vertShaderText =
+ //"#version 140\n"
"#version 330\n"
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
@@ -1185,18 +1210,19 @@
static const char *fragShaderText =
- //"#version 140\n"
- "#version 330\n"
+ "#version 140\n"
+ //"#version 330\n"
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
//"#extension GL_ARB_fragment_coord_conventions : enable\n"
//"layout (pixel_center_integer) in vec4 gl_FragCoord;\n"
"layout (location = 0) in vec4 color;\n"
"layout (location = 1) in vec4 color2;\n"
+ "layout (location = 0) out vec4 uFragColor;\n"
"void main() {\n"
" vec2 pos = mod(gl_FragCoord.xy, vec2(50.0)) - vec2(25.0);\n"
" float dist_squared = dot(pos, pos);\n"
- " gl_FragColor = (dist_squared < 400.0)\n"
+ " uFragColor = (dist_squared < 400.0)\n"
" ? color * gl_ClipDistance[0]\n"
" : color2;\n"
"}\n";
@@ -1282,12 +1308,13 @@
//"layout (pixel_center_integer) in vec4 gl_FragCoord;\n"
"layout (location = 0) in vec4 color;\n"
"layout (location = 1) in vec4 color2;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
" vec2 pos = mod(gl_FragCoord.xy, vec2(50.0)) - vec2(25.0);\n"
" float dist_squared = dot(pos, pos);\n"
" if (dist_squared < 100.0)\n"
" discard;\n"
- " gl_FragColor = (dist_squared < 400.0)\n"
+ " outColor = (dist_squared < 400.0)\n"
" ? color\n"
" : color2;\n"
"}\n";
@@ -1369,9 +1396,12 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n"
+ " outColor = vec4(1.0, 0.0, 0.0, 1.0);\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1456,8 +1486,9 @@
"layout (location = 1) in vec4 bar;\n"
"layout (location = 0) in vec4 foo;\n"
"layout (location = 2) in float scale;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = bar * scale + foo * (1.0-scale);\n"
+ " outColor = bar * scale + foo * (1.0-scale);\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1522,8 +1553,9 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1611,8 +1643,9 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1722,8 +1755,9 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1787,13 +1821,17 @@
RecordImages(m_renderTargets);
}
+
+// good
+
+
TEST_F(VkRenderTest, CubeWithVertexFetchAndMVP)
{
static const char *vertShaderText =
"#version 140\n"
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
- "layout (std140) uniform bufferVals {\n"
+ "layout (std140, binding = 0) uniform bufferVals {\n"
" mat4 mvp;\n"
"} myBufferVals;\n"
"layout (location = 0) in vec4 pos;\n"
@@ -1807,10 +1845,13 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
- "in vec4 color;\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
glm::mat4 Projection = glm::perspective(glm::radians(45.0f), 1.0f, 0.1f, 100.0f);
@@ -1927,10 +1968,13 @@
"}\n";
static const char *fragShaderText =
- "#version 130\n"
- "in vec4 texColor;\n"
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) in vec4 texColor;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = texColor;\n"
+ " outColor = texColor;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -1970,6 +2014,9 @@
RecordImages(m_renderTargets);
}
+
+
+
TEST_F(VkRenderTest, TexturedTriangle)
{
// The expected result from this test is a red and green checkered triangle
@@ -2119,6 +2166,10 @@
RecordImages(m_renderTargets);
}
+
+//bad
+
+
TEST_F(VkRenderTest, FSTriangle)
{
// The expected result from this test is a red and green checkered triangle
@@ -2223,8 +2274,9 @@
"layout (binding = 0) uniform sampler2D surface0;\n"
"layout (binding = 1) uniform sampler2D surface1;\n"
"layout (binding = 12) uniform sampler2D surface2;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = textureLod(surface2, samplePos.xy, 0.0);\n"
+ " outColor = textureLod(surface2, samplePos.xy, 0.0);\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -2306,8 +2358,9 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (location = 0) in vec4 inColor;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = inColor;\n"
+ " outColor = inColor;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -2388,9 +2441,10 @@
"layout (std140, binding = 1) uniform greenVal { vec4 color; } myGreenVal\n;"
"layout (std140, binding = 2) uniform blueVal { vec4 color; } myBlueVal\n;"
"layout (std140, binding = 3) uniform whiteVal { vec4 color; } myWhiteVal\n;"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = myBlueVal.color;\n"
- " gl_FragColor += myRedVal.color;\n"
+ " outColor = myBlueVal.color;\n"
+ " outColor += myRedVal.color;\n"
"}\n";
ASSERT_NO_FATAL_FAILURE(InitState());
@@ -3016,6 +3070,7 @@
" vec4 uvOffsets[4];\n"
"};\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 uFragColor;\n"
"void main() {\n"
" vec4 right = vec4(0.0, 1.0, 0.0, 1.0);\n"
" vec4 wrong = vec4(1.0, 0.0, 0.0, 1.0);\n"
@@ -3043,7 +3098,7 @@
" if (uvOffsets[2] != vec4(0.9, 1.0, 1.1, 1.2))\n"
" outColor = wrong;\n"
" \n"
- " gl_FragColor = outColor;\n"
+ " uFragColor = outColor;\n"
"}\n";
@@ -3324,9 +3379,10 @@
"#extension GL_ARB_separate_shader_objects : enable\n"
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
// pass through
- " gl_FragColor = color;\n"
+ " outColor = color;\n"
"}\n";
@@ -3579,6 +3635,7 @@
" vec4 uvOffsets[4];\n"
"};\n"
"layout (location = 0) in vec4 color;\n"
+ "layout (location = 0) out vec4 uFragColor;\n"
"void main() {\n"
" vec4 right = vec4(0.0, 1.0, 0.0, 1.0);\n"
" vec4 wrong = vec4(1.0, 0.0, 0.0, 1.0);\n"
@@ -3606,7 +3663,7 @@
" if (uvOffsets[2] != vec4(0.9, 1.0, 1.1, 1.2))\n"
" outColor = wrong;\n"
" \n"
- " gl_FragColor = outColor;\n"
+ " uFragColor = outColor;\n"
"}\n";
@@ -3802,9 +3859,10 @@
"layout(location = 0) in vec3 in_a;\n"
"layout(location = 1) in vec3 in_b;\n"
"layout(location = 2) in vec3 in_c;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
- " gl_FragColor = vec4(in_a.x, in_b.y, in_c.z, 1.0);\n"
+ " outColor = vec4(in_a.x, in_b.y, in_c.z, 1.0);\n"
"}\n";
@@ -3841,6 +3899,8 @@
RecordImages(m_renderTargets);
}
+#endif
+
TEST_F(VkRenderTest, GSTriStrip)
{
// This test emits multiple multiple triangles using a GS
@@ -3925,6 +3985,7 @@
"layout(location = 0) in vec4 inColor;\n"
"layout(origin_upper_left) in vec4 gl_FragCoord;\n"
+ "layout (location = 0) out vec4 outColor;\n"
"void main() {\n"
@@ -3934,7 +3995,7 @@
" if (dist > 50.0)\n"
" discard;\n"
- " gl_FragColor = inColor;\n"
+ " outColor = inColor;\n"
"}\n";