diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/Jamfile.jam | 3 | ||||
-rw-r--r-- | test/perf-terrain.cpp | 17 | ||||
-rw-r--r-- | test/test-assetFactory.cpp | 8 | ||||
-rw-r--r-- | test/test-geoData.cpp | 8 | ||||
-rw-r--r-- | test/test-lib.cpp | 12 | ||||
-rw-r--r-- | test/test-maths.cpp | 2 | ||||
-rw-r--r-- | test/test-network.cpp | 2 | ||||
-rw-r--r-- | test/test-render.cpp | 38 |
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 { } }; |