From 2842719a9d6f385852d90c0046b90e694be8f818 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 19 Jan 2024 02:10:39 +0000 Subject: Add rail network render test --- test/test-render.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'test') diff --git a/test/test-render.cpp b/test/test-render.cpp index 41731dd..19261fe 100644 --- a/test/test-render.cpp +++ b/test/test-render.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -158,4 +159,46 @@ BOOST_AUTO_TEST_CASE(terrain) Texture::save(outImage, "/tmp/terrain.tga"); } +BOOST_AUTO_TEST_CASE(railnet) +{ + SceneRenderer ss {size, output}; + ss.camera.setView({0, 0, 10000}, glm::normalize(glm::vec3 {1, 1, -0.5F})); + + class TestRail : public SceneProvider { + RailLinks net; + + public: + TestRail() + { + net.addLinksBetween({10000, 10000, 0}, {100000, 100000, 0}); + } + + void + content(const SceneShader & shader) const override + { + net.render(shader); + } + + void + environment(const SceneShader &, const SceneRenderer & sr) const override + { + sr.setAmbientLight({0.1, 0.1, 0.1}); + sr.setDirectionalLight({1, 1, 1}, south + down, *this); + } + + void + lights(const SceneShader &) const override + { + } + + void + shadows(const ShadowMapper &) const override + { + } + }; + + ss.render(TestRail {}); + Texture::save(outImage, "/tmp/railnet.tga"); +} + BOOST_AUTO_TEST_SUITE_END(); -- cgit v1.2.3 From 1e43d23ae40282ef9c4047c77b7994527ee95b38 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Jan 2024 12:57:55 +0000 Subject: Add mail rail network to render test, include curves --- test/test-render.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/test-render.cpp b/test/test-render.cpp index 19261fe..cc2bba2 100644 --- a/test/test-render.cpp +++ b/test/test-render.cpp @@ -170,7 +170,11 @@ BOOST_AUTO_TEST_CASE(railnet) public: TestRail() { - net.addLinksBetween({10000, 10000, 0}, {100000, 100000, 0}); + net.addLinksBetween({20000, 10000, 0}, {100000, 100000, 0}); + net.addLinksBetween({20000, 10000, 0}, {10000, 10000, 0}); + net.addLinksBetween({10000, 20000, 0}, {100000, 120000, 0}); + net.addLinksBetween({10000, 20000, 0}, {10000, 10000, 0}); + net.addLinksBetween({100000, 100000, 0}, {100000, 120000, 0}); } void -- cgit v1.2.3 From a6e28fe377b41500d6ce3e0a9a4d6e6288d97f61 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 17 Jan 2024 01:08:54 +0000 Subject: Copy render vital link data to vertex buffer --- test/test-network.cpp | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'test') diff --git a/test/test-network.cpp b/test/test-network.cpp index 0274b00..dbc184d 100644 --- a/test/test-network.cpp +++ b/test/test-network.cpp @@ -23,25 +23,37 @@ BOOST_GLOBAL_FIXTURE(ApplicationBase); BOOST_GLOBAL_FIXTURE(TestMainWindow); -struct TestLink : public LinkStraight { - TestLink(const Node::Ptr & a, const Node::Ptr & b) : TestLink {a, b, (a->pos - b->pos)} { } +struct TestLinkS; - TestLink(Node::Ptr a, Node::Ptr b, RelativePosition2D l) : +struct TestLink : public virtual Link { + using StraightLink = TestLinkS; + using CurveLink = TestLinkS; +}; + +struct TestLinkS : public TestLink, public LinkStraight { + TestLinkS(NetworkLinkHolder & network, const Node::Ptr & a, const Node::Ptr & b) : + TestLinkS {network, a, b, (a->pos - b->pos)} + { + } + + TestLinkS(NetworkLinkHolder &, Node::Ptr a, Node::Ptr b, RelativePosition2D l) : Link {{std::move(a), 0}, {std::move(b), pi}, glm::length(l)} { } - TestLink(Node::Ptr a, Node::Ptr b, float l) : Link {{std::move(a), 0}, {std::move(b), pi}, l} { } + struct Vertex { }; - using StraightLink = TestLink; - using CurveLink = TestLink; + TestLinkS(NetworkLinkHolder &, Node::Ptr a, Node::Ptr b, float l) : + Link {{std::move(a), 0}, {std::move(b), pi}, l} + { + } }; constexpr GlobalPosition3D p000 {0, 0, 0}, p100 {10000, 0, 0}, p200 {20000, 0, 0}, p300 {30000, 0, 0}; constexpr GlobalPosition3D p110 {10000, 10000, 0}; -struct TestNetwork : public NetworkOf { - TestNetwork() : NetworkOf {RESDIR "rails.jpg"} +struct TestNetwork : public NetworkOf { + TestNetwork() : NetworkOf {RESDIR "rails.jpg"} { // 0 1 2 // p000 <-> p100 <-> p200 <-> p300 @@ -49,12 +61,12 @@ struct TestNetwork : public NetworkOf { // \ 5 / // 3 | 4 // \-> p110 <-/ - addLink(p000, p100, 1.F); - addLink(p100, p200, 1.F); - addLink(p200, p300, 1.F); - addLink(p000, p110, 2.F); - addLink(p200, p110, 2.F); - addLink(p100, p110, 1.F); + addLink(p000, p100, 1.F); + addLink(p100, p200, 1.F); + addLink(p200, p300, 1.F); + addLink(p000, p110, 2.F); + addLink(p200, p110, 2.F); + addLink(p100, p110, 1.F); } }; -- cgit v1.2.3 From c7af64b7061c59c987958d0830838f1c05caeb29 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 19 Jan 2024 00:23:56 +0000 Subject: Render rail network using new shaders Non-functional, totally unimplemented at this stage --- test/test-network.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'test') diff --git a/test/test-network.cpp b/test/test-network.cpp index dbc184d..df61b94 100644 --- a/test/test-network.cpp +++ b/test/test-network.cpp @@ -68,6 +68,11 @@ struct TestNetwork : public NetworkOf { addLink(p200, p110, 2.F); addLink(p100, p110, 1.F); } + + void + render(const SceneShader &) const override + { + } }; const auto VALID_NODES = boost::unit_test::data::make({ -- cgit v1.2.3 From 538af692b66e67dfa4f347cc9ddd784a36f9a991 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Jan 2024 01:23:53 +0000 Subject: Update network with vertex array --- test/test-network.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test') diff --git a/test/test-network.cpp b/test/test-network.cpp index df61b94..174e2a5 100644 --- a/test/test-network.cpp +++ b/test/test-network.cpp @@ -52,6 +52,8 @@ struct TestLinkS : public TestLink, public LinkStraight { constexpr GlobalPosition3D p000 {0, 0, 0}, p100 {10000, 0, 0}, p200 {20000, 0, 0}, p300 {30000, 0, 0}; constexpr GlobalPosition3D p110 {10000, 10000, 0}; +template<> NetworkLinkHolder::NetworkLinkHolder() = default; + struct TestNetwork : public NetworkOf { TestNetwork() : NetworkOf {RESDIR "rails.jpg"} { -- cgit v1.2.3 From d392262db761f66b43589c7e7ce4accef4330154 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 21 Jan 2024 01:31:16 +0000 Subject: Fix includes in test glCtxtBhvr --- test/test-glContextBhvr.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'test') diff --git a/test/test-glContextBhvr.cpp b/test/test-glContextBhvr.cpp index 26b45d9..ec5cc21 100644 --- a/test/test-glContextBhvr.cpp +++ b/test/test-glContextBhvr.cpp @@ -1,10 +1,9 @@ #define BOOST_TEST_MODULE test_glcontextbehaviour - -#include "testHelpers.h" #include #include #include +#include #include #include -- cgit v1.2.3 From 8391c63472641c67f59723d0a6706efff6fb17d4 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 23 Jan 2024 23:50:46 +0000 Subject: Fix network population of position in gBuffer Adds some rails to the basic test highlighting broken shadows --- test/test-render.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'test') diff --git a/test/test-render.cpp b/test/test-render.cpp index cc2bba2..6c20a23 100644 --- a/test/test-render.cpp +++ b/test/test-render.cpp @@ -25,6 +25,7 @@ class TestScene : public SceneProvider { const RailVehicleClassPtr brush47rvc = std::dynamic_pointer_cast( AssetFactory::loadXML(RESDIR "/brush47.xml")->assets.at("brush-47")); std::shared_ptr train1, train2; + RailLinks rail; Terrain terrain {[]() { auto gd = std::make_shared(GeoData::createFlat({0, 0}, {1000000, 1000000}, 1)); @@ -42,6 +43,8 @@ public: train2->location.setPosition({52000, 30000, 2000}); train2->bogies.front().setPosition(train2->bogies.front().position() + train2->location.position()); train2->bogies.back().setPosition(train2->bogies.back().position() + train2->location.position()); + rail.addLinksBetween({42000, 50000, 1000}, {65000, 50000, 1000}); + rail.addLinksBetween({65000, 50000, 1000}, {75000, 45000, 2000}); } void @@ -49,6 +52,7 @@ public: { terrain.render(shader); brush47rvc->render(shader); + rail.render(shader); } void -- cgit v1.2.3