summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Jamfile.jam3
-rw-r--r--test/perf-terrain.cpp17
-rw-r--r--test/test-assetFactory.cpp8
-rw-r--r--test/test-geoData.cpp8
-rw-r--r--test/test-lib.cpp12
-rw-r--r--test/test-maths.cpp2
-rw-r--r--test/test-network.cpp2
-rw-r--r--test/test-render.cpp38
8 files changed, 61 insertions, 29 deletions
diff --git a/test/Jamfile.jam b/test/Jamfile.jam
index 8219398..bedc2ad 100644
--- a/test/Jamfile.jam
+++ b/test/Jamfile.jam
@@ -71,5 +71,6 @@ explicit perf-assetFactory ;
explicit perf-persistence ;
explicit perf-geoData ;
explicit perf-instancing ;
-alias perf : perf-assetFactory perf-persistence perf-geoData perf-instancing ;
+explicit perf-terrain ;
+alias perf : perf-assetFactory perf-persistence perf-geoData perf-instancing perf-terrain ;
explicit perf ;
diff --git a/test/perf-terrain.cpp b/test/perf-terrain.cpp
index 81cb16c..e75f80b 100644
--- a/test/perf-terrain.cpp
+++ b/test/perf-terrain.cpp
@@ -1,4 +1,7 @@
#include "game/terrain.h"
+#include "gfx/camera.h"
+#include "gfx/frustum.h"
+#include "gfx/gl/sceneShader.h"
#include "testMainWindow.h"
#include <benchmark/benchmark.h>
@@ -14,8 +17,22 @@ namespace {
terrain.generateMeshes();
}
}
+
+ void
+ terrainRender(benchmark::State & state)
+ {
+ Terrain terrain {GeoData::loadFromAsciiGrid(FIXTURESDIR "height/SD19.asc")};
+ SceneShader shader;
+ Camera cam {terrain.getExtents().min + GlobalPosition3D {0, 0, 10000}, 45.F, 1.F, 1, 10000};
+ cam.setForward(::north + ::east);
+
+ for (auto _ : state) {
+ terrain.render(shader, cam);
+ }
+ }
}
BENCHMARK(terrainMeshgen);
+BENCHMARK(terrainRender);
BENCHMARK_MAIN();
diff --git a/test/test-assetFactory.cpp b/test/test-assetFactory.cpp
index 6036721..9bade82 100644
--- a/test/test-assetFactory.cpp
+++ b/test/test-assetFactory.cpp
@@ -38,10 +38,10 @@ public:
}
void
- content(const SceneShader & shader) const override
+ content(const SceneShader & shader, const Frustum & frustum) const override
{
shader.basic.use(Location {{0, 0, 0}, {0, 0, 0}});
- objects.apply(&Renderable::render, shader);
+ objects.apply(&Renderable::render, shader, frustum);
}
void
@@ -58,10 +58,10 @@ public:
}
void
- shadows(const ShadowMapper & mapper) const override
+ shadows(const ShadowMapper & mapper, const Frustum & frustum) const override
{
mapper.dynamicPoint.use(Location {{0, 0, 0}, {0, 0, 0}});
- objects.apply(&Renderable::shadows, mapper);
+ objects.apply(&Renderable::shadows, mapper, frustum);
}
void
diff --git a/test/test-geoData.cpp b/test/test-geoData.cpp
index 2332513..e3ef9ad 100644
--- a/test/test-geoData.cpp
+++ b/test/test-geoData.cpp
@@ -255,9 +255,9 @@ BOOST_DATA_TEST_CASE(deform, loadFixtureJson<DeformTerrainData>("geoData/deform/
const Terrain terrain;
void
- content(const SceneShader & shader) const override
+ content(const SceneShader & shader, const Frustum & frustum) const override
{
- terrain.render(shader);
+ terrain.render(shader, frustum);
}
void
@@ -273,9 +273,9 @@ BOOST_DATA_TEST_CASE(deform, loadFixtureJson<DeformTerrainData>("geoData/deform/
}
void
- shadows(const ShadowMapper & shadowMapper) const override
+ shadows(const ShadowMapper & shadowMapper, const Frustum & frustum) const override
{
- terrain.shadows(shadowMapper);
+ terrain.shadows(shadowMapper, frustum);
}
};
diff --git a/test/test-lib.cpp b/test/test-lib.cpp
index 17c0f63..ec91f6e 100644
--- a/test/test-lib.cpp
+++ b/test/test-lib.cpp
@@ -6,6 +6,7 @@
#include <stream_support.h>
#include <collections.h>
+#include <gfx/aabb.h>
#include <glArrays.h>
#include <glad/gl.h>
#include <set>
@@ -110,3 +111,14 @@ BOOST_DATA_TEST_CASE(mergeCloseInts,
tolerance)));
BOOST_CHECK_EQUAL_COLCOL(mutableCollection, expected);
}
+
+BOOST_AUTO_TEST_CASE(aabb_from_points)
+{
+ const auto aabb = AxisAlignedBoundingBox<GlobalDistance>::fromPoints(std::vector<GlobalPosition3D> {
+ {1, 2, 3},
+ {4, 2, 1},
+ {9, 1, 7},
+ });
+ BOOST_CHECK_EQUAL(aabb.min, GlobalPosition3D(1, 1, 1));
+ BOOST_CHECK_EQUAL(aabb.max, GlobalPosition3D(9, 2, 7));
+}
diff --git a/test/test-maths.cpp b/test/test-maths.cpp
index a6b780a..6f1f030 100644
--- a/test/test-maths.cpp
+++ b/test/test-maths.cpp
@@ -9,7 +9,7 @@
#include <type_traits>
#include <game/network/link.h>
-#include <gfx/gl/camera.h>
+#include <gfx/camera.h>
#include <glm/glm.hpp>
#include <maths.h>
#include <triangle.h>
diff --git a/test/test-network.cpp b/test/test-network.cpp
index e7419b5..51fea8b 100644
--- a/test/test-network.cpp
+++ b/test/test-network.cpp
@@ -70,7 +70,7 @@ struct TestNetwork : public NetworkOf<TestLink, TestLinkS> {
}
void
- render(const SceneShader &) const override
+ render(const SceneShader &, const Frustum &) const override
{
}
diff --git a/test/test-render.cpp b/test/test-render.cpp
index 3c453bd..8390d25 100644
--- a/test/test-render.cpp
+++ b/test/test-render.cpp
@@ -38,6 +38,8 @@ class TestScene : public SceneProvider {
public:
TestScene()
{
+ terrain->point(GeoData::VertexHandle {517}).z = 100'000;
+ terrain->generateMeshes();
gameState->assets = AssetFactory::loadAll(RESDIR);
brush47rvc = std::dynamic_pointer_cast<RailVehicleClass>(gameState->assets.at("brush-47"));
std::random_device randomdev {};
@@ -68,14 +70,14 @@ public:
}
void
- content(const SceneShader & shader) const override
+ content(const SceneShader & shader, const Frustum & frustum) const override
{
- terrain->render(shader);
- water.render(shader);
- rail.render(shader);
- std::ranges::for_each(gameState->assets, [&shader](const auto & asset) {
+ terrain->render(shader, frustum);
+ water.render(shader, frustum);
+ rail.render(shader, frustum);
+ std::ranges::for_each(gameState->assets, [&shader, &frustum](const auto & asset) {
if (const auto renderable = std::dynamic_pointer_cast<const Renderable>(asset.second)) {
- renderable->render(shader);
+ renderable->render(shader, frustum);
}
});
}
@@ -92,12 +94,12 @@ public:
}
void
- shadows(const ShadowMapper & shadowMapper) const override
+ shadows(const ShadowMapper & shadowMapper, const Frustum & frustum) const override
{
- terrain->shadows(shadowMapper);
- std::ranges::for_each(gameState->assets, [&shadowMapper](const auto & asset) {
+ terrain->shadows(shadowMapper, frustum);
+ std::ranges::for_each(gameState->assets, [&shadowMapper, &frustum](const auto & asset) {
if (const auto renderable = std::dynamic_pointer_cast<const Renderable>(asset.second)) {
- renderable->shadows(shadowMapper);
+ renderable->shadows(shadowMapper, frustum);
}
});
}
@@ -171,10 +173,10 @@ BOOST_AUTO_TEST_CASE(terrain)
Water water {terrain};
void
- content(const SceneShader & shader) const override
+ content(const SceneShader & shader, const Frustum & frustum) const override
{
- terrain->render(shader);
- water.render(shader);
+ terrain->render(shader, frustum);
+ water.render(shader, frustum);
}
void
@@ -190,9 +192,9 @@ BOOST_AUTO_TEST_CASE(terrain)
}
void
- shadows(const ShadowMapper & shadowMapper) const override
+ shadows(const ShadowMapper & shadowMapper, const Frustum & frustum) const override
{
- terrain->shadows(shadowMapper);
+ terrain->shadows(shadowMapper, frustum);
}
};
@@ -219,9 +221,9 @@ BOOST_AUTO_TEST_CASE(railnet)
}
void
- content(const SceneShader & shader) const override
+ content(const SceneShader & shader, const Frustum & frustum) const override
{
- net.render(shader);
+ net.render(shader, frustum);
}
void
@@ -237,7 +239,7 @@ BOOST_AUTO_TEST_CASE(railnet)
}
void
- shadows(const ShadowMapper &) const override
+ shadows(const ShadowMapper &, const Frustum &) const override
{
}
};