X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnoise.hpp;h=cbfd48ee441ad62722490a8f51e4c4150a58484a;hb=1121e49e7cad94ce4efd0a02c72a44469c81494e;hp=26e37668b00f609fdfd2747a2ed6a3e044031729;hpb=7ef94f4e55a0b798eecbcc7166a80b8364b21ea4;p=blank.git diff --git a/src/noise.hpp b/src/noise.hpp index 26e3766..cbfd48e 100644 --- a/src/noise.hpp +++ b/src/noise.hpp @@ -12,20 +12,20 @@ class GaloisLFSR { public: // seed should be non-zero - explicit GaloisLFSR(std::uint64_t seed); + explicit GaloisLFSR(std::uint64_t seed) noexcept; // get the next bit - bool operator ()(); + bool operator ()() noexcept; template - void operator ()(T &out) { + T operator ()(T &out) noexcept { constexpr int num_bits = std::numeric_limits::digits + std::numeric_limits::is_signed; for (int i = 0; i < num_bits; ++i) { operator ()(); } - out = static_cast(state); + return out = static_cast(state); } private: @@ -40,16 +40,18 @@ private: class SimplexNoise { public: - explicit SimplexNoise(unsigned int seed); + explicit SimplexNoise(unsigned int seed) noexcept; - float operator ()(const glm::vec3 &) const; + float operator ()(const glm::vec3 &) const noexcept; private: - unsigned char Perm(size_t idx) const; - const glm::vec3 &Grad(size_t idx) const; + int Perm(int idx) const noexcept; + int Perm12(int idx) const noexcept; + const glm::vec3 &Grad(int idx) const noexcept; private: - unsigned char perm[512]; + int perm[512]; + int perm12[512]; glm::vec3 grad[12]; }; @@ -59,9 +61,9 @@ private: class WorleyNoise { public: - explicit WorleyNoise(unsigned int seed); + explicit WorleyNoise(unsigned int seed) noexcept; - float operator ()(const glm::vec3 &) const; + float operator ()(const glm::vec3 &) const noexcept; private: const unsigned int seed;