Skip to content

Commit

Permalink
Added TriangleMesh shader for GLSL330 to Testbed.
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasBanana committed Jul 24, 2023
1 parent 3c6d140 commit 3f21d16
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 10 deletions.
45 changes: 45 additions & 0 deletions tests/Testbed/Shaders/TriangleMesh.330core.frag
Original file line number Diff line number Diff line change
@@ -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);
}
41 changes: 41 additions & 0 deletions tests/Testbed/Shaders/TriangleMesh.330core.vert
Original file line number Diff line number Diff line change
@@ -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
}

19 changes: 10 additions & 9 deletions tests/Testbed/TestDepthBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<float> readbackDepthBuffer;
readbackDepthBuffer.resize(texDesc.extent.width * texDesc.extent.height, -1.0f);
Expand All @@ -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;
}

9 changes: 8 additions & 1 deletion tests/Testbed/TestbedContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 3f21d16

Please sign in to comment.