terraingenpy 0.1.1.dev17__tar.gz → 0.1.1.dev23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (816) hide show
  1. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/CHANGELOG.md +6 -0
  2. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/CMakeLists.txt +1 -1
  3. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/PKG-INFO +4 -2
  4. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/README.md +3 -1
  5. terraingenpy-0.1.1.dev23/assets/textures/README.md +14 -0
  6. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_ao_2k.png +3 -0
  7. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_arm_2k.png +3 -0
  8. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_diff_2k.png +3 -0
  9. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_disp_2k.png +3 -0
  10. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_nor_dx_2k.exr +3 -0
  11. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_nor_gl_2k.exr +3 -0
  12. terraingenpy-0.1.1.dev23/assets/textures/seaside_rock_rough_2k.exr +3 -0
  13. terraingenpy-0.1.1.dev23/docs/images/hero_mk1_sn101_connecting_ridge.jpg +0 -0
  14. terraingenpy-0.1.1.dev23/examples/config/albedo/example_albedo_rocks_and_slopes.json +76 -0
  15. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/CMakeLists.txt +2 -0
  16. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/albedo.cpp +6 -2
  17. terraingenpy-0.1.1.dev23/terraingen/albedo/rock_albedo.cpp +134 -0
  18. terraingenpy-0.1.1.dev23/terraingen/albedo/rock_albedo.h +72 -0
  19. terraingenpy-0.1.1.dev23/terraingen/albedo/slope_albedo.cpp +167 -0
  20. terraingenpy-0.1.1.dev23/terraingen/albedo/slope_albedo.h +74 -0
  21. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/cli.cpp +6 -4
  22. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/build.cpp +28 -0
  23. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/config.h +21 -1
  24. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/albedo.h +50 -0
  25. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/generate.cpp +112 -14
  26. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/json.cpp +16 -0
  27. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/json.h +3 -0
  28. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/validate.cpp +36 -15
  29. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/CMakeLists.txt +1 -0
  30. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/abundance.cpp +82 -6
  31. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_layer.cpp +133 -42
  32. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_layer.h +62 -7
  33. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_models.cpp +7 -4
  34. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_shape.cpp +7 -1
  35. terraingenpy-0.1.1.dev23/terraingen/layers/boulders/ejecta_index.cpp +90 -0
  36. terraingenpy-0.1.1.dev23/terraingen/layers/boulders/ejecta_index.h +46 -0
  37. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater_layer.cpp +3 -0
  38. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/population.cpp +9 -9
  39. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/apply.cpp +66 -26
  40. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/apply.h +2 -0
  41. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/ground.h +11 -0
  42. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/terrain.cpp +91 -24
  43. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/terrain.h +9 -0
  44. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/albedo.cpp +85 -0
  45. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/boulders.cpp +12 -0
  46. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/CMakeLists.txt +3 -2
  47. terraingenpy-0.1.1.dev23/tests/benchmark/bench_boulders.cpp +26 -0
  48. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_albedo.py +24 -0
  49. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/albedo/CMakeLists.txt +2 -0
  50. terraingenpy-0.1.1.dev23/tests/unit/albedo/rock_albedo_test.cpp +158 -0
  51. terraingenpy-0.1.1.dev23/tests/unit/albedo/slope_albedo_test.cpp +113 -0
  52. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/cli_test.cpp +1 -1
  53. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/build_test.cpp +12 -0
  54. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/generate_terrain_test.cpp +20 -0
  55. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/json_io_test.cpp +8 -1
  56. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/schema_test.cpp +11 -0
  57. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/validate_config_test.cpp +24 -0
  58. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/write_outputs_test.cpp +12 -0
  59. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/CMakeLists.txt +1 -0
  60. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/boulders/boulder_layer_test.cpp +54 -0
  61. terraingenpy-0.1.1.dev23/tests/unit/layers/boulders/ejecta_index_test.cpp +61 -0
  62. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/generation/population_test.cpp +22 -22
  63. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/slope_test.cpp +46 -0
  64. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/terrain_test.cpp +44 -0
  65. terraingenpy-0.1.1.dev17/assets/textures/README.md +0 -10
  66. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.clang-format +0 -0
  67. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.clang-tidy +0 -0
  68. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.cmake-format.yaml +0 -0
  69. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.dockerignore +0 -0
  70. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.gitattributes +0 -0
  71. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  72. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  73. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  74. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/pull_request_template.md +0 -0
  75. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/scripts/install-lavapipe-windows.sh +0 -0
  76. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.github/workflows/ci.yml +0 -0
  77. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.gitignore +0 -0
  78. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/.pre-commit-config.yaml +0 -0
  79. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/CITATION.cff +0 -0
  80. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/CONTRIBUTING.md +0 -0
  81. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/Dockerfile +0 -0
  82. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/LICENSE +0 -0
  83. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/assets/textures/moon_01_diff_4k.jpg +0 -0
  84. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/assets/textures/moon_01_disp_4k.png +0 -0
  85. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
  86. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/assets/textures/moon_01_rough_4k.exr +0 -0
  87. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/BuildInfo.cmake +0 -0
  88. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/CoverageBadge.cmake +0 -0
  89. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/EmbedFile.cmake +0 -0
  90. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/Kernel.cpp.in +0 -0
  91. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/TerrainGenPackaging.cmake +0 -0
  92. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/TerrainGenSlang.cmake +0 -0
  93. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/TerrainGenTesting.cmake +0 -0
  94. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/terraingenConfig.cmake.in +0 -0
  95. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/benchmark.cmake +0 -0
  96. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/ernie.cmake +0 -0
  97. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/googletest.cmake +0 -0
  98. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/mesh_formats.cmake +0 -0
  99. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/miniz.cmake +0 -0
  100. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/nanobind.cmake +0 -0
  101. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/nvrtc.cmake +0 -0
  102. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/slang.cmake +0 -0
  103. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/volk.cmake +0 -0
  104. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/cmake/third_party/vulkan_headers.cmake +0 -0
  105. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/.gitignore +0 -0
  106. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/Makefile +0 -0
  107. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/README.md +0 -0
  108. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/api/cpp.md +0 -0
  109. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/api/python.md +0 -0
  110. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/concepts/index.md +0 -0
  111. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/css/extra.css +0 -0
  112. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/getting-started/command-line.md +0 -0
  113. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/getting-started/gui.md +0 -0
  114. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/getting-started/index.md +0 -0
  115. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/getting-started/installation.md +0 -0
  116. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/getting-started/quickstart.md +0 -0
  117. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/guides/index.md +0 -0
  118. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/index.md +0 -0
  119. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/overrides/home.html +0 -0
  120. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/overrides/partials/header.html +0 -0
  121. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/requirements.txt +0 -0
  122. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/scripts/generate_schema.py +0 -0
  123. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/docs/validation/index.md +0 -0
  124. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/README.md +0 -0
  125. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/ages/example_ages_fresh.json +0 -0
  126. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/ages/example_ages_steady_state.json +0 -0
  127. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/ages/example_ages_uniform.json +0 -0
  128. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
  129. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
  130. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
  131. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_moon_site.json +0 -0
  132. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_new_crater.json +0 -0
  133. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
  134. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_rgb.json +0 -0
  135. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/albedo/example_albedo_synthetic.json +0 -0
  136. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_buried.json +0 -0
  137. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_ejecta.json +0 -0
  138. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_exposure.json +0 -0
  139. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_fragments.json +0 -0
  140. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_layer.json +0 -0
  141. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_max_slope.json +0 -0
  142. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_models.json +0 -0
  143. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_patches.json +0 -0
  144. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_rock_abundance.json +0 -0
  145. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_rolling.json +0 -0
  146. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_scene.json +0 -0
  147. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_shapes.json +0 -0
  148. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_slope_map.json +0 -0
  149. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_sp8023.json +0 -0
  150. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/boulders/example_boulders_thomas_clusters.json +0 -0
  151. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_catalog_and_map.json +0 -0
  152. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_datum.json +0 -0
  153. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
  154. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_degradation_none.json +0 -0
  155. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_interior_replacement.json +0 -0
  156. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_irregular.json +0 -0
  157. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_manual.json +0 -0
  158. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_max_craters.json +0 -0
  159. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_profile_complex.json +0 -0
  160. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
  161. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
  162. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_secondaries.json +0 -0
  163. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_secondary_rays.json +0 -0
  164. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_simple.json +0 -0
  165. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_slopes.json +0 -0
  166. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
  167. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_spacing.json +0 -0
  168. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_texture.json +0 -0
  169. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/craters/example_craters_wall_marks.json +0 -0
  170. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
  171. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
  172. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -0
  173. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_power_law.json +0 -0
  174. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_tabulated.json +0 -0
  175. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
  176. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/distributions/example_distributions_viper.json +0 -0
  177. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/layers/example_layers_regions.json +0 -0
  178. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/layers/example_layers_roughness.json +0 -0
  179. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
  180. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
  181. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
  182. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_craters.json +0 -0
  183. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_dunes.json +0 -0
  184. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_exposure.json +0 -0
  185. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_pavement.json +0 -0
  186. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
  187. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
  188. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_strata.json +0 -0
  189. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
  190. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_mercury_site.json +0 -0
  191. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
  192. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/planets/example_planets_moon_site.json +0 -0
  193. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_billow.json +0 -0
  194. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_cellular.json +0 -0
  195. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
  196. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_fbm.json +0 -0
  197. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_layered.json +0 -0
  198. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_ridged.json +0 -0
  199. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_roughness.json +0 -0
  200. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/config/terrain/example_terrain_voronoi.json +0 -0
  201. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/CMakeLists.txt +0 -0
  202. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/ages/example_ages_models.cpp +0 -0
  203. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
  204. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
  205. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
  206. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
  207. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/browser.cpp +0 -0
  208. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/browser.h +0 -0
  209. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/example.cpp +0 -0
  210. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/example.h +0 -0
  211. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/main.cpp +0 -0
  212. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/common/standalone_main.cpp +0 -0
  213. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/config/example_config_load.cpp +0 -0
  214. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
  215. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/craters/example_craters_manual.cpp +0 -0
  216. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
  217. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
  218. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/craters/example_craters_simple.cpp +0 -0
  219. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
  220. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/layers/example_layers_custom.cpp +0 -0
  221. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/layers/example_layers_regions.cpp +0 -0
  222. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/planets/example_planets_moon.cpp +0 -0
  223. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
  224. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
  225. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
  226. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
  227. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
  228. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
  229. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/__main__.py +0 -0
  230. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/_browser.py +0 -0
  231. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/_common.py +0 -0
  232. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/_harness.py +0 -0
  233. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/_images.py +0 -0
  234. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/ages/example_ages_models.py +0 -0
  235. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
  236. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/albedo/example_albedo_moon_site.py +0 -0
  237. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/albedo/example_albedo_options.py +0 -0
  238. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/boulders/example_boulders_exposure.py +0 -0
  239. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/boulders/example_boulders_layer.py +0 -0
  240. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/boulders/example_boulders_positioning.py +0 -0
  241. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/boulders/example_boulders_shapes.py +0 -0
  242. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/boulders/example_boulders_size_models.py +0 -0
  243. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/config/example_config_load.py +0 -0
  244. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_age_sweep.py +0 -0
  245. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_apply_options.py +0 -0
  246. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_degradation.py +0 -0
  247. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_irregularity.py +0 -0
  248. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_manual.py +0 -0
  249. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_positioning.py +0 -0
  250. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_profiles.py +0 -0
  251. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
  252. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_secondaries.py +0 -0
  253. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/craters/example_craters_simple.py +0 -0
  254. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/distributions/example_distributions_csfd.py +0 -0
  255. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/distributions/example_distributions_custom.py +0 -0
  256. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/layers/example_layers_custom.py +0 -0
  257. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/layers/example_layers_regions.py +0 -0
  258. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_body_mesh.py +0 -0
  259. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_mars.py +0 -0
  260. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_mars_dunes.py +0 -0
  261. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_mars_exposure.py +0 -0
  262. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_mercury.py +0 -0
  263. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/planets/example_planets_moon_site.py +0 -0
  264. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/sources/example_sources_chain.py +0 -0
  265. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/sources/example_sources_raster_detail.py +0 -0
  266. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/terrain/example_terrain_fbm.py +0 -0
  267. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
  268. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
  269. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/terrain/example_terrain_layered.py +0 -0
  270. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
  271. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
  272. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/tiles/example_tiles_point_queries.py +0 -0
  273. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/tiles/example_tiles_quadtree.py +0 -0
  274. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
  275. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/mkdocs.yml +0 -0
  276. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/pyproject.toml +0 -0
  277. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/CMakeLists.txt +0 -0
  278. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/albedo.h +0 -0
  279. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/blast_zones.cpp +0 -0
  280. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/blast_zones.h +0 -0
  281. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/crater_albedo.cpp +0 -0
  282. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/crater_albedo.h +0 -0
  283. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/maturity.cpp +0 -0
  284. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/maturity.h +0 -0
  285. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/raster_albedo.cpp +0 -0
  286. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/raster_albedo.h +0 -0
  287. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/splotches.cpp +0 -0
  288. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/splotches.h +0 -0
  289. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/synthetic.cpp +0 -0
  290. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/albedo/synthetic.h +0 -0
  291. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/CMakeLists.txt +0 -0
  292. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/cli.h +0 -0
  293. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/CMakeLists.txt +0 -0
  294. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/config_editor.cpp +0 -0
  295. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/config_editor.h +0 -0
  296. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/gui_app.cpp +0 -0
  297. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/gui_app.h +0 -0
  298. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/run.cpp +0 -0
  299. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/run.h +0 -0
  300. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/run_none.cpp +0 -0
  301. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/terrain_scene.cpp +0 -0
  302. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/gui/terrain_scene.h +0 -0
  303. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/app/main.cpp +0 -0
  304. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/CMakeLists.txt +0 -0
  305. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/build.h +0 -0
  306. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/config.cpp +0 -0
  307. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/feature_lists.cpp +0 -0
  308. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/boulders.h +0 -0
  309. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/checks.h +0 -0
  310. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/common.h +0 -0
  311. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/crater_models.h +0 -0
  312. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/craters.h +0 -0
  313. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/enums.h +0 -0
  314. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/fields.h +0 -0
  315. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/json_io.h +0 -0
  316. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/layers.h +0 -0
  317. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/maps.h +0 -0
  318. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/materials.h +0 -0
  319. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/outputs.h +0 -0
  320. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/fields/sources.h +0 -0
  321. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/generate.h +0 -0
  322. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/schema.cpp +0 -0
  323. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/config/validate.h +0 -0
  324. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/CMakeLists.txt +0 -0
  325. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/combined.cpp +0 -0
  326. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/combined.h +0 -0
  327. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/equilibrium.cpp +0 -0
  328. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/equilibrium.h +0 -0
  329. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/golombek_rapp.cpp +0 -0
  330. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/golombek_rapp.h +0 -0
  331. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/ivanov.cpp +0 -0
  332. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/ivanov.h +0 -0
  333. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/log_polynomial.cpp +0 -0
  334. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/log_polynomial.h +0 -0
  335. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/minimum.cpp +0 -0
  336. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/minimum.h +0 -0
  337. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/moore.cpp +0 -0
  338. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/moore.h +0 -0
  339. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/neukum.cpp +0 -0
  340. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/neukum.h +0 -0
  341. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/piecewise_power_law.cpp +0 -0
  342. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/piecewise_power_law.h +0 -0
  343. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/piecewise_uniform.cpp +0 -0
  344. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/piecewise_uniform.h +0 -0
  345. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/power_law.cpp +0 -0
  346. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/power_law.h +0 -0
  347. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/production_surface.cpp +0 -0
  348. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/production_surface.h +0 -0
  349. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/size_frequency.cpp +0 -0
  350. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/size_frequency.h +0 -0
  351. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/sp8023.cpp +0 -0
  352. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/sp8023.h +0 -0
  353. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/spliced.cpp +0 -0
  354. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/spliced.h +0 -0
  355. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/summed.cpp +0 -0
  356. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/summed.h +0 -0
  357. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/synthterrain.cpp +0 -0
  358. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/synthterrain.h +0 -0
  359. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/tabulated.cpp +0 -0
  360. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/tabulated.h +0 -0
  361. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/viper.cpp +0 -0
  362. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/distribution/viper.h +0 -0
  363. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/CMakeLists.txt +0 -0
  364. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/backend.cpp +0 -0
  365. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/backend.h +0 -0
  366. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/cuda.cpp +0 -0
  367. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/cuda.h +0 -0
  368. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/kernel.cpp +0 -0
  369. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/kernel.h +0 -0
  370. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/kernel.slang +0 -0
  371. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/metal.cpp +0 -0
  372. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/metal.h +0 -0
  373. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/program.h +0 -0
  374. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/vulkan.cpp +0 -0
  375. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/gpu/vulkan.h +0 -0
  376. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/bedforms.cpp +0 -0
  377. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/bedforms.h +0 -0
  378. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder.h +0 -0
  379. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
  380. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_fragments.h +0 -0
  381. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_models.h +0 -0
  382. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_options.cpp +0 -0
  383. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_options.h +0 -0
  384. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_placer.h +0 -0
  385. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/boulders/boulder_shape.h +0 -0
  386. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/ages/age_model.cpp +0 -0
  387. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/ages/age_model.h +0 -0
  388. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
  389. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/ages/steady_state.h +0 -0
  390. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater.cpp +0 -0
  391. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater.h +0 -0
  392. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater_layer.h +0 -0
  393. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater_placer.cpp +0 -0
  394. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/crater_placer.h +0 -0
  395. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
  396. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
  397. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/diffusion.cpp +0 -0
  398. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/diffusion.h +0 -0
  399. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
  400. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
  401. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
  402. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/freshness.h +0 -0
  403. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/degradation/state.h +0 -0
  404. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
  405. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/cell_cache.h +0 -0
  406. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/population.h +0 -0
  407. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/spacing.cpp +0 -0
  408. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/generation/spacing.h +0 -0
  409. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/complex.cpp +0 -0
  410. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/complex.h +0 -0
  411. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
  412. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
  413. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
  414. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
  415. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/profiles/profile.h +0 -0
  416. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/rays.cpp +0 -0
  417. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/rays.h +0 -0
  418. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/secondaries.cpp +0 -0
  419. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/secondaries.h +0 -0
  420. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/secondary_model.cpp +0 -0
  421. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/secondary_model.h +0 -0
  422. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
  423. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/apply_options.h +0 -0
  424. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
  425. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/attributes.h +0 -0
  426. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
  427. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
  428. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/datum.cpp +0 -0
  429. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/datum.h +0 -0
  430. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
  431. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/irregularity.h +0 -0
  432. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
  433. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/morphometry.h +0 -0
  434. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
  435. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/prepared.h +0 -0
  436. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/slope.cpp +0 -0
  437. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/craters/shaping/slope.h +0 -0
  438. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/density_map.cpp +0 -0
  439. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/density_map.h +0 -0
  440. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/detail.cpp +0 -0
  441. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/detail.h +0 -0
  442. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/dunes.cpp +0 -0
  443. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/dunes.h +0 -0
  444. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/evaluation_cache.h +0 -0
  445. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/exposure.cpp +0 -0
  446. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/exposure.h +0 -0
  447. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/fade.cpp +0 -0
  448. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/fade.h +0 -0
  449. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernel.h +0 -0
  450. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/cell.h +0 -0
  451. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/crater_datums.slang +0 -0
  452. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/craters.h +0 -0
  453. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/craters.slang +0 -0
  454. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/noise_relief.h +0 -0
  455. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/kernels/noise_relief.slang +0 -0
  456. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/layer.cpp +0 -0
  457. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/layer.h +0 -0
  458. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/material.cpp +0 -0
  459. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/material.h +0 -0
  460. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/noise_relief.cpp +0 -0
  461. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/noise_relief.h +0 -0
  462. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/pavement.cpp +0 -0
  463. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/pavement.h +0 -0
  464. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/region.cpp +0 -0
  465. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/region.h +0 -0
  466. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/roughness.cpp +0 -0
  467. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/roughness.h +0 -0
  468. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sample_block.cpp +0 -0
  469. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sample_block.h +0 -0
  470. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sand_fill.cpp +0 -0
  471. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sand_fill.h +0 -0
  472. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sand_shadow.cpp +0 -0
  473. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/sand_shadow.h +0 -0
  474. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/strata.cpp +0 -0
  475. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/strata.h +0 -0
  476. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/transforms.cpp +0 -0
  477. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/layers/transforms.h +0 -0
  478. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/materials/CMakeLists.txt +0 -0
  479. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/materials/materials.cpp +0 -0
  480. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/materials/materials.h +0 -0
  481. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/CMakeLists.txt +0 -0
  482. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/formats.h +0 -0
  483. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/gltf.cpp +0 -0
  484. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/icq.cpp +0 -0
  485. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/icq.h +0 -0
  486. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/mesh_io.cpp +0 -0
  487. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/mesh_io.h +0 -0
  488. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/obj.cpp +0 -0
  489. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/io/stl.cpp +0 -0
  490. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/mesh.cpp +0 -0
  491. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/mesh.h +0 -0
  492. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/polyhedra.cpp +0 -0
  493. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/polyhedra.h +0 -0
  494. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/shape_model.cpp +0 -0
  495. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/mesh/shape_model.h +0 -0
  496. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/CMakeLists.txt +0 -0
  497. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/fractal.h +0 -0
  498. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/hash.h +0 -0
  499. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/lattice.h +0 -0
  500. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/noise_layers.h +0 -0
  501. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/perlin.h +0 -0
  502. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/simplex.h +0 -0
  503. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/validate.cpp +0 -0
  504. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/validate.h +0 -0
  505. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/value.h +0 -0
  506. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/noise/worley.h +0 -0
  507. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/CMakeLists.txt +0 -0
  508. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/body_mesh.cpp +0 -0
  509. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/body_mesh.h +0 -0
  510. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/features.cpp +0 -0
  511. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/features.h +0 -0
  512. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/height_mesh.cpp +0 -0
  513. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/height_mesh.h +0 -0
  514. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/tiles.cpp +0 -0
  515. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/pipeline/tiles.h +0 -0
  516. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/CMakeLists.txt +0 -0
  517. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/bindings.h +0 -0
  518. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/casters.h +0 -0
  519. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/common.h +0 -0
  520. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/crater_models.cpp +0 -0
  521. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/craters.cpp +0 -0
  522. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/distribution.cpp +0 -0
  523. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/gpu.cpp +0 -0
  524. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/layers.cpp +0 -0
  525. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/materials.cpp +0 -0
  526. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/mesh.cpp +0 -0
  527. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/module.cpp +0 -0
  528. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/noise.cpp +0 -0
  529. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/objects.h +0 -0
  530. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/pipeline.cpp +0 -0
  531. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/random.cpp +0 -0
  532. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/raster.cpp +0 -0
  533. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/sources.cpp +0 -0
  534. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/tables.h +0 -0
  535. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/trampolines.h +0 -0
  536. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/src/util.cpp +0 -0
  537. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/terraingen/__init__.py +0 -0
  538. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/python/terraingen/render.py +0 -0
  539. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/CMakeLists.txt +0 -0
  540. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/philox.h +0 -0
  541. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/samplers.cpp +0 -0
  542. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/samplers.h +0 -0
  543. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/stream.cpp +0 -0
  544. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/stream.h +0 -0
  545. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/value_distribution.cpp +0 -0
  546. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/random/value_distribution.h +0 -0
  547. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/CMakeLists.txt +0 -0
  548. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/cell_loops.cpp +0 -0
  549. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/cell_loops.h +0 -0
  550. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/gaussian_blur.cpp +0 -0
  551. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/gaussian_blur.h +0 -0
  552. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geo_transform.h +0 -0
  553. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/geotiff.cpp +0 -0
  554. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/geotiff.h +0 -0
  555. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
  556. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
  557. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
  558. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
  559. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
  560. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/geotiff/tiff_format.h +0 -0
  561. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/grid.cpp +0 -0
  562. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/grid.h +0 -0
  563. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/raster.h +0 -0
  564. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/raster_stats.h +0 -0
  565. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/resample.cpp +0 -0
  566. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/raster/resample.h +0 -0
  567. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/CMakeLists.txt +0 -0
  568. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/field.cpp +0 -0
  569. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/field.h +0 -0
  570. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/flat_source.cpp +0 -0
  571. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/flat_source.h +0 -0
  572. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/geotiff_source.cpp +0 -0
  573. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/geotiff_source.h +0 -0
  574. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/source.h +0 -0
  575. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/source_chain.cpp +0 -0
  576. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/source_chain.h +0 -0
  577. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/synthetic_terrain.cpp +0 -0
  578. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/sources/synthetic_terrain.h +0 -0
  579. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/terraingen.h +0 -0
  580. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/CMakeLists.txt +0 -0
  581. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/build_info.cpp.in +0 -0
  582. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/build_info.h +0 -0
  583. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/cells.h +0 -0
  584. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/checks.cpp +0 -0
  585. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/checks.h +0 -0
  586. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/cube_faces.h +0 -0
  587. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/cube_sphere_cells.cpp +0 -0
  588. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/fft.cpp +0 -0
  589. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/fft.h +0 -0
  590. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/geometry.h +0 -0
  591. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/log.cpp +0 -0
  592. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/log.h +0 -0
  593. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/lru_cache.h +0 -0
  594. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/overloaded.h +0 -0
  595. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/parallel.cpp +0 -0
  596. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/parallel.h +0 -0
  597. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/planar_cells.cpp +0 -0
  598. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/portable.h +0 -0
  599. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/radial_shape.cpp +0 -0
  600. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/radial_shape.h +0 -0
  601. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/special_functions.cpp +0 -0
  602. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/special_functions.h +0 -0
  603. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/surface.cpp +0 -0
  604. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/surface.h +0 -0
  605. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/version.cpp +0 -0
  606. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/terraingen/util/version.h.in +0 -0
  607. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/CMakeLists.txt +0 -0
  608. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/bench_craters.cpp +0 -0
  609. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/bench_grids.cpp +0 -0
  610. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/bench_point_queries.cpp +0 -0
  611. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/bench_python_subclasses.py +0 -0
  612. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/benchmark/fixtures.h +0 -0
  613. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/golden/CMakeLists.txt +0 -0
  614. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/golden/noise/kernels_test.cpp +0 -0
  615. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/CMakeLists.txt +0 -0
  616. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/build_info_stable.cmake +0 -0
  617. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/examples/CMakeLists.txt +0 -0
  618. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/package/CMakeLists.txt +0 -0
  619. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/package/main.cpp +0 -0
  620. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/integration/package/test_debian_packages.cmake +0 -0
  621. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/CMakeLists.txt +0 -0
  622. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/conftest.py +0 -0
  623. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_boulders.py +0 -0
  624. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_config.py +0 -0
  625. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_crater_models.py +0 -0
  626. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_craters.py +0 -0
  627. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_distributions.py +0 -0
  628. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_examples_harness.py +0 -0
  629. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_gpu.py +0 -0
  630. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_layers.py +0 -0
  631. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_meshes.py +0 -0
  632. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_noise.py +0 -0
  633. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_pipeline.py +0 -0
  634. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_random.py +0 -0
  635. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_raster.py +0 -0
  636. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_render.py +0 -0
  637. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_sources.py +0 -0
  638. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_stubs.py +0 -0
  639. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_tiles.py +0 -0
  640. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/python/test_util.py +0 -0
  641. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/CMakeLists.txt +0 -0
  642. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/distribution/crater_references_test.cpp +0 -0
  643. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
  644. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
  645. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
  646. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/layers/craters/population_test.cpp +0 -0
  647. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/layers/roughness_test.cpp +0 -0
  648. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/statistical/random/random_test.cpp +0 -0
  649. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/support/log_capture.h +0 -0
  650. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/support/lunar_craters.h +0 -0
  651. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/support/raster_equality.h +0 -0
  652. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/support/statistics.h +0 -0
  653. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/support/temp_path.h +0 -0
  654. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/CMakeLists.txt +0 -0
  655. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/albedo/albedo_test.cpp +0 -0
  656. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/albedo/blast_zones_test.cpp +0 -0
  657. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
  658. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/albedo/splotches_test.cpp +0 -0
  659. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/CMakeLists.txt +0 -0
  660. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/gui/CMakeLists.txt +0 -0
  661. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/gui/config_editor_test.cpp +0 -0
  662. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/gui/gui_app_test.cpp +0 -0
  663. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
  664. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/CMakeLists.txt +0 -0
  665. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/checks_test.cpp +0 -0
  666. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/config_test.cpp +0 -0
  667. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/configs.h +0 -0
  668. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/feature_lists_test.cpp +0 -0
  669. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/json_parse_errors_test.cpp +0 -0
  670. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/json_read_test.cpp +0 -0
  671. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/config/validate_sources_test.cpp +0 -0
  672. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/CMakeLists.txt +0 -0
  673. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/combined_test.cpp +0 -0
  674. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/equilibrium_test.cpp +0 -0
  675. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
  676. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/ivanov_test.cpp +0 -0
  677. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
  678. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/minimum_test.cpp +0 -0
  679. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/moore_test.cpp +0 -0
  680. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/neukum_test.cpp +0 -0
  681. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
  682. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
  683. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/power_law_test.cpp +0 -0
  684. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/production_surface_test.cpp +0 -0
  685. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/size_frequency_test.cpp +0 -0
  686. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/sp8023_test.cpp +0 -0
  687. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/spliced_test.cpp +0 -0
  688. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/summed_test.cpp +0 -0
  689. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/synthterrain_test.cpp +0 -0
  690. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/tabulated_test.cpp +0 -0
  691. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/distribution/viper_test.cpp +0 -0
  692. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/examples/CMakeLists.txt +0 -0
  693. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/examples/example_browser_test.cpp +0 -0
  694. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/examples/example_harness_test.cpp +0 -0
  695. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/CMakeLists.txt +0 -0
  696. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/backend_test.cpp +0 -0
  697. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
  698. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
  699. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/noise_test.cpp +0 -0
  700. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/gpu/vulkan_test.cpp +0 -0
  701. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/bedforms_test.cpp +0 -0
  702. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
  703. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
  704. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
  705. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
  706. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
  707. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
  708. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
  709. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/crater_test.cpp +0 -0
  710. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
  711. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
  712. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
  713. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
  714. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
  715. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
  716. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
  717. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
  718. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
  719. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
  720. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
  721. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +0 -0
  722. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
  723. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
  724. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
  725. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/craters/sphere_test.cpp +0 -0
  726. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/density_map_test.cpp +0 -0
  727. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/detail_test.cpp +0 -0
  728. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/dunes_test.cpp +0 -0
  729. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
  730. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/exposure_test.cpp +0 -0
  731. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/fade_test.cpp +0 -0
  732. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/layer_test.cpp +0 -0
  733. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/noise_relief_test.cpp +0 -0
  734. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/pavement_test.cpp +0 -0
  735. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/region_test.cpp +0 -0
  736. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/roughness_test.cpp +0 -0
  737. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/sample_block_test.cpp +0 -0
  738. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/sand_fill_test.cpp +0 -0
  739. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/sand_shadow_test.cpp +0 -0
  740. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/sphere_layers_test.cpp +0 -0
  741. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/strata_test.cpp +0 -0
  742. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/layers/transforms_test.cpp +0 -0
  743. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/materials/CMakeLists.txt +0 -0
  744. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/materials/materials_test.cpp +0 -0
  745. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/CMakeLists.txt +0 -0
  746. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/io/icq_test.cpp +0 -0
  747. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
  748. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/mesh_test.cpp +0 -0
  749. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/polyhedra_test.cpp +0 -0
  750. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/shape_model_test.cpp +0 -0
  751. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/mesh/support.h +0 -0
  752. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/CMakeLists.txt +0 -0
  753. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/fractal_test.cpp +0 -0
  754. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/hash_test.cpp +0 -0
  755. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/noise3_test.cpp +0 -0
  756. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/noise_layers_test.cpp +0 -0
  757. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/perlin_test.cpp +0 -0
  758. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/simplex_test.cpp +0 -0
  759. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/validate_test.cpp +0 -0
  760. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/value_test.cpp +0 -0
  761. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/noise/worley_test.cpp +0 -0
  762. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/CMakeLists.txt +0 -0
  763. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/features_test.cpp +0 -0
  764. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
  765. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
  766. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/terrains.h +0 -0
  767. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
  768. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/pipeline/tiling_test.cpp +0 -0
  769. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/random/CMakeLists.txt +0 -0
  770. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/random/philox_test.cpp +0 -0
  771. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/random/samplers_test.cpp +0 -0
  772. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/random/stream_test.cpp +0 -0
  773. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/random/value_distribution_test.cpp +0 -0
  774. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/CMakeLists.txt +0 -0
  775. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/cell_loops_test.cpp +0 -0
  776. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
  777. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/gdal_fixtures.h +0 -0
  778. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
  779. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/geo_transform_test.cpp +0 -0
  780. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/geotiff_fixtures.inc +0 -0
  781. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/geotiff_test.cpp +0 -0
  782. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/grid_test.cpp +0 -0
  783. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/raster_stats_test.cpp +0 -0
  784. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/raster_test.cpp +0 -0
  785. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/resample_test.cpp +0 -0
  786. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/raster/tiff_format_test.cpp +0 -0
  787. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/CMakeLists.txt +0 -0
  788. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/field_test.cpp +0 -0
  789. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/flat_source_test.cpp +0 -0
  790. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/geotiff_source_test.cpp +0 -0
  791. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/source_chain_test.cpp +0 -0
  792. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
  793. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/CMakeLists.txt +0 -0
  794. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/cells_test.cpp +0 -0
  795. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/checks_test.cpp +0 -0
  796. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/fft_test.cpp +0 -0
  797. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/geometry_test.cpp +0 -0
  798. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/log_test.cpp +0 -0
  799. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/lru_cache_test.cpp +0 -0
  800. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/overloaded_test.cpp +0 -0
  801. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/parallel_test.cpp +0 -0
  802. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/radial_shape_test.cpp +0 -0
  803. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/special_functions_test.cpp +0 -0
  804. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/surface_test.cpp +0 -0
  805. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/tests/unit/util/version_test.cpp +0 -0
  806. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/README.md +0 -0
  807. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/cgltf/LICENSE +0 -0
  808. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/cgltf/cgltf.h +0 -0
  809. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/cgltf/cgltf_write.h +0 -0
  810. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/miniz/LICENSE +0 -0
  811. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/miniz/miniz.c +0 -0
  812. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/miniz/miniz.h +0 -0
  813. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/nlohmann/LICENSE.MIT +0 -0
  814. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/nlohmann/json.hpp +0 -0
  815. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/tinyobjloader/LICENSE +0 -0
  816. {terraingenpy-0.1.1.dev17 → terraingenpy-0.1.1.dev23}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
@@ -18,18 +18,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
18
18
  - Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
19
19
  - Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
20
20
  - Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
21
+ - Rock albedo: boulders brighter than the regolith (Holt 1981; Marshal et al. 2023), and a speckle of the share of each sample covered by boulders too small to resolve, with the scatter of randomly placed rocks.
22
+ - Slope albedo: steep ground kept immature by mass wasting, its optical maturity rising with slope beyond 20 degrees (Ikeda et al. 2022; Lucey et al. 2014).
21
23
 
22
24
  ### Changed
23
25
 
24
26
  - Density maps that count every feature take out the secondaries thrown from a layer's craters and the blocks thrown out around craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
25
27
  - Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
26
28
  - Boulder generation logs under boulders rather than craters.
29
+ - Crater and boulder generation summaries log at debug level; `terraingen` ends with one line counting the files written instead of listing each, and feature outputs log how long they took.
30
+ - Generation logs each grid as it is evaluated, with the time of every layer, the albedo and the materials, and ends with each step's total and share.
31
+ - Faster boulders: the ground beneath them is read in one batch, outputs over one region share the boulders placed for the first, models are placed in parallel, ejecta craters are found through a spatial index and shapes skip the roughness of fracture planes that cannot reach a vertex. The hero demo runs in about 10 s instead of 276 s.
27
32
  - Martin, Parkes and Dunstan is the default crater profile.
28
33
 
29
34
  ### Fixed
30
35
 
31
36
  - Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
32
37
  - Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
38
+ - Crater layers over other layers read the ground beneath their slopes and datums in batches rather than point by point, and point batches are evaluated in spatial order: the hero demo went from 433 s to 11 s with the same output.
33
39
 
34
40
  ## [0.1.0] - 2026-10-18
35
41
 
@@ -8,7 +8,7 @@ endif()
8
8
 
9
9
  # The release being worked towards, such as 0.1.0, or for a development build a PEP 440 pre-release of
10
10
  # it, such as 0.1.0.dev42, which only the Python package carries.
11
- set(TERRAINGEN_FULL_VERSION "0.1.1.dev17")
11
+ set(TERRAINGEN_FULL_VERSION "0.1.1.dev23")
12
12
  string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" TERRAINGEN_VERSION "${TERRAINGEN_FULL_VERSION}")
13
13
 
14
14
  project(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: terraingenpy
3
- Version: 0.1.1.dev17
3
+ Version: 0.1.1.dev23
4
4
  Summary: Scientific terrain generation for planetary surfaces
5
5
  Keywords: terrain,moon,mars,craters,planetary science,simulation
6
6
  Author: Alex Maietta
@@ -64,7 +64,9 @@ Description-Content-Type: text/markdown
64
64
 
65
65
  # TerrainGen
66
66
 
67
- ![]()
67
+ ![Blue Moon MK1 SN101 lander at Connecting Ridge, with Mons Malapert in the background](docs/images/hero_mk1_sn101_connecting_ridge.jpg)
68
+
69
+ *Blue Moon MK1 SN101 lander at Connecting Ridge near the lunar south pole, with Mons Malapert in the background. Terrain upscaled by TerrainGen from LOLA elevation models.*
68
70
 
69
71
  A high-performance scientific terrain generation tool for interplanetary bodies.
70
72
 
@@ -8,7 +8,9 @@
8
8
 
9
9
  # TerrainGen
10
10
 
11
- ![]()
11
+ ![Blue Moon MK1 SN101 lander at Connecting Ridge, with Mons Malapert in the background](docs/images/hero_mk1_sn101_connecting_ridge.jpg)
12
+
13
+ *Blue Moon MK1 SN101 lander at Connecting Ridge near the lunar south pole, with Mons Malapert in the background. Terrain upscaled by TerrainGen from LOLA elevation models.*
12
14
 
13
15
  A high-performance scientific terrain generation tool for interplanetary bodies.
14
16
 
@@ -0,0 +1,14 @@
1
+ # Textures
2
+
3
+ Tileable detail textures for terrain and rock materials, stored in Git LFS.
4
+
5
+ | Files | Source | License |
6
+ | --- | --- | --- |
7
+ | `moon_01_diff_4k.jpg`, `moon_01_nor_gl_4k.exr`, `moon_01_rough_4k.exr`, `moon_01_disp_4k.png` | Poly Haven, "Moon 01" by Greg Zaal, Rico Cilliers and Jenelle van Heerden (photography) and Dario Barresi (processing), <https://polyhaven.com/a/moon_01> | CC0 1.0 |
8
+ | `seaside_rock_diff_2k.png`, `seaside_rock_nor_gl_2k.exr`, `seaside_rock_nor_dx_2k.exr`, `seaside_rock_rough_2k.exr`, `seaside_rock_ao_2k.png`, `seaside_rock_arm_2k.png`, `seaside_rock_disp_2k.png` | Poly Haven, "Seaside Rock", <https://polyhaven.com/a/seaside_rock> | CC0 1.0 |
9
+ The moon_01 scan covers about 3.1 m of lunar regolith per tile: diffuse colour (sRGB), OpenGL
10
+ normal map, roughness and displacement, at 4096 x 4096.
11
+
12
+ The seaside rock maps are 2048 x 2048 (diffuse sRGB; OpenGL and DirectX normal maps; roughness,
13
+ ambient occlusion, packed AO/roughness/metal and displacement). The lunar_regolith maps are
14
+ 8192 x 8192 (diffuse sRGB, OpenGL normal map, roughness, 16-bit ambient occlusion).
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f907a0905707a4eeeeedd2c22e98ac616df42a3cd9851057abd72182fe443e31
3
+ size 7393858
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:995985a315fade7b3a6e201419ba98d18316732246acfed2536327e52618ef71
3
+ size 16682666
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2263535252e356c57f47861e16c45c0875eb83c6d5ba95180f551b681a561f0d
3
+ size 22995458
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c80a1449d2e32d29bab0730f5369fc355825f20873e37ffe16e3357ad606e648
3
+ size 6170255
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b7beaf1c752a80dbd5861843f5ae3d6e3c816e9b2225ab4881b5a4da008b6ff8
3
+ size 9124350
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:112b3b036cbca6098083754f626485e1fa0f2843782a4a6d8328b62b1b83ea13
3
+ size 9109880
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:543c1863afe8702c8c51f05f453309e3ae0c8f827269e0b8f05bb0f2a1a06ff1
3
+ size 1585214
@@ -0,0 +1,76 @@
1
+ {
2
+ "schema_version": 1,
3
+ "layers": [
4
+ {
5
+ "type": "noise",
6
+ "stack": [
7
+ {
8
+ "seed": 1,
9
+ "wavelength": 200,
10
+ "amplitude": 2.0,
11
+ "octaves": 6
12
+ }
13
+ ]
14
+ },
15
+ {
16
+ "type": "craters",
17
+ "seed": 3,
18
+ "density": {
19
+ "type": "trask"
20
+ },
21
+ "ages": {
22
+ "type": "fresh"
23
+ },
24
+ "min_diameter": 2,
25
+ "max_diameter": 40
26
+ },
27
+ {
28
+ "type": "boulders",
29
+ "seed": 5,
30
+ "coverage": 0.01,
31
+ "min_diameter": 0.05,
32
+ "max_diameter": 1.5,
33
+ "ejecta": {
34
+ "min_crater_diameter": 10,
35
+ "coverage": 0.05,
36
+ "reach": 3
37
+ }
38
+ }
39
+ ],
40
+ "outputs": [
41
+ {
42
+ "type": "heightmap",
43
+ "path": "example_albedo_rocks_and_slopes_heights.tif",
44
+ "region": {
45
+ "width": 401,
46
+ "height": 401,
47
+ "pixel_size": 0.25
48
+ }
49
+ },
50
+ {
51
+ "type": "albedo",
52
+ "path": "example_albedo_rocks_and_slopes_albedo.tif",
53
+ "region": {
54
+ "width": 401,
55
+ "height": 401,
56
+ "pixel_size": 0.25
57
+ }
58
+ }
59
+ ],
60
+ "albedo": {
61
+ "source": {
62
+ "type": "synthetic",
63
+ "value": 0.12
64
+ },
65
+ "layers": [
66
+ {
67
+ "type": "slopes",
68
+ "baseline": 2
69
+ },
70
+ {
71
+ "type": "rocks",
72
+ "seed": 7
73
+ }
74
+ ]
75
+ }
76
+ }
@@ -6,6 +6,8 @@ terraingen_add_library(
6
6
  crater_albedo.cpp
7
7
  maturity.cpp
8
8
  raster_albedo.cpp
9
+ rock_albedo.cpp
10
+ slope_albedo.cpp
9
11
  splotches.cpp
10
12
  synthetic.cpp
11
13
  PUBLIC
@@ -1,6 +1,7 @@
1
1
  #include "terraingen/albedo/albedo.h"
2
2
 
3
3
  #include "terraingen/util/checks.h"
4
+ #include "terraingen/util/log.h"
4
5
  #include "terraingen/util/parallel.h"
5
6
 
6
7
  #include <algorithm>
@@ -110,8 +111,11 @@ std::vector<Raster<float>> EvaluateAlbedo(const Albedo& albedo, const RasterGrid
110
111
  bands.push_back(std::move(raster));
111
112
  }
112
113
  albedo.source->Fill(bands, context);
113
- for (const auto& layer : albedo.layers) {
114
- layer->Apply(bands, context);
114
+ for (std::size_t n = 0; n < albedo.layers.size(); ++n) {
115
+ const Stopwatch stopwatch;
116
+ albedo.layers[n]->Apply(bands, context);
117
+ LogDebug("albedo", "Applied albedo layer ", n + 1, " in ",
118
+ FormatDuration(stopwatch.Milliseconds()));
115
119
  }
116
120
  return bands;
117
121
  }
@@ -0,0 +1,134 @@
1
+ #include "terraingen/albedo/rock_albedo.h"
2
+
3
+ #include "terraingen/random/philox.h"
4
+ #include "terraingen/random/value_distribution.h"
5
+ #include "terraingen/util/parallel.h"
6
+
7
+ #include <algorithm>
8
+ #include <bit>
9
+ #include <cmath>
10
+ #include <stdexcept>
11
+ #include <utility>
12
+
13
+ namespace terraingen {
14
+
15
+ namespace {
16
+
17
+ constexpr std::uint32_t kRockStream = 0x524F434Bu;
18
+
19
+ /// Multiplies every band of `value` by 1 + `share` (`ratio` - 1); NaN stays NaN.
20
+ void Brighten(AlbedoSample& value, std::size_t bands, double share, double ratio) {
21
+ if (share == 0.0) {
22
+ return;
23
+ }
24
+ const double factor = 1.0 + share * (ratio - 1.0);
25
+ for (std::size_t band = 0; band < bands; ++band) {
26
+ if (!std::isnan(value[band])) {
27
+ value[band] = static_cast<float>(factor * static_cast<double>(value[band]));
28
+ }
29
+ }
30
+ }
31
+
32
+ } // namespace
33
+
34
+ void ValidateRockAlbedo(const RockAlbedoOptions& options) {
35
+ if (!(options.reflectanceRatio > 0.0 && std::isfinite(options.reflectanceRatio))) {
36
+ throw std::invalid_argument("Rock reflectance ratio must be positive and finite");
37
+ }
38
+ }
39
+
40
+ double RockShare(double resolved, const UnresolvedCover& unresolved, double normal) {
41
+ double drawn = 0.0;
42
+ if (unresolved.mean > 0.0) {
43
+ const double s2 = std::log1p(unresolved.variance / (unresolved.mean * unresolved.mean));
44
+ drawn =
45
+ std::fmin(1.0, std::exp(std::log(unresolved.mean) - 0.5 * s2 + std::sqrt(s2) * normal));
46
+ }
47
+ const double kept = std::clamp(resolved, 0.0, 1.0);
48
+ return kept + (1.0 - kept) * drawn;
49
+ }
50
+
51
+ RockAlbedo::RockAlbedo(RockAlbedoOptions options, std::vector<RockSource> sources)
52
+ : options_(options), sources_(std::move(sources)) {
53
+ ValidateRockAlbedo(options_);
54
+ for (const RockSource& source : sources_) {
55
+ if (!source.layer || !source.ground) {
56
+ throw std::invalid_argument(
57
+ "A rock albedo source needs a boulder layer and its ground");
58
+ }
59
+ }
60
+ }
61
+
62
+ double RockAlbedo::Draw(double x, double y, std::size_t source) const {
63
+ const auto xs = std::bit_cast<std::uint64_t>(x);
64
+ const auto ys = std::bit_cast<std::uint64_t>(y);
65
+ const U32x4 bits =
66
+ Philox4x32({static_cast<std::uint32_t>(xs), static_cast<std::uint32_t>(xs >> 32),
67
+ static_cast<std::uint32_t>(ys), static_cast<std::uint32_t>(ys >> 32)},
68
+ {options_.seed ^ kRockStream, static_cast<std::uint32_t>(source)});
69
+ return StandardNormal(std::ldexp(static_cast<double>(bits.x), -32),
70
+ std::ldexp(static_cast<double>(bits.y), -32));
71
+ }
72
+
73
+ double RockAlbedo::ShareAt(double x, double y, const AlbedoContext& context) const {
74
+ ValidateAlbedoContext(context);
75
+ double bare = 1.0;
76
+ for (std::size_t n = 0; n < sources_.size(); ++n) {
77
+ const RockSource& source = sources_[n];
78
+ const double resolved =
79
+ source.layer->MaterialCoverAt(x, y, context.spacing, source.ground.get());
80
+ const UnresolvedCover unresolved =
81
+ options_.unresolved
82
+ ? source.layer->UnresolvedCoverAt(x, y, context.spacing, source.ground.get())
83
+ : UnresolvedCover{};
84
+ bare *= 1.0 - RockShare(resolved, unresolved, options_.unresolved ? Draw(x, y, n) : 0.0);
85
+ }
86
+ return 1.0 - bare;
87
+ }
88
+
89
+ void RockAlbedo::ApplyAt(AlbedoSample& value, std::size_t bands, double x, double y,
90
+ const AlbedoContext& context) const {
91
+ Brighten(value, bands, ShareAt(x, y, context), options_.reflectanceRatio);
92
+ }
93
+
94
+ void RockAlbedo::Apply(std::vector<Raster<float>>& bands, const AlbedoContext& context) const {
95
+ ValidateAlbedoContext(context);
96
+ if (bands.empty() || sources_.empty()) {
97
+ return;
98
+ }
99
+ const RasterGrid grid = RasterGrid::FromRaster(bands[0]);
100
+ std::vector<double> bare(grid.width * grid.height, 1.0);
101
+ for (std::size_t n = 0; n < sources_.size(); ++n) {
102
+ const RockSource& source = sources_[n];
103
+ const Raster<double> resolved = source.layer->MaterialCoverOver(
104
+ grid, context.spacing, source.ground.get(), context.threads);
105
+ const std::vector<UnresolvedCover> unresolved =
106
+ options_.unresolved ? source.layer->UnresolvedCoverOver(
107
+ grid, context.spacing, source.ground.get(), context.threads)
108
+ : std::vector<UnresolvedCover>(bare.size());
109
+ ParallelFor(grid.height, context.threads, [&](std::size_t row) {
110
+ for (std::size_t col = 0; col < grid.width; ++col) {
111
+ const std::size_t cell = row * grid.width + col;
112
+ const Vec2d centre = bands[0].CellCenter(col, row);
113
+ bare[cell] *=
114
+ 1.0 - RockShare(resolved(col, row), unresolved[cell],
115
+ options_.unresolved ? Draw(centre.x, centre.y, n) : 0.0);
116
+ }
117
+ });
118
+ }
119
+ ParallelFor(grid.height, context.threads, [&](std::size_t row) {
120
+ for (std::size_t col = 0; col < grid.width; ++col) {
121
+ AlbedoSample value{};
122
+ for (std::size_t band = 0; band < bands.size(); ++band) {
123
+ value[band] = bands[band](col, row);
124
+ }
125
+ Brighten(value, bands.size(), 1.0 - bare[row * grid.width + col],
126
+ options_.reflectanceRatio);
127
+ for (std::size_t band = 0; band < bands.size(); ++band) {
128
+ bands[band](col, row) = value[band];
129
+ }
130
+ }
131
+ });
132
+ }
133
+
134
+ } // namespace terraingen
@@ -0,0 +1,72 @@
1
+ /// @file
2
+ /// @brief Rock albedo: boulders and the rocks too small to resolve, brighter than the regolith.
3
+ #pragma once
4
+
5
+ #include "terraingen/albedo/albedo.h"
6
+ #include "terraingen/layers/boulders/boulder_layer.h"
7
+
8
+ #include <cstdint>
9
+ #include <memory>
10
+ #include <vector>
11
+
12
+ namespace terraingen {
13
+
14
+ /// How rocks brighten the albedo. Rock reflects more than mature regolith: Holt (1981) measured
15
+ /// normal albedos of 18 to 51% for rocks at the Apollo 16 site against 14 to 15% for its most
16
+ /// mature soils; Marshal et al. (2023) model rock about 2.5 times as reflective as regolith,
17
+ /// within the near 3 times of Apollo 16 fragmental breccias (Clark et al. 2002), and earlier
18
+ /// models took about 1.5 times. Boulders an albedo resolves brighten where their rock stands;
19
+ /// smaller ones brighten each sample by the share of it they cover, drawn per sample about its
20
+ /// expected share with the variance of Poisson-scattered rocks, which unresolved cobbles show as
21
+ /// bright pixels (Marshal et al. 2023).
22
+ struct RockAlbedoOptions {
23
+ std::uint32_t seed = 0; ///< Seed of the per-sample draws of unresolved rock.
24
+ double reflectanceRatio = 2.5; ///< Rock over regolith reflectance; positive.
25
+ bool unresolved = true; ///< Whether rocks too small to resolve brighten samples.
26
+
27
+ bool operator==(const RockAlbedoOptions&) const = default;
28
+ };
29
+
30
+ /// Checks rock albedo options.
31
+ /// @throws std::invalid_argument for a reflectance ratio that is not positive and finite.
32
+ void ValidateRockAlbedo(const RockAlbedoOptions& options);
33
+
34
+ /// A boulder layer whose rock brightens the albedo, and the ground beneath it.
35
+ struct RockSource {
36
+ std::shared_ptr<const BoulderLayer> layer;
37
+ /// The ground the layer was applied to, read under its boulders; must not be null.
38
+ std::shared_ptr<const Ground> ground;
39
+ };
40
+
41
+ /// The share of a sample rock covers, from the share its resolved boulders cover and a draw
42
+ /// `normal` (standard normal) of the share unresolved rock covers of the rest: log-normal with
43
+ /// the mean and variance of `unresolved`, at most 1.
44
+ double RockShare(double resolved, const UnresolvedCover& unresolved, double normal);
45
+
46
+ /// The albedo brightened by the rock of boulder layers: each band times 1 + `share`
47
+ /// (`reflectanceRatio` - 1), for the share of each sample rock covers over every layer.
48
+ class RockAlbedo final : public AlbedoLayer {
49
+ public:
50
+ /// @throws std::invalid_argument for options invalid as `ValidateRockAlbedo`, or a source
51
+ /// without a layer or ground.
52
+ RockAlbedo(RockAlbedoOptions options, std::vector<RockSource> sources);
53
+
54
+ /// Brightens `value` by the rock at (`x`, `y`); NaN stays NaN.
55
+ void ApplyAt(AlbedoSample& value, std::size_t bands, double x, double y,
56
+ const AlbedoContext& context) const override;
57
+
58
+ /// `ApplyAt` at every cell centre, the boulders found once per layer.
59
+ void Apply(std::vector<Raster<float>>& bands, const AlbedoContext& context) const override;
60
+
61
+ /// The share of the sample at (`x`, `y`) rock covers, over every layer.
62
+ double ShareAt(double x, double y, const AlbedoContext& context) const;
63
+
64
+ private:
65
+ /// The standard normal drawn for unresolved rock of source `source` at (`x`, `y`).
66
+ double Draw(double x, double y, std::size_t source) const;
67
+
68
+ RockAlbedoOptions options_;
69
+ std::vector<RockSource> sources_;
70
+ };
71
+
72
+ } // namespace terraingen
@@ -0,0 +1,167 @@
1
+ #include "terraingen/albedo/slope_albedo.h"
2
+
3
+ #include "terraingen/util/parallel.h"
4
+
5
+ #include <cmath>
6
+ #include <limits>
7
+ #include <numbers>
8
+ #include <stdexcept>
9
+ #include <utility>
10
+
11
+ namespace terraingen {
12
+
13
+ struct SlopeAlbedo::Lattice {
14
+ double i0 = 0.0; ///< Column of the first node, in steps from the origin.
15
+ double j0 = 0.0; ///< Row of the first node.
16
+ std::size_t columns = 0;
17
+ std::size_t rows = 0;
18
+ std::vector<double> slopes; ///< Degrees, row-major; 0 on the outer ring.
19
+
20
+ double At(std::size_t i, std::size_t j) const {
21
+ return slopes[j * columns + i];
22
+ }
23
+ };
24
+
25
+ void ValidateSlopeMaturity(const SlopeMaturityOptions& options) {
26
+ const SlopeMaturityOptions& o = options;
27
+ if (!(o.onsetDegrees >= 0.0 && o.onsetDegrees < 90.0)) {
28
+ throw std::invalid_argument("Slope maturity onset must be in [0, 90) degrees");
29
+ }
30
+ if (!(o.maturityPerDegree >= 0.0 && std::isfinite(o.maturityPerDegree))) {
31
+ throw std::invalid_argument("Slope maturity per degree must be finite and not negative");
32
+ }
33
+ if (!(o.backgroundMaturity > 0.0 && std::isfinite(o.maxMaturity) &&
34
+ o.maxMaturity >= o.backgroundMaturity)) {
35
+ throw std::invalid_argument(
36
+ "Slope background maturity must be positive and the cap finite and not below it");
37
+ }
38
+ if (!(o.baseline > 0.0 && std::isfinite(o.baseline))) {
39
+ throw std::invalid_argument("Slope baseline must be positive and finite");
40
+ }
41
+ if (!std::isfinite(o.originReflectance)) {
42
+ throw std::invalid_argument("Slope origin reflectance must be finite");
43
+ }
44
+ }
45
+
46
+ SlopeAlbedo::SlopeAlbedo(SlopeMaturityOptions options, Surface surface)
47
+ : options_(options), surface_(surface) {
48
+ ValidateSlopeMaturity(options_);
49
+ step_ = surface_.IsBody() ? options_.baseline / (surface_.Radius() * std::numbers::pi / 180.0)
50
+ : options_.baseline;
51
+ }
52
+
53
+ double SlopeAlbedo::MaturityAt(double slopeDegrees) const {
54
+ const double excess =
55
+ options_.maturityPerDegree * std::fmax(0.0, slopeDegrees - options_.onsetDegrees);
56
+ return std::fmin(options_.backgroundMaturity + excess, options_.maxMaturity);
57
+ }
58
+
59
+ SlopeAlbedo::Lattice SlopeAlbedo::ReadLattice(const Bounds2d& region, const Ground& ground) const {
60
+ Lattice lattice;
61
+ lattice.i0 = std::floor(region.minX / step_) - 1.0;
62
+ lattice.j0 = std::floor(region.minY / step_) - 1.0;
63
+ lattice.columns =
64
+ static_cast<std::size_t>(std::floor(region.maxX / step_) + 2.0 - lattice.i0) + 1;
65
+ lattice.rows = static_cast<std::size_t>(std::floor(region.maxY / step_) + 2.0 - lattice.j0) + 1;
66
+ const auto node = [&](std::size_t i, std::size_t j) {
67
+ return Vec2d{(lattice.i0 + static_cast<double>(i)) * step_,
68
+ (lattice.j0 + static_cast<double>(j)) * step_};
69
+ };
70
+ std::vector<Vec2d> points;
71
+ points.reserve(lattice.columns * lattice.rows);
72
+ for (std::size_t j = 0; j < lattice.rows; ++j) {
73
+ for (std::size_t i = 0; i < lattice.columns; ++i) {
74
+ points.push_back(node(i, j));
75
+ }
76
+ }
77
+ std::vector<float> heights(points.size());
78
+ ground.HeightsAt(points, heights, options_.baseline);
79
+ lattice.slopes.assign(points.size(), 0.0);
80
+ for (std::size_t j = 1; j + 1 < lattice.rows; ++j) {
81
+ for (std::size_t i = 1; i + 1 < lattice.columns; ++i) {
82
+ const auto z = [&](std::size_t a, std::size_t b) {
83
+ return static_cast<double>(heights[b * lattice.columns + a]);
84
+ };
85
+ const double dx =
86
+ (z(i + 1, j) - z(i - 1, j)) / surface_.Distance(node(i - 1, j), node(i + 1, j));
87
+ const double dy =
88
+ (z(i, j + 1) - z(i, j - 1)) / surface_.Distance(node(i, j - 1), node(i, j + 1));
89
+ const double slope = std::atan(std::hypot(dx, dy)) * 180.0 / std::numbers::pi;
90
+ lattice.slopes[j * lattice.columns + i] = std::isnan(slope) ? 0.0 : slope;
91
+ }
92
+ }
93
+ return lattice;
94
+ }
95
+
96
+ double SlopeAlbedo::Interpolate(const Lattice& lattice, double x, double y) const {
97
+ const double u = x / step_;
98
+ const double v = y / step_;
99
+ const double fu = std::floor(u);
100
+ const double fv = std::floor(v);
101
+ const auto i = static_cast<std::size_t>(fu - lattice.i0);
102
+ const auto j = static_cast<std::size_t>(fv - lattice.j0);
103
+ const double tu = u - fu;
104
+ const double tv = v - fv;
105
+ return (1.0 - tv) * ((1.0 - tu) * lattice.At(i, j) + tu * lattice.At(i + 1, j)) +
106
+ tv * ((1.0 - tu) * lattice.At(i, j + 1) + tu * lattice.At(i + 1, j + 1));
107
+ }
108
+
109
+ double SlopeAlbedo::SlopeAt(double x, double y, const Ground& ground) const {
110
+ return Interpolate(ReadLattice({x, y, x, y}, ground), x, y);
111
+ }
112
+
113
+ void SlopeAlbedo::Mature(AlbedoSample& value, std::size_t bands, double slopeDegrees) const {
114
+ const double maturity = MaturityAt(slopeDegrees);
115
+ if (maturity == options_.backgroundMaturity) {
116
+ return;
117
+ }
118
+ for (std::size_t band = 0; band < bands; ++band) {
119
+ if (!std::isnan(value[band])) {
120
+ value[band] = static_cast<float>(ReflectanceAtMaturity(
121
+ value[band], options_.backgroundMaturity, maturity, options_.originReflectance));
122
+ }
123
+ }
124
+ }
125
+
126
+ void SlopeAlbedo::ApplyAt(AlbedoSample& value, std::size_t bands, double x, double y,
127
+ const AlbedoContext& context) const {
128
+ ValidateAlbedoContext(context);
129
+ if (context.ground != nullptr) {
130
+ Mature(value, bands, SlopeAt(x, y, *context.ground));
131
+ }
132
+ }
133
+
134
+ void SlopeAlbedo::Apply(std::vector<Raster<float>>& bands, const AlbedoContext& context) const {
135
+ ValidateAlbedoContext(context);
136
+ if (context.ground == nullptr || bands.empty()) {
137
+ return;
138
+ }
139
+ const RasterGrid grid = RasterGrid::FromRaster(bands[0]);
140
+ Bounds2d centres{
141
+ std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity(),
142
+ -std::numeric_limits<double>::infinity(), -std::numeric_limits<double>::infinity()};
143
+ for (const auto& [col, row] : {std::pair<std::size_t, std::size_t>{0, 0},
144
+ {grid.width - 1, 0},
145
+ {0, grid.height - 1},
146
+ {grid.width - 1, grid.height - 1}}) {
147
+ const Vec2d c = bands[0].CellCenter(col, row);
148
+ centres = {std::fmin(centres.minX, c.x), std::fmin(centres.minY, c.y),
149
+ std::fmax(centres.maxX, c.x), std::fmax(centres.maxY, c.y)};
150
+ }
151
+ const Lattice lattice = ReadLattice(centres, *context.ground);
152
+ ParallelFor(grid.height, context.threads, [&](std::size_t row) {
153
+ for (std::size_t col = 0; col < grid.width; ++col) {
154
+ const Vec2d centre = bands[0].CellCenter(col, row);
155
+ AlbedoSample value{};
156
+ for (std::size_t band = 0; band < bands.size(); ++band) {
157
+ value[band] = bands[band](col, row);
158
+ }
159
+ Mature(value, bands.size(), Interpolate(lattice, centre.x, centre.y));
160
+ for (std::size_t band = 0; band < bands.size(); ++band) {
161
+ bands[band](col, row) = value[band];
162
+ }
163
+ }
164
+ });
165
+ }
166
+
167
+ } // namespace terraingen