From 29e8cfd4a72c248583ea9482864c016bb20f40f8 Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Thu, 10 Nov 2016 12:49:21 +0100 Subject: [PATCH] test stability of worley noise generator --- tst/rand/StabilityTest.cpp | 35 +++++++++++++++++++++++++++++++++++ tst/rand/StabilityTest.hpp | 8 ++++++++ 2 files changed, 43 insertions(+) diff --git a/tst/rand/StabilityTest.cpp b/tst/rand/StabilityTest.cpp index 5794337..4aab3eb 100644 --- a/tst/rand/StabilityTest.cpp +++ b/tst/rand/StabilityTest.cpp @@ -2,6 +2,7 @@ #include "rand/GaloisLFSR.hpp" #include "rand/SimplexNoise.hpp" +#include "rand/WorleyNoise.hpp" #include #include @@ -251,6 +252,27 @@ void StabilityTest::testSimplex() { Assert(noise, glm::vec3(-1.0f, -1.0f, -1.0f), 0.0f); } +void StabilityTest::testWorley() { + WorleyNoise noise(0); + + Assert(noise, glm::vec3(0.0f, 0.0f, 0.0f), -0.117765009403229f); + Assert(noise, glm::vec3(0.0f, 0.0f, 1.0f), -0.209876894950867f); + Assert(noise, glm::vec3(0.0f, 1.0f, 0.0f), -0.290086328983307f); + Assert(noise, glm::vec3(0.0f, 1.0f, 1.0f), -0.332393705844879f); + Assert(noise, glm::vec3(1.0f, 0.0f, 0.0f), -0.621925830841064f); + Assert(noise, glm::vec3(1.0f, 0.0f, 1.0f), -0.338455379009247f); + Assert(noise, glm::vec3(1.0f, 1.0f, 0.0f), -0.386664032936096f); + Assert(noise, glm::vec3(1.0f, 1.0f, 1.0f), -0.533940434455872f); + + Assert(noise, glm::vec3( 0.0f, 0.0f, -1.0f), -0.425480604171753f); + Assert(noise, glm::vec3( 0.0f, -1.0f, 0.0f), -0.189745843410492f); + Assert(noise, glm::vec3( 0.0f, -1.0f, -1.0f), -0.30408102273941f); + Assert(noise, glm::vec3(-1.0f, 0.0f, 0.0f), -0.618566155433655f); + Assert(noise, glm::vec3(-1.0f, 0.0f, -1.0f), -0.060045599937439f); + Assert(noise, glm::vec3(-1.0f, -1.0f, 0.0f), -0.366827547550201f); + Assert(noise, glm::vec3(-1.0f, -1.0f, -1.0f), -0.575981974601746f); +} + void StabilityTest::Assert( const SimplexNoise &noise, const glm::vec3 &position, @@ -264,5 +286,18 @@ void StabilityTest::Assert( ); } +void StabilityTest::Assert( + const WorleyNoise &noise, + const glm::vec3 &position, + float expected +) { + stringstream msg; + msg << "unexpected worley noise value at " << position; + CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( + msg.str(), + expected, noise(position), numeric_limits::epsilon() + ); +} + } } diff --git a/tst/rand/StabilityTest.hpp b/tst/rand/StabilityTest.hpp index b2ee1ae..acc6741 100644 --- a/tst/rand/StabilityTest.hpp +++ b/tst/rand/StabilityTest.hpp @@ -10,6 +10,7 @@ namespace blank { class SimplexNoise; +class WorleyNoise; namespace test { @@ -20,6 +21,7 @@ CPPUNIT_TEST_SUITE(StabilityTest); CPPUNIT_TEST(testRNG); CPPUNIT_TEST(testSimplex); +CPPUNIT_TEST(testWorley); CPPUNIT_TEST_SUITE_END(); @@ -29,12 +31,18 @@ public: void testRNG(); void testSimplex(); + void testWorley(); static void Assert( const SimplexNoise &noise, const glm::vec3 &position, float expected); + static void Assert( + const WorleyNoise &noise, + const glm::vec3 &position, + float expected); + }; } -- 2.39.2