diff --git a/tests/Testbed/Shaders/TriangleMesh.330core.frag b/tests/Testbed/Shaders/TriangleMesh.330core.frag new file mode 100644 index 0000000000..e8de80ee89 --- /dev/null +++ b/tests/Testbed/Shaders/TriangleMesh.330core.frag @@ -0,0 +1,45 @@ +/* + * TriangleMesh.330core.frag + * + * Copyright (c) 2015 Lukas Hermanns. All rights reserved. + * Licensed under the terms of the BSD 3-Clause license (see LICENSE.txt). + */ + +#version 330 core + +#ifndef ENABLE_TEXTURING +#define ENABLE_TEXTURING 0 +#endif + +layout(std140) uniform Scene +{ + mat4 wvpMatrix; + mat4 wMatrix; + vec4 solidColor; + vec3 lightVec; +}; + +in vec3 vNormal; + +#if ENABLE_TEXTURING +in vec2 vTexCoord; +#endif + +out vec4 outColor; + +#if ENABLE_TEXTURING +uniform sampler2D colorMapSampler; +#endif + +void main() +{ + vec3 normal = normalize(vNormal); + float NdotL = clamp(dot(lightVec, normal), 0.0, 1.0); + float shading = mix(0.2, 1.0, NdotL); + #if ENABLE_TEXTURING + vec4 albedo = texture(colorMapSampler, vTexCoord); + #else + vec4 albedo = vec4(1); + #endif + outColor = solidColor * albedo * vec4(vec3(shading), 1.0); +} diff --git a/tests/Testbed/Shaders/TriangleMesh.330core.vert b/tests/Testbed/Shaders/TriangleMesh.330core.vert new file mode 100644 index 0000000000..2b7d4ce290 --- /dev/null +++ b/tests/Testbed/Shaders/TriangleMesh.330core.vert @@ -0,0 +1,41 @@ +/* + * TriangleMesh.330core.vert + * + * Copyright (c) 2015 Lukas Hermanns. All rights reserved. + * Licensed under the terms of the BSD 3-Clause license (see LICENSE.txt). + */ + +#version 330 core + +#ifndef ENABLE_TEXTURING +#define ENABLE_TEXTURING 0 +#endif + +layout(std140) uniform Scene +{ + mat4 wvpMatrix; + mat4 wMatrix; + vec4 solidColor; + vec3 lightVec; +}; + +in vec3 position; +in vec3 normal; +in vec2 texCoord; + +out vec3 vNormal; + +#if ENABLE_TEXTURING +out vec2 vTexCoord; +#endif + +void main() +{ + gl_Position = wvpMatrix * vec4(position, 1); + vNormal = normalize(wMatrix * vec4(normal, 0)).xyz; + #if ENABLE_TEXTURING + vTexCoord = texCoord; + #endif + gl_Position.y = -gl_Position.y; //TODO: temporary fix for render target VS +} + diff --git a/tests/Testbed/TestDepthBuffer.cpp b/tests/Testbed/TestDepthBuffer.cpp index 7997c4d5e2..1c0db6ffaa 100644 --- a/tests/Testbed/TestDepthBuffer.cpp +++ b/tests/Testbed/TestDepthBuffer.cpp @@ -112,15 +112,6 @@ DEF_TEST( DepthBuffer ) const float expectedDepthValue = 0.975574434f; const float deltaDepthValue = std::abs(readbackDepthValue - expectedDepthValue); - if (deltaDepthValue > epsilon) - { - Log::Errorf( - "Mismatch between depth buffer value at center (%f) and expected value (%f): delta = %f\n", - readbackDepthValue, expectedDepthValue, deltaDepthValue - ); - //return TestResult::FailedMismatch; - } - // Match entire depth and create delta heat map std::vector readbackDepthBuffer; readbackDepthBuffer.resize(texDesc.extent.width * texDesc.extent.height, -1.0f); @@ -140,6 +131,16 @@ DEF_TEST( DepthBuffer ) renderer->Release(*renderTarget); renderer->Release(*readbackTex); + // Evaluate readback result + if (deltaDepthValue > epsilon) + { + Log::Errorf( + "Mismatch between depth buffer value at center (%f) and expected value (%f): delta = %f\n", + readbackDepthValue, expectedDepthValue, deltaDepthValue + ); + return TestResult::FailedMismatch; + } + return TestResult::Passed; } diff --git a/tests/Testbed/TestbedContext.cpp b/tests/Testbed/TestbedContext.cpp index da063c198d..e3a61f44cc 100644 --- a/tests/Testbed/TestbedContext.cpp +++ b/tests/Testbed/TestbedContext.cpp @@ -568,13 +568,20 @@ bool TestbedContext::LoadShaders() shaders[VSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.hlsl", ShaderType::Vertex, "VSMain", "vs_5_0", definesEnableTexturing); shaders[PSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.hlsl", ShaderType::Fragment, "PSMain", "ps_5_0", definesEnableTexturing); } - else if (IsShadingLanguageSupported(ShadingLanguage::GLSL)) + else if (IsShadingLanguageSupported(ShadingLanguage::GLSL_450)) { shaders[VSSolid] = LoadShaderFromFile(shaderPath + "TriangleMesh.450core.vert", ShaderType::Vertex); shaders[PSSolid] = LoadShaderFromFile(shaderPath + "TriangleMesh.450core.frag", ShaderType::Fragment); shaders[VSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.450core.vert", ShaderType::Vertex, nullptr, nullptr, definesEnableTexturing); shaders[PSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.450core.frag", ShaderType::Fragment, nullptr, nullptr, definesEnableTexturing); } + else if (IsShadingLanguageSupported(ShadingLanguage::GLSL_330)) + { + shaders[VSSolid] = LoadShaderFromFile(shaderPath + "TriangleMesh.330core.vert", ShaderType::Vertex); + shaders[PSSolid] = LoadShaderFromFile(shaderPath + "TriangleMesh.330core.frag", ShaderType::Fragment); + shaders[VSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.330core.vert", ShaderType::Vertex, nullptr, nullptr, definesEnableTexturing); + shaders[PSTextured] = LoadShaderFromFile(shaderPath + "TriangleMesh.330core.frag", ShaderType::Fragment, nullptr, nullptr, definesEnableTexturing); + } else if (IsShadingLanguageSupported(ShadingLanguage::Metal)) { //todo