Skip to content

Commit

Permalink
Add+rollout MeshDepthWritingMaterial
Browse files Browse the repository at this point in the history
  • Loading branch information
adamkewley committed Sep 2, 2024
1 parent 39d8e5d commit cdf1a06
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 32 deletions.
8 changes: 0 additions & 8 deletions resources/oscar/shaders/SceneRenderer/DepthMap.frag

This file was deleted.

11 changes: 0 additions & 11 deletions resources/oscar/shaders/SceneRenderer/DepthMap.vert

This file was deleted.

2 changes: 2 additions & 0 deletions src/oscar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ add_library(oscar STATIC

Graphics/Materials/MeshBasicMaterial.cpp
Graphics/Materials/MeshBasicMaterial.h
Graphics/Materials/MeshDepthWritingMaterial.cpp
Graphics/Materials/MeshDepthWritingMaterial.h
Graphics/Materials/MeshPhongMaterial.cpp
Graphics/Materials/MeshPhongMaterial.h

Expand Down
1 change: 1 addition & 0 deletions src/oscar/Graphics/Materials.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#pragma once

#include <oscar/Graphics/Materials/MeshBasicMaterial.h>
#include <oscar/Graphics/Materials/MeshDepthWritingMaterial.h>
#include <oscar/Graphics/Materials/MeshPhongMaterial.h>
31 changes: 31 additions & 0 deletions src/oscar/Graphics/Materials/MeshDepthWritingMaterial.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include "MeshDepthWritingMaterial.h"

#include <oscar/Utils/CStringView.h>

using namespace osc;

namespace
{
constexpr CStringView c_vertex_shader_src = R"(
#version 330 core
uniform mat4 uViewProjMat;
layout (location = 0) in vec3 aPos;
layout (location = 6) in mat4 aModelMat;
void main()
{
gl_Position = uViewProjMat * aModelMat * vec4(aPos, 1.0);
}
)";
constexpr CStringView c_fragment_shader_src = R"(
#version 330 core
void main() {} // implicitly writes the depth
)";
}

osc::MeshDepthWritingMaterial::MeshDepthWritingMaterial()
: Material{Shader{c_vertex_shader_src, c_fragment_shader_src}}
{}
13 changes: 13 additions & 0 deletions src/oscar/Graphics/Materials/MeshDepthWritingMaterial.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once

#include <oscar/Graphics/Material.h>

namespace osc
{
// A material that only writes the depth of the mesh to the depth buffer (no
// color output)
class MeshDepthWritingMaterial final : public Material {
public:
MeshDepthWritingMaterial();
};
}
15 changes: 2 additions & 13 deletions src/oscar/Graphics/Scene/SceneRenderer.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "SceneRenderer.h"

#include <oscar/Graphics/Materials/MeshBasicMaterial.h>
#include <oscar/Graphics/Materials/MeshDepthWritingMaterial.h>
#include <oscar/Graphics/Scene/SceneHelpers.h>
#include <oscar/Graphics/Textures/ChequeredTexture.h>
#include <oscar/Graphics/AntiAliasingLevel.h>
Expand Down Expand Up @@ -186,17 +187,6 @@ namespace
{}
};

// a `Material` that emits the NDC depth of the fragment as a color
class DepthColoringMaterial final : public Material {
public:
explicit DepthColoringMaterial(SceneCache& cache) :
Material{cache.get_shader(
"oscar/shaders/SceneRenderer/DepthMap.vert",
"oscar/shaders/SceneRenderer/DepthMap.frag"
)}
{}
};

// a `Material` that colors `SceneDecoration`s in the rim color (groups)
class RimFillerMaterial final : public MeshBasicMaterial {
public:
Expand All @@ -223,7 +213,6 @@ class osc::SceneRenderer::Impl final {
wireframe_material_{cache.wireframe_material()},
edge_detection_material_{cache},
normals_material_{cache},
depth_writer_material_{cache},
quad_mesh_{cache.quad_mesh()}
{
wireframe_material_.set_color(Color::black());
Expand Down Expand Up @@ -542,7 +531,7 @@ class osc::SceneRenderer::Impl final {
MeshBasicMaterial wireframe_material_;
EdgeDetectionMaterial edge_detection_material_;
NormalsMaterial normals_material_;
DepthColoringMaterial depth_writer_material_;
MeshDepthWritingMaterial depth_writer_material_;

Mesh quad_mesh_;
Camera camera_;
Expand Down
1 change: 1 addition & 0 deletions tests/testoscar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ add_executable(testoscar
Graphics/Detail/TestVertexAttributeHelpers.cpp
Graphics/Detail/TestVertexAttributeFormatList.cpp
Graphics/Detail/TestVertexAttributeList.cpp
Graphics/Materials/TestMeshDepthWritingMaterial.cpp
Graphics/Scene/TestSceneCache.cpp
Graphics/Scene/TestSceneHelpers.cpp
Graphics/TestAntiAliasingLevel.cpp
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include <oscar/Graphics/Materials/MeshDepthWritingMaterial.h>

#include <oscar/Platform/App.h>
#include <gtest/gtest.h>

using namespace osc;

TEST(MeshDepthWritingMaterial, can_default_construct)
{
App app;
[[maybe_unused]] MeshDepthWritingMaterial default_constructed; // should compile, run, etc.
}

0 comments on commit cdf1a06

Please sign in to comment.