3
0

FastNoiseBenchmarks.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #ifdef HAVE_BENCHMARK
  9. #include <AzTest/AzTest.h>
  10. #include <AzCore/Math/Vector3.h>
  11. #include <FastNoiseGradientComponent.h>
  12. #include <FastNoiseTest.h>
  13. #include <GradientSignalTestHelpers.h>
  14. #include <GradientSignal/Components/GradientTransformComponent.h>
  15. #include <GradientSignal/Ebuses/GradientRequestBus.h>
  16. #include <GradientSignal/Ebuses/GradientTransformModifierRequestBus.h>
  17. #include <GradientSignal/GradientSampler.h>
  18. #include <LmbrCentral/Shape/BoxShapeComponentBus.h>
  19. namespace UnitTest
  20. {
  21. class FastNoiseGetValues
  22. : public ::benchmark::Fixture
  23. {
  24. public:
  25. void RunGetValueOrGetValuesBenchmark(benchmark::State& state, FastNoise::NoiseType noiseType)
  26. {
  27. AZ::Entity* noiseEntity = aznew AZ::Entity("noise_entity");
  28. ASSERT_TRUE(noiseEntity != nullptr);
  29. noiseEntity->CreateComponent<AzFramework::TransformComponent>();
  30. noiseEntity->CreateComponent(LmbrCentral::BoxShapeComponentTypeId);
  31. noiseEntity->CreateComponent<GradientSignal::GradientTransformComponent>();
  32. // Set up a FastNoise component with the requested noise type
  33. FastNoiseGem::FastNoiseGradientConfig cfg;
  34. cfg.m_frequency = 0.01f;
  35. cfg.m_noiseType = noiseType;
  36. noiseEntity->CreateComponent<FastNoiseGem::FastNoiseGradientComponent>(cfg);
  37. noiseEntity->Init();
  38. noiseEntity->Activate();
  39. UnitTest::GradientSignalTestHelpers::RunGetValueOrGetValuesBenchmark(state, noiseEntity->GetId());
  40. }
  41. };
  42. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_Value)(benchmark::State& state)
  43. {
  44. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::Value);
  45. }
  46. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_ValueFractal)(benchmark::State& state)
  47. {
  48. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::ValueFractal);
  49. }
  50. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_Perlin)(benchmark::State& state)
  51. {
  52. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::Perlin);
  53. }
  54. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_PerlinFractal)(benchmark::State& state)
  55. {
  56. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::PerlinFractal);
  57. }
  58. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_Simplex)(benchmark::State& state)
  59. {
  60. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::Simplex);
  61. }
  62. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_SimplexFractal)(benchmark::State& state)
  63. {
  64. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::SimplexFractal);
  65. }
  66. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_Cellular)(benchmark::State& state)
  67. {
  68. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::Cellular);
  69. }
  70. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_WhiteNoise)(benchmark::State& state)
  71. {
  72. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::WhiteNoise);
  73. }
  74. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_Cubic)(benchmark::State& state)
  75. {
  76. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::Cubic);
  77. }
  78. BENCHMARK_DEFINE_F(FastNoiseGetValues, BM_FastNoiseGradient_CubicFractal)(benchmark::State& state)
  79. {
  80. RunGetValueOrGetValuesBenchmark(state, FastNoise::NoiseType::CubicFractal);
  81. }
  82. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_Value);
  83. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_ValueFractal);
  84. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_Perlin);
  85. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_PerlinFractal);
  86. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_Simplex);
  87. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_SimplexFractal);
  88. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_Cellular);
  89. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_WhiteNoise);
  90. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_Cubic);
  91. GRADIENT_SIGNAL_GET_VALUES_BENCHMARK_REGISTER_F(FastNoiseGetValues, BM_FastNoiseGradient_CubicFractal);
  92. #endif
  93. }