terraingenpy 0.1.1.dev6__tar.gz → 0.1.1.dev17__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 (800) hide show
  1. terraingenpy-0.1.1.dev17/CHANGELOG.md +53 -0
  2. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CMakeLists.txt +1 -1
  3. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/PKG-INFO +2 -3
  4. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/README.md +1 -2
  5. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/README.md +3 -0
  6. terraingenpy-0.1.1.dev17/docs/scripts/generate_schema.py +419 -0
  7. terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_max_slope.json +44 -0
  8. terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_rock_abundance.json +65 -0
  9. terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_rolling.json +45 -0
  10. terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_slope_map.json +56 -0
  11. terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_thomas_clusters.json +53 -0
  12. terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_catalog_and_map.json +70 -0
  13. terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_slopes.json +43 -0
  14. terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_wall_marks.json +59 -0
  15. terraingenpy-0.1.1.dev17/examples/config/distributions/example_distributions_piecewise_uniform.json +61 -0
  16. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/mkdocs.yml +4 -0
  17. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/build.cpp +81 -5
  18. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/build.h +12 -0
  19. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/config.h +60 -6
  20. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/albedo.h +142 -86
  21. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/boulders.h +149 -65
  22. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/common.h +58 -2
  23. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/crater_models.h +51 -17
  24. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/craters.h +148 -59
  25. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/enums.h +32 -0
  26. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/json_io.h +4 -4
  27. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/layers.h +145 -88
  28. terraingenpy-0.1.1.dev17/terraingen/config/fields/maps.h +62 -0
  29. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/materials.h +11 -7
  30. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/outputs.h +10 -8
  31. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/sources.h +8 -6
  32. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/json.h +3 -1
  33. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/schema.cpp +16 -7
  34. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/CMakeLists.txt +1 -0
  35. terraingenpy-0.1.1.dev17/terraingen/distribution/piecewise_uniform.cpp +105 -0
  36. terraingenpy-0.1.1.dev17/terraingen/distribution/piecewise_uniform.h +55 -0
  37. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/CMakeLists.txt +3 -0
  38. terraingenpy-0.1.1.dev17/terraingen/layers/boulders/abundance.cpp +279 -0
  39. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.cpp +98 -24
  40. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.h +33 -1
  41. terraingenpy-0.1.1.dev17/terraingen/layers/boulders/boulder_models.cpp +290 -0
  42. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_models.h +4 -2
  43. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.cpp +181 -6
  44. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.h +107 -7
  45. terraingenpy-0.1.1.dev17/terraingen/layers/craters/crater_layer.cpp +222 -0
  46. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.h +24 -0
  47. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.cpp +6 -0
  48. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.h +7 -0
  49. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.cpp +5 -1
  50. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.h +4 -0
  51. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.cpp +2 -1
  52. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.h +2 -1
  53. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.cpp +23 -6
  54. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.h +21 -0
  55. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.cpp +5 -2
  56. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.h +5 -3
  57. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondaries.cpp +4 -187
  58. terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondaries.h +84 -0
  59. terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondary_model.cpp +259 -0
  60. terraingenpy-0.1.1.dev6/terraingen/layers/craters/secondaries.h → terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondary_model.h +78 -61
  61. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.cpp +45 -3
  62. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.cpp +5 -0
  63. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.h +6 -1
  64. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.cpp +15 -0
  65. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.cpp +12 -4
  66. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.h +2 -1
  67. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.cpp +81 -2
  68. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.h +35 -4
  69. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.h +2 -0
  70. terraingenpy-0.1.1.dev17/terraingen/layers/craters/shaping/slope.cpp +84 -0
  71. terraingenpy-0.1.1.dev17/terraingen/layers/craters/shaping/slope.h +91 -0
  72. terraingenpy-0.1.1.dev17/terraingen/layers/density_map.cpp +118 -0
  73. terraingenpy-0.1.1.dev17/terraingen/layers/density_map.h +131 -0
  74. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.h +88 -13
  75. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/boulders.cpp +20 -2
  76. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/crater_models.cpp +3 -1
  77. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/craters.cpp +44 -6
  78. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/distribution.cpp +25 -0
  79. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/layers.cpp +57 -0
  80. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/sources.cpp +50 -0
  81. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/CMakeLists.txt +1 -0
  82. terraingenpy-0.1.1.dev17/terraingen/sources/field.cpp +100 -0
  83. terraingenpy-0.1.1.dev17/terraingen/sources/field.h +109 -0
  84. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/terraingen.h +4 -0
  85. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_boulders.py +50 -1
  86. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_craters.py +50 -0
  87. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_distributions.py +13 -0
  88. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_sources.py +31 -0
  89. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/build_test.cpp +108 -3
  90. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/generate_terrain_test.cpp +8 -2
  91. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_io_test.cpp +45 -1
  92. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/schema_test.cpp +57 -0
  93. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/CMakeLists.txt +1 -0
  94. terraingenpy-0.1.1.dev17/tests/unit/distribution/piecewise_uniform_test.cpp +131 -0
  95. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/CMakeLists.txt +2 -0
  96. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_fragments_test.cpp +57 -0
  97. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_layer_test.cpp +283 -0
  98. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_models_test.cpp +76 -0
  99. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_layer_test.cpp +35 -0
  100. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/freshness_test.cpp +3 -0
  101. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/population_test.cpp +100 -0
  102. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/spacing_test.cpp +44 -0
  103. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/secondaries_test.cpp +100 -0
  104. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +13 -1
  105. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/irregularity_test.cpp +98 -0
  106. terraingenpy-0.1.1.dev17/tests/unit/layers/craters/shaping/slope_test.cpp +259 -0
  107. terraingenpy-0.1.1.dev17/tests/unit/layers/density_map_test.cpp +135 -0
  108. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/CMakeLists.txt +1 -0
  109. terraingenpy-0.1.1.dev17/tests/unit/sources/field_test.cpp +104 -0
  110. terraingenpy-0.1.1.dev6/CHANGELOG.md +0 -29
  111. terraingenpy-0.1.1.dev6/terraingen/layers/boulders/abundance.cpp +0 -162
  112. terraingenpy-0.1.1.dev6/terraingen/layers/boulders/boulder_models.cpp +0 -126
  113. terraingenpy-0.1.1.dev6/terraingen/layers/craters/crater_layer.cpp +0 -110
  114. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.clang-format +0 -0
  115. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.clang-tidy +0 -0
  116. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.cmake-format.yaml +0 -0
  117. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.dockerignore +0 -0
  118. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.gitattributes +0 -0
  119. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  120. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  121. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  122. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/pull_request_template.md +0 -0
  123. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/scripts/install-lavapipe-windows.sh +0 -0
  124. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/workflows/ci.yml +0 -0
  125. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.gitignore +0 -0
  126. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.pre-commit-config.yaml +0 -0
  127. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CITATION.cff +0 -0
  128. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CONTRIBUTING.md +0 -0
  129. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/Dockerfile +0 -0
  130. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/LICENSE +0 -0
  131. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/README.md +0 -0
  132. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_diff_4k.jpg +0 -0
  133. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_disp_4k.png +0 -0
  134. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
  135. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_rough_4k.exr +0 -0
  136. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/BuildInfo.cmake +0 -0
  137. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/CoverageBadge.cmake +0 -0
  138. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/EmbedFile.cmake +0 -0
  139. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/Kernel.cpp.in +0 -0
  140. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenPackaging.cmake +0 -0
  141. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenSlang.cmake +0 -0
  142. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenTesting.cmake +0 -0
  143. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/terraingenConfig.cmake.in +0 -0
  144. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/benchmark.cmake +0 -0
  145. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/ernie.cmake +0 -0
  146. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/googletest.cmake +0 -0
  147. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/mesh_formats.cmake +0 -0
  148. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/miniz.cmake +0 -0
  149. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/nanobind.cmake +0 -0
  150. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/nvrtc.cmake +0 -0
  151. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/slang.cmake +0 -0
  152. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/volk.cmake +0 -0
  153. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/vulkan_headers.cmake +0 -0
  154. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/.gitignore +0 -0
  155. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/Makefile +0 -0
  156. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/api/cpp.md +0 -0
  157. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/api/python.md +0 -0
  158. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/concepts/index.md +0 -0
  159. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/css/extra.css +0 -0
  160. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/command-line.md +0 -0
  161. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/gui.md +0 -0
  162. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/index.md +0 -0
  163. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/installation.md +0 -0
  164. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/quickstart.md +0 -0
  165. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/guides/index.md +0 -0
  166. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/index.md +0 -0
  167. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/overrides/home.html +0 -0
  168. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/overrides/partials/header.html +0 -0
  169. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/requirements.txt +0 -0
  170. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/validation/index.md +0 -0
  171. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/README.md +0 -0
  172. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_fresh.json +0 -0
  173. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_steady_state.json +0 -0
  174. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_uniform.json +0 -0
  175. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
  176. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
  177. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
  178. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_moon_site.json +0 -0
  179. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_new_crater.json +0 -0
  180. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
  181. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_rgb.json +0 -0
  182. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_synthetic.json +0 -0
  183. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_buried.json +0 -0
  184. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_ejecta.json +0 -0
  185. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_exposure.json +0 -0
  186. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_fragments.json +0 -0
  187. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_layer.json +0 -0
  188. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_models.json +0 -0
  189. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_patches.json +0 -0
  190. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_scene.json +0 -0
  191. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_shapes.json +0 -0
  192. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_sp8023.json +0 -0
  193. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_datum.json +0 -0
  194. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
  195. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_none.json +0 -0
  196. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_interior_replacement.json +0 -0
  197. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_irregular.json +0 -0
  198. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_manual.json +0 -0
  199. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_max_craters.json +0 -0
  200. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_complex.json +0 -0
  201. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
  202. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
  203. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondaries.json +0 -0
  204. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondary_rays.json +0 -0
  205. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_simple.json +0 -0
  206. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
  207. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_spacing.json +0 -0
  208. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_texture.json +0 -0
  209. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
  210. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
  211. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_power_law.json +0 -0
  212. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_tabulated.json +0 -0
  213. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
  214. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_viper.json +0 -0
  215. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_regions.json +0 -0
  216. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_roughness.json +0 -0
  217. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
  218. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
  219. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
  220. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_craters.json +0 -0
  221. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_dunes.json +0 -0
  222. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_exposure.json +0 -0
  223. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_pavement.json +0 -0
  224. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
  225. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
  226. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_strata.json +0 -0
  227. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
  228. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mercury_site.json +0 -0
  229. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
  230. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_site.json +0 -0
  231. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_billow.json +0 -0
  232. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_cellular.json +0 -0
  233. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
  234. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_fbm.json +0 -0
  235. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_layered.json +0 -0
  236. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_ridged.json +0 -0
  237. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_roughness.json +0 -0
  238. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_voronoi.json +0 -0
  239. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/CMakeLists.txt +0 -0
  240. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/ages/example_ages_models.cpp +0 -0
  241. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
  242. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
  243. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
  244. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
  245. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.cpp +0 -0
  246. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.h +0 -0
  247. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.cpp +0 -0
  248. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.h +0 -0
  249. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/main.cpp +0 -0
  250. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/standalone_main.cpp +0 -0
  251. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/config/example_config_load.cpp +0 -0
  252. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
  253. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_manual.cpp +0 -0
  254. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
  255. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
  256. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_simple.cpp +0 -0
  257. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
  258. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_custom.cpp +0 -0
  259. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_regions.cpp +0 -0
  260. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/planets/example_planets_moon.cpp +0 -0
  261. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
  262. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
  263. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
  264. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
  265. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
  266. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
  267. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/__main__.py +0 -0
  268. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_browser.py +0 -0
  269. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_common.py +0 -0
  270. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_harness.py +0 -0
  271. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_images.py +0 -0
  272. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/ages/example_ages_models.py +0 -0
  273. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
  274. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_moon_site.py +0 -0
  275. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_options.py +0 -0
  276. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_exposure.py +0 -0
  277. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_layer.py +0 -0
  278. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_positioning.py +0 -0
  279. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_shapes.py +0 -0
  280. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_size_models.py +0 -0
  281. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/config/example_config_load.py +0 -0
  282. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_age_sweep.py +0 -0
  283. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_apply_options.py +0 -0
  284. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_degradation.py +0 -0
  285. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_irregularity.py +0 -0
  286. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_manual.py +0 -0
  287. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_positioning.py +0 -0
  288. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_profiles.py +0 -0
  289. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
  290. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_secondaries.py +0 -0
  291. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_simple.py +0 -0
  292. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_csfd.py +0 -0
  293. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_custom.py +0 -0
  294. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_custom.py +0 -0
  295. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_regions.py +0 -0
  296. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_body_mesh.py +0 -0
  297. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars.py +0 -0
  298. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_dunes.py +0 -0
  299. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_exposure.py +0 -0
  300. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mercury.py +0 -0
  301. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_moon_site.py +0 -0
  302. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_chain.py +0 -0
  303. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_raster_detail.py +0 -0
  304. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fbm.py +0 -0
  305. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
  306. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
  307. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_layered.py +0 -0
  308. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
  309. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
  310. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_point_queries.py +0 -0
  311. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_quadtree.py +0 -0
  312. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
  313. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/pyproject.toml +0 -0
  314. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/CMakeLists.txt +0 -0
  315. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/CMakeLists.txt +0 -0
  316. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.cpp +0 -0
  317. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.h +0 -0
  318. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.cpp +0 -0
  319. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.h +0 -0
  320. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.cpp +0 -0
  321. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.h +0 -0
  322. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.cpp +0 -0
  323. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.h +0 -0
  324. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.cpp +0 -0
  325. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.h +0 -0
  326. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.cpp +0 -0
  327. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.h +0 -0
  328. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.cpp +0 -0
  329. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.h +0 -0
  330. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/CMakeLists.txt +0 -0
  331. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.cpp +0 -0
  332. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.h +0 -0
  333. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/CMakeLists.txt +0 -0
  334. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.cpp +0 -0
  335. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.h +0 -0
  336. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.cpp +0 -0
  337. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.h +0 -0
  338. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.cpp +0 -0
  339. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.h +0 -0
  340. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run_none.cpp +0 -0
  341. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.cpp +0 -0
  342. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.h +0 -0
  343. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/main.cpp +0 -0
  344. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/CMakeLists.txt +0 -0
  345. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/config.cpp +0 -0
  346. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/feature_lists.cpp +0 -0
  347. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/checks.h +0 -0
  348. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/fields.h +0 -0
  349. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.cpp +0 -0
  350. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.h +0 -0
  351. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/json.cpp +0 -0
  352. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.cpp +0 -0
  353. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.h +0 -0
  354. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.cpp +0 -0
  355. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.h +0 -0
  356. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.cpp +0 -0
  357. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.h +0 -0
  358. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.cpp +0 -0
  359. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.h +0 -0
  360. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.cpp +0 -0
  361. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.h +0 -0
  362. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.cpp +0 -0
  363. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.h +0 -0
  364. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.cpp +0 -0
  365. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.h +0 -0
  366. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.cpp +0 -0
  367. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.h +0 -0
  368. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.cpp +0 -0
  369. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.h +0 -0
  370. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.cpp +0 -0
  371. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.h +0 -0
  372. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.cpp +0 -0
  373. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.h +0 -0
  374. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.cpp +0 -0
  375. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.h +0 -0
  376. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.cpp +0 -0
  377. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.h +0 -0
  378. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.cpp +0 -0
  379. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.h +0 -0
  380. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.cpp +0 -0
  381. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.h +0 -0
  382. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.cpp +0 -0
  383. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.h +0 -0
  384. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.cpp +0 -0
  385. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.h +0 -0
  386. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.cpp +0 -0
  387. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.h +0 -0
  388. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.cpp +0 -0
  389. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.h +0 -0
  390. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/CMakeLists.txt +0 -0
  391. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.cpp +0 -0
  392. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.h +0 -0
  393. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.cpp +0 -0
  394. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.h +0 -0
  395. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.cpp +0 -0
  396. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.h +0 -0
  397. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.slang +0 -0
  398. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.cpp +0 -0
  399. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.h +0 -0
  400. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/program.h +0 -0
  401. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.cpp +0 -0
  402. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.h +0 -0
  403. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.cpp +0 -0
  404. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.h +0 -0
  405. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder.h +0 -0
  406. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
  407. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.h +0 -0
  408. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_placer.h +0 -0
  409. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
  410. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.h +0 -0
  411. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.cpp +0 -0
  412. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.h +0 -0
  413. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
  414. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.h +0 -0
  415. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.cpp +0 -0
  416. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.h +0 -0
  417. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.cpp +0 -0
  418. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.h +0 -0
  419. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
  420. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
  421. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/state.h +0 -0
  422. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
  423. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.h +0 -0
  424. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.cpp +0 -0
  425. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.h +0 -0
  426. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
  427. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
  428. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
  429. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
  430. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/profile.h +0 -0
  431. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.cpp +0 -0
  432. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.h +0 -0
  433. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.h +0 -0
  434. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
  435. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.h +0 -0
  436. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
  437. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
  438. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.h +0 -0
  439. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
  440. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.cpp +0 -0
  441. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.h +0 -0
  442. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.cpp +0 -0
  443. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.h +0 -0
  444. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/evaluation_cache.h +0 -0
  445. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.cpp +0 -0
  446. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.h +0 -0
  447. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.cpp +0 -0
  448. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.h +0 -0
  449. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/ground.h +0 -0
  450. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernel.h +0 -0
  451. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/cell.h +0 -0
  452. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/crater_datums.slang +0 -0
  453. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.slang +0 -0
  454. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.h +0 -0
  455. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.slang +0 -0
  456. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.cpp +0 -0
  457. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.h +0 -0
  458. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.cpp +0 -0
  459. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.h +0 -0
  460. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.cpp +0 -0
  461. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.h +0 -0
  462. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.cpp +0 -0
  463. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.h +0 -0
  464. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.cpp +0 -0
  465. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.h +0 -0
  466. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.cpp +0 -0
  467. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.h +0 -0
  468. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.cpp +0 -0
  469. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.h +0 -0
  470. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.cpp +0 -0
  471. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.h +0 -0
  472. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.cpp +0 -0
  473. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.h +0 -0
  474. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.cpp +0 -0
  475. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.h +0 -0
  476. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.cpp +0 -0
  477. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.h +0 -0
  478. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/CMakeLists.txt +0 -0
  479. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.cpp +0 -0
  480. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.h +0 -0
  481. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/CMakeLists.txt +0 -0
  482. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/formats.h +0 -0
  483. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/gltf.cpp +0 -0
  484. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.cpp +0 -0
  485. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.h +0 -0
  486. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.cpp +0 -0
  487. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.h +0 -0
  488. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/obj.cpp +0 -0
  489. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/stl.cpp +0 -0
  490. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.cpp +0 -0
  491. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.h +0 -0
  492. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.cpp +0 -0
  493. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.h +0 -0
  494. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.cpp +0 -0
  495. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.h +0 -0
  496. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/CMakeLists.txt +0 -0
  497. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/fractal.h +0 -0
  498. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/hash.h +0 -0
  499. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/lattice.h +0 -0
  500. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/noise_layers.h +0 -0
  501. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/perlin.h +0 -0
  502. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/simplex.h +0 -0
  503. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.cpp +0 -0
  504. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.h +0 -0
  505. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/value.h +0 -0
  506. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/worley.h +0 -0
  507. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/CMakeLists.txt +0 -0
  508. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.cpp +0 -0
  509. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.h +0 -0
  510. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.cpp +0 -0
  511. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.h +0 -0
  512. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.cpp +0 -0
  513. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.h +0 -0
  514. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.cpp +0 -0
  515. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.h +0 -0
  516. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.cpp +0 -0
  517. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.h +0 -0
  518. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/CMakeLists.txt +0 -0
  519. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/albedo.cpp +0 -0
  520. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/bindings.h +0 -0
  521. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/casters.h +0 -0
  522. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/common.h +0 -0
  523. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/gpu.cpp +0 -0
  524. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/materials.cpp +0 -0
  525. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/mesh.cpp +0 -0
  526. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/module.cpp +0 -0
  527. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/noise.cpp +0 -0
  528. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/objects.h +0 -0
  529. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/pipeline.cpp +0 -0
  530. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/random.cpp +0 -0
  531. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/raster.cpp +0 -0
  532. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/tables.h +0 -0
  533. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/trampolines.h +0 -0
  534. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/util.cpp +0 -0
  535. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/__init__.py +0 -0
  536. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/render.py +0 -0
  537. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/CMakeLists.txt +0 -0
  538. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/philox.h +0 -0
  539. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.cpp +0 -0
  540. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.h +0 -0
  541. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.cpp +0 -0
  542. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.h +0 -0
  543. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.cpp +0 -0
  544. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.h +0 -0
  545. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/CMakeLists.txt +0 -0
  546. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.cpp +0 -0
  547. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.h +0 -0
  548. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.cpp +0 -0
  549. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.h +0 -0
  550. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geo_transform.h +0 -0
  551. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.cpp +0 -0
  552. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.h +0 -0
  553. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
  554. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
  555. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
  556. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
  557. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
  558. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.h +0 -0
  559. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.cpp +0 -0
  560. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.h +0 -0
  561. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster.h +0 -0
  562. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster_stats.h +0 -0
  563. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.cpp +0 -0
  564. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.h +0 -0
  565. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.cpp +0 -0
  566. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.h +0 -0
  567. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.cpp +0 -0
  568. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.h +0 -0
  569. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source.h +0 -0
  570. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.cpp +0 -0
  571. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.h +0 -0
  572. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.cpp +0 -0
  573. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.h +0 -0
  574. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/CMakeLists.txt +0 -0
  575. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.cpp.in +0 -0
  576. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.h +0 -0
  577. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cells.h +0 -0
  578. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.cpp +0 -0
  579. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.h +0 -0
  580. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_faces.h +0 -0
  581. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_sphere_cells.cpp +0 -0
  582. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.cpp +0 -0
  583. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.h +0 -0
  584. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/geometry.h +0 -0
  585. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/log.cpp +0 -0
  586. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/log.h +0 -0
  587. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/lru_cache.h +0 -0
  588. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/overloaded.h +0 -0
  589. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.cpp +0 -0
  590. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.h +0 -0
  591. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/planar_cells.cpp +0 -0
  592. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/portable.h +0 -0
  593. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.cpp +0 -0
  594. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.h +0 -0
  595. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.cpp +0 -0
  596. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.h +0 -0
  597. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.cpp +0 -0
  598. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.h +0 -0
  599. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/version.cpp +0 -0
  600. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/version.h.in +0 -0
  601. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/CMakeLists.txt +0 -0
  602. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/CMakeLists.txt +0 -0
  603. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_craters.cpp +0 -0
  604. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_grids.cpp +0 -0
  605. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_point_queries.cpp +0 -0
  606. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_python_subclasses.py +0 -0
  607. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/fixtures.h +0 -0
  608. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/golden/CMakeLists.txt +0 -0
  609. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/golden/noise/kernels_test.cpp +0 -0
  610. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/CMakeLists.txt +0 -0
  611. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/build_info_stable.cmake +0 -0
  612. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/examples/CMakeLists.txt +0 -0
  613. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/CMakeLists.txt +0 -0
  614. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/main.cpp +0 -0
  615. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/test_debian_packages.cmake +0 -0
  616. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/CMakeLists.txt +0 -0
  617. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/conftest.py +0 -0
  618. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_albedo.py +0 -0
  619. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_config.py +0 -0
  620. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_crater_models.py +0 -0
  621. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_examples_harness.py +0 -0
  622. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_gpu.py +0 -0
  623. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_layers.py +0 -0
  624. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_meshes.py +0 -0
  625. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_noise.py +0 -0
  626. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_pipeline.py +0 -0
  627. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_random.py +0 -0
  628. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_raster.py +0 -0
  629. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_render.py +0 -0
  630. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_stubs.py +0 -0
  631. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_tiles.py +0 -0
  632. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_util.py +0 -0
  633. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/CMakeLists.txt +0 -0
  634. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/crater_references_test.cpp +0 -0
  635. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
  636. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
  637. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
  638. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/population_test.cpp +0 -0
  639. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/roughness_test.cpp +0 -0
  640. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/random/random_test.cpp +0 -0
  641. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/log_capture.h +0 -0
  642. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/lunar_craters.h +0 -0
  643. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/raster_equality.h +0 -0
  644. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/statistics.h +0 -0
  645. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/temp_path.h +0 -0
  646. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/CMakeLists.txt +0 -0
  647. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/CMakeLists.txt +0 -0
  648. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/albedo_test.cpp +0 -0
  649. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/blast_zones_test.cpp +0 -0
  650. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
  651. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/splotches_test.cpp +0 -0
  652. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/CMakeLists.txt +0 -0
  653. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/cli_test.cpp +0 -0
  654. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/CMakeLists.txt +0 -0
  655. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/config_editor_test.cpp +0 -0
  656. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/gui_app_test.cpp +0 -0
  657. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
  658. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/CMakeLists.txt +0 -0
  659. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/checks_test.cpp +0 -0
  660. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/config_test.cpp +0 -0
  661. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/configs.h +0 -0
  662. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/feature_lists_test.cpp +0 -0
  663. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_parse_errors_test.cpp +0 -0
  664. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_read_test.cpp +0 -0
  665. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_config_test.cpp +0 -0
  666. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_sources_test.cpp +0 -0
  667. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/write_outputs_test.cpp +0 -0
  668. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/combined_test.cpp +0 -0
  669. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/equilibrium_test.cpp +0 -0
  670. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
  671. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/ivanov_test.cpp +0 -0
  672. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
  673. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/minimum_test.cpp +0 -0
  674. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/moore_test.cpp +0 -0
  675. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/neukum_test.cpp +0 -0
  676. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
  677. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/power_law_test.cpp +0 -0
  678. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/production_surface_test.cpp +0 -0
  679. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/size_frequency_test.cpp +0 -0
  680. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/sp8023_test.cpp +0 -0
  681. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/spliced_test.cpp +0 -0
  682. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/summed_test.cpp +0 -0
  683. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/synthterrain_test.cpp +0 -0
  684. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/tabulated_test.cpp +0 -0
  685. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/viper_test.cpp +0 -0
  686. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/CMakeLists.txt +0 -0
  687. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_browser_test.cpp +0 -0
  688. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_harness_test.cpp +0 -0
  689. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/CMakeLists.txt +0 -0
  690. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/backend_test.cpp +0 -0
  691. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
  692. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
  693. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/noise_test.cpp +0 -0
  694. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/vulkan_test.cpp +0 -0
  695. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/bedforms_test.cpp +0 -0
  696. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
  697. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
  698. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
  699. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
  700. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_test.cpp +0 -0
  701. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
  702. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
  703. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
  704. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
  705. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
  706. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
  707. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
  708. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
  709. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
  710. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
  711. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/sphere_test.cpp +0 -0
  712. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/detail_test.cpp +0 -0
  713. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/dunes_test.cpp +0 -0
  714. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
  715. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/exposure_test.cpp +0 -0
  716. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/fade_test.cpp +0 -0
  717. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/layer_test.cpp +0 -0
  718. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/noise_relief_test.cpp +0 -0
  719. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/pavement_test.cpp +0 -0
  720. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/region_test.cpp +0 -0
  721. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/roughness_test.cpp +0 -0
  722. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sample_block_test.cpp +0 -0
  723. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_fill_test.cpp +0 -0
  724. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_shadow_test.cpp +0 -0
  725. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sphere_layers_test.cpp +0 -0
  726. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/strata_test.cpp +0 -0
  727. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/transforms_test.cpp +0 -0
  728. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/materials/CMakeLists.txt +0 -0
  729. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/materials/materials_test.cpp +0 -0
  730. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/CMakeLists.txt +0 -0
  731. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/icq_test.cpp +0 -0
  732. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
  733. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/mesh_test.cpp +0 -0
  734. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/polyhedra_test.cpp +0 -0
  735. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/shape_model_test.cpp +0 -0
  736. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/support.h +0 -0
  737. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/CMakeLists.txt +0 -0
  738. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/fractal_test.cpp +0 -0
  739. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/hash_test.cpp +0 -0
  740. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise3_test.cpp +0 -0
  741. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise_layers_test.cpp +0 -0
  742. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/perlin_test.cpp +0 -0
  743. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/simplex_test.cpp +0 -0
  744. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/validate_test.cpp +0 -0
  745. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/value_test.cpp +0 -0
  746. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/worley_test.cpp +0 -0
  747. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/CMakeLists.txt +0 -0
  748. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/features_test.cpp +0 -0
  749. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
  750. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_test.cpp +0 -0
  751. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
  752. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrains.h +0 -0
  753. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
  754. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tiling_test.cpp +0 -0
  755. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/CMakeLists.txt +0 -0
  756. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/philox_test.cpp +0 -0
  757. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/samplers_test.cpp +0 -0
  758. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/stream_test.cpp +0 -0
  759. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/value_distribution_test.cpp +0 -0
  760. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/CMakeLists.txt +0 -0
  761. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/cell_loops_test.cpp +0 -0
  762. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
  763. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gdal_fixtures.h +0 -0
  764. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
  765. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geo_transform_test.cpp +0 -0
  766. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_fixtures.inc +0 -0
  767. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_test.cpp +0 -0
  768. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/grid_test.cpp +0 -0
  769. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_stats_test.cpp +0 -0
  770. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_test.cpp +0 -0
  771. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/resample_test.cpp +0 -0
  772. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/tiff_format_test.cpp +0 -0
  773. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/flat_source_test.cpp +0 -0
  774. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/geotiff_source_test.cpp +0 -0
  775. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/source_chain_test.cpp +0 -0
  776. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
  777. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/CMakeLists.txt +0 -0
  778. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/cells_test.cpp +0 -0
  779. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/checks_test.cpp +0 -0
  780. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/fft_test.cpp +0 -0
  781. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/geometry_test.cpp +0 -0
  782. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/log_test.cpp +0 -0
  783. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/lru_cache_test.cpp +0 -0
  784. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/overloaded_test.cpp +0 -0
  785. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/parallel_test.cpp +0 -0
  786. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/radial_shape_test.cpp +0 -0
  787. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/special_functions_test.cpp +0 -0
  788. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/surface_test.cpp +0 -0
  789. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/version_test.cpp +0 -0
  790. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/README.md +0 -0
  791. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/LICENSE +0 -0
  792. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf.h +0 -0
  793. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf_write.h +0 -0
  794. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/LICENSE +0 -0
  795. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.c +0 -0
  796. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.h +0 -0
  797. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/LICENSE.MIT +0 -0
  798. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/json.hpp +0 -0
  799. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/LICENSE +0 -0
  800. {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
@@ -0,0 +1,53 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ - Piecewise uniform size-frequency distributions: counts per diameter band, given absolutely or as shares of a total.
13
+ - Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
14
+ - Thomas cluster process for boulder clusters, with Poisson-scattered centres whose clusters add where they overlap.
15
+ - Craters on slopes: floors offset downslope and rims and ejecta lowered upslope (Plescia et al. 2019), and faster wear toward a critical gradient (Roering et al. 1999).
16
+ - Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
17
+ - Density maps from GeoTIFFs or constants: a scale, a count in a diameter range, or an areal fraction such as rock abundance, which set crater and boulder densities point by point.
18
+ - Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
19
+ - Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
20
+ - Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
21
+
22
+ ### Changed
23
+
24
+ - 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
+ - Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
26
+ - Boulder generation logs under boulders rather than craters.
27
+ - Martin, Parkes and Dunstan is the default crater profile.
28
+
29
+ ### Fixed
30
+
31
+ - Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
32
+ - 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.
33
+
34
+ ## [0.1.0] - 2026-10-18
35
+
36
+ Initial release.
37
+
38
+ ### Added
39
+
40
+ - C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
41
+ - Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
42
+ - Procedural 3D boulder models, and small boulders baked into the heightmap.
43
+ - Synthetic albedo with crater ejecta and rays that fade with age.
44
+ - Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
45
+ - Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
46
+ - Deterministic output for a seed on any grid, tile or thread count.
47
+ - GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
48
+ - `terraingen` command-line interface driven by JSON configurations.
49
+ - Examples in C++, Python and JSON.
50
+ - Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
51
+
52
+ [Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
53
+ [0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
@@ -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.dev6")
11
+ set(TERRAINGEN_FULL_VERSION "0.1.1.dev17")
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.dev6
3
+ Version: 0.1.1.dev17
4
4
  Summary: Scientific terrain generation for planetary surfaces
5
5
  Keywords: terrain,moon,mars,craters,planetary science,simulation
6
6
  Author: Alex Maietta
@@ -60,7 +60,6 @@ Description-Content-Type: text/markdown
60
60
  [![coverage](https://img.shields.io/endpoint?url=https://alexmaietta.github.io/terraingen/coverage/badge.json)](https://alexmaietta.github.io/terraingen/coverage/)
61
61
  [![release](https://img.shields.io/github/v/release/alexmaietta/terraingen)](https://github.com/alexmaietta/terraingen/releases)
62
62
  [![pypi](https://img.shields.io/pypi/v/terraingenpy)](https://pypi.org/project/terraingenpy/)
63
- [![docs](https://img.shields.io/website?url=https%3A%2F%2Falexmaietta.github.io%2Fterraingen%2F&label=docs&up_message=latest&down_message=offline)](https://alexmaietta.github.io/terraingen/)
64
63
  [![license](https://img.shields.io/badge/license-BSD_3--Clause-blue)](LICENSE)
65
64
 
66
65
  # TerrainGen
@@ -78,7 +77,7 @@ TerrainGen can:
78
77
  - Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
79
78
  - Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
80
79
  - Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
81
- - GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
80
+ - Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
82
81
  - Generate deterministic results for the same seed on any grid, tile or thread count.
83
82
  - Integrate into simulations and other external workflows.
84
83
 
@@ -4,7 +4,6 @@
4
4
  [![coverage](https://img.shields.io/endpoint?url=https://alexmaietta.github.io/terraingen/coverage/badge.json)](https://alexmaietta.github.io/terraingen/coverage/)
5
5
  [![release](https://img.shields.io/github/v/release/alexmaietta/terraingen)](https://github.com/alexmaietta/terraingen/releases)
6
6
  [![pypi](https://img.shields.io/pypi/v/terraingenpy)](https://pypi.org/project/terraingenpy/)
7
- [![docs](https://img.shields.io/website?url=https%3A%2F%2Falexmaietta.github.io%2Fterraingen%2F&label=docs&up_message=latest&down_message=offline)](https://alexmaietta.github.io/terraingen/)
8
7
  [![license](https://img.shields.io/badge/license-BSD_3--Clause-blue)](LICENSE)
9
8
 
10
9
  # TerrainGen
@@ -22,7 +21,7 @@ TerrainGen can:
22
21
  - Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
23
22
  - Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
24
23
  - Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
25
- - GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
24
+ - Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
26
25
  - Generate deterministic results for the same seed on any grid, tile or thread count.
27
26
  - Integrate into simulations and other external workflows.
28
27
 
@@ -7,6 +7,9 @@ sudo apt install doxygen
7
7
  ```
8
8
 
9
9
  For the Python API, TerrainGen must be built with Python bindings, `-DTERRAINGEN_BUILD_PYTHON=ON`.
10
+ The configuration reference is generated from the same build: `scripts/generate_schema.py` reads
11
+ the library's configuration schema at build time and writes the pages under `reference/`, so
12
+ nothing there is kept in the source tree.
10
13
 
11
14
  Install `mkdocs` and related dependencies.
12
15
 
@@ -0,0 +1,419 @@
1
+ """
2
+ MkDocs hook that writes the configuration reference from the library's own schema.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ import json
8
+ import sys
9
+ from collections import defaultdict
10
+ from pathlib import Path
11
+
12
+ from mkdocs.structure.files import File
13
+
14
+ ROOT = Path(__file__).resolve().parents[2]
15
+ REPO_BLOB = "https://github.com/alexmaietta/terraingen/blob/main/"
16
+
17
+ # Titles and slugs of the choices, keyed by where they are first reached from the root.
18
+ CHOICES = {
19
+ "body": ("Bodies", "body"),
20
+ "base": ("Base sources", "base"),
21
+ "layers": ("Layers", "layers"),
22
+ "layers[craters].density": ("Crater densities", "models/densities"),
23
+ "layers[craters].ages": ("Crater ages", "models/ages"),
24
+ "layers[craters].profile": ("Crater profiles", "models/profiles"),
25
+ "layers[craters].degradation": ("Crater degradation", "models/degradation"),
26
+ "layers[boulders].sizes": ("Boulder sizes", "models/boulder-sizes"),
27
+ "layers[region].shape": ("Region shapes", "models/region-shapes"),
28
+ "outputs": ("Outputs", "outputs"),
29
+ "albedo.source": ("Albedo sources", "albedo-sources"),
30
+ "albedo.layers": ("Albedo layers", "albedo-layers"),
31
+ }
32
+
33
+ # The order of the reference's sections in the navigation.
34
+ SECTIONS = [
35
+ ("Bodies", ["body"]),
36
+ ("Base sources", ["base"]),
37
+ ("Layers", ["layers"]),
38
+ (
39
+ "Crater and boulder models",
40
+ [
41
+ "layers[craters].density",
42
+ "layers[craters].ages",
43
+ "layers[craters].profile",
44
+ "layers[craters].degradation",
45
+ "layers[boulders].sizes",
46
+ "layers[region].shape",
47
+ ],
48
+ ),
49
+ ("Albedo", ["albedo.source", "albedo.layers"]),
50
+ ("Outputs", ["outputs"]),
51
+ ]
52
+
53
+
54
+ def load_schema():
55
+ """The schema and catalog from the built module."""
56
+ sys.path.insert(0, str(ROOT / "build" / "python"))
57
+ try:
58
+ import terraingen
59
+ except ImportError as error:
60
+ raise RuntimeError(
61
+ "The configuration reference needs TerrainGen built with Python in build/ "
62
+ "(cmake -S . -B build && cmake --build build)"
63
+ ) from error
64
+ return terraingen.config_schema(), terraingen.config_catalog()
65
+
66
+
67
+ def unwrap(schema):
68
+ """The schema an optional or a list holds, and whether it was either."""
69
+ wrapped = []
70
+ while schema.get("kind") in ("optional", "array"):
71
+ wrapped.append(schema["kind"])
72
+ schema = schema["of"]
73
+ return schema, wrapped
74
+
75
+
76
+ def compact(value, limit=40):
77
+ """A value as short JSON for a table cell."""
78
+ if isinstance(value, dict):
79
+ return f'`{{"type": "{value["type"]}", ...}}`' if "type" in value else "`{...}`"
80
+ if isinstance(value, list) and value:
81
+ return "`[...]`"
82
+ if isinstance(value, float) and value == int(value) and abs(value) < 1e15:
83
+ text = f"{value:.1f}"
84
+ else:
85
+ text = json.dumps(value)
86
+ if len(text) > limit:
87
+ text = text[: limit - 3] + "..."
88
+ return f"`{text}`"
89
+
90
+
91
+ def cell(text):
92
+ """Text safe in a Markdown table cell."""
93
+ return text.replace("|", "\\|").replace("\n", " ")
94
+
95
+
96
+ def number(value):
97
+ return f"{value:g}"
98
+
99
+
100
+ def range_text(field):
101
+ """A field's range in interval notation, or empty."""
102
+ low = field.get("minimum")
103
+ high = field.get("maximum")
104
+ if low is None and high is None:
105
+ return ""
106
+ left = "(" if low is None or field.get("exclusive_minimum") else "["
107
+ right = ")" if high is None or field.get("exclusive_maximum") else "]"
108
+ return f"{left}{'-inf' if low is None else number(low)}, {'inf' if high is None else number(high)}{right}"
109
+
110
+
111
+ class Reference:
112
+ """The pages of the configuration reference, built from one schema."""
113
+
114
+ def __init__(self, schema, catalog, examples):
115
+ self.schema = schema
116
+ self.catalog = catalog
117
+ self.definitions = schema["definitions"]
118
+ self.paths = {} # choice id -> path first reached from the root
119
+ self.names = defaultdict(set) # choice id -> the field names that refer to it
120
+ self.enums = {} # tuple of choices -> (anchor, name, descriptions)
121
+ self.examples = examples
122
+ self.walk(schema["root"], "")
123
+
124
+ # Discovery ---------------------------------------------------------------------------------
125
+
126
+ def walk(self, obj, path):
127
+ for field in obj.get("fields", []):
128
+ self.visit(field["schema"], f"{path}.{field['name']}" if path else field["name"], field)
129
+
130
+ def visit(self, schema, path, field):
131
+ inner, _ = unwrap(schema)
132
+ kind = inner.get("kind")
133
+ if kind == "enum":
134
+ key = tuple(inner["choices"])
135
+ if key not in self.enums:
136
+ name = field["name"]
137
+ anchor = name.replace("_", "-")
138
+ taken = {a for a, _, _ in self.enums.values()}
139
+ suffix = 2
140
+ while anchor in taken:
141
+ anchor = f"{name.replace('_', '-')}-{suffix}"
142
+ suffix += 1
143
+ self.enums[key] = (anchor, name, inner.get("descriptions", []))
144
+ return
145
+ if kind != "ref":
146
+ return
147
+ ref = inner["ref"]
148
+ target = self.definitions[ref]
149
+ if target["kind"] == "choice":
150
+ self.names[ref].add(field["name"])
151
+ if ref in self.paths:
152
+ return
153
+ self.paths[ref] = path
154
+ for alternative in target["alternatives"]:
155
+ self.walk(alternative, f"{path}[{alternative['type']}]")
156
+ else:
157
+ self.walk(target, path)
158
+
159
+ def page_of(self, ref):
160
+ """The slug and title of a choice's page."""
161
+ path = self.paths[ref]
162
+ if path in CHOICES:
163
+ title, slug = CHOICES[path]
164
+ return slug, title
165
+ if path.endswith("].simple"):
166
+ return CHOICES["layers[craters].profile"][1], CHOICES["layers[craters].profile"][0]
167
+ name = path.rsplit(".", 1)[-1]
168
+ return f"models/{name.replace('_', '-')}", name.replace("_", " ").capitalize()
169
+
170
+ def ref_of(self, path):
171
+ return next(ref for ref, p in self.paths.items() if p == path)
172
+
173
+ # Rendering ---------------------------------------------------------------------------------
174
+
175
+ def link(self, here, slug, anchor=""):
176
+ """A relative link from page `here` to page `slug`."""
177
+ depth = here.count("/")
178
+ target = "../" * depth + slug + ".md"
179
+ return target + (f"#{anchor}" if anchor else "")
180
+
181
+ def type_text(self, schema, here):
182
+ inner, wrapped = unwrap(schema)
183
+ kind = inner.get("kind")
184
+ if kind == "ref":
185
+ target = self.definitions[inner["ref"]]
186
+ if target["kind"] == "choice":
187
+ slug, title = self.page_of(inner["ref"])
188
+ page = "layers/index" if slug == "layers" else slug
189
+ text = f"[{title.lower()}]({self.link(here, page)})"
190
+ else:
191
+ text = "object, below"
192
+ elif kind == "enum":
193
+ anchor, _, _ = self.enums[tuple(inner["choices"])]
194
+ values = ", ".join(f"`{c}`" for c in inner["choices"])
195
+ text = f"[one of]({self.link(here, 'enums', anchor)}) {values}"
196
+ elif kind == "integer" and inner.get("fixed"):
197
+ text = "integer, fixed"
198
+ else:
199
+ text = kind
200
+ for wrapper in reversed(wrapped):
201
+ text = f"list of {text}" if wrapper == "array" else f"{text}, optional"
202
+ return text
203
+
204
+ def nested(self, schema):
205
+ """The object definition a field holds, if any."""
206
+ inner, wrapped = unwrap(schema)
207
+ if inner.get("kind") == "ref":
208
+ target = self.definitions[inner["ref"]]
209
+ if target["kind"] == "object":
210
+ return target, "array" in wrapped
211
+ return None, False
212
+
213
+ def fields(self, fields, here, indent=""):
214
+ """The fields of an object: the plain ones in a table, then each group collapsed."""
215
+ lines = []
216
+ plain = [f for f in fields if self.nested(f["schema"])[0] is None]
217
+ groups = [f for f in fields if self.nested(f["schema"])[0] is not None]
218
+ if plain:
219
+ lines += [
220
+ f"{indent}| Key | Type | Default | Range | Unit | Description |",
221
+ f"{indent}| --- | --- | --- | --- | --- | --- |",
222
+ ]
223
+ for f in plain:
224
+ lines.append(
225
+ f"{indent}| `{f['name']}` | {self.type_text(f['schema'], here)} | "
226
+ f"{compact(f['default'])} | {range_text(f)} | {f['unit']} | "
227
+ f"{cell(f['description'])} |"
228
+ )
229
+ lines.append("")
230
+ for f in groups:
231
+ target, listed = self.nested(f["schema"])
232
+ title = f"{f['name']}[]" if listed else f["name"]
233
+ lines.append(f'{indent}??? note "`{title}`: {f["description"].replace(chr(34), chr(39))}"')
234
+ lines.append("")
235
+ lines += self.fields(target["fields"], here, indent + " ")
236
+ return lines
237
+
238
+ def used_in(self, names, type_name):
239
+ files = sorted({path for name in names for path in self.examples.get((name, type_name), [])})
240
+ if not files:
241
+ return []
242
+ links = ", ".join(f"[{Path(p).stem}]({REPO_BLOB}{p})" for p in files[:8])
243
+ more = f" and {len(files) - 8} more" if len(files) > 8 else ""
244
+ return [f"**Used in:** {links}{more}", ""]
245
+
246
+ def alternative(self, alternative, names, here, level="##"):
247
+ lines = [f"{level} `{alternative['type']}` {{#{alternative['type']}}}", ""]
248
+ lines += [alternative["description"], ""]
249
+ lines += self.fields(alternative["fields"], here)
250
+ lines += [
251
+ '??? example "Every key with its default"',
252
+ "",
253
+ " ```json",
254
+ *(" " + line for line in json.dumps(alternative["default"], indent=4).splitlines()),
255
+ " ```",
256
+ "",
257
+ ]
258
+ lines += self.used_in(names, alternative["type"])
259
+ return lines
260
+
261
+ def choice_page(self, ref):
262
+ slug, title = self.page_of(ref)
263
+ choice = self.definitions[ref]
264
+ names = self.names[ref]
265
+ keys = ", ".join(f"`{n}`" for n in sorted(names))
266
+ lines = [f"# {title}", "", f'Chosen by `"type"` in {keys}.', ""]
267
+ lines += ["| Type | What it is |", "| --- | --- |"]
268
+ for alternative in choice["alternatives"]:
269
+ first = alternative["description"].split(". ")[0].rstrip(".")
270
+ lines.append(f"| [`{alternative['type']}`](#{alternative['type']}) | {cell(first)}. |")
271
+ lines.append("")
272
+ for alternative in choice["alternatives"]:
273
+ lines += self.alternative(alternative, names, slug)
274
+ return slug, title, "\n".join(lines)
275
+
276
+ def layer_pages(self):
277
+ ref = self.ref_of("layers")
278
+ choice = self.definitions[ref]
279
+ names = self.names[ref]
280
+ index = ["# Layers", "", "Relief and features added to the base, applied in order.", ""]
281
+ index += ["| Type | What it is |", "| --- | --- |"]
282
+ pages = []
283
+ for alternative in choice["alternatives"]:
284
+ slug = f"layers/{alternative['type']}"
285
+ first = alternative["description"].split(". ")[0].rstrip(".")
286
+ index.append(f"| [`{alternative['type']}`]({alternative['type']}.md) | {cell(first)}. |")
287
+ body = self.alternative(alternative, names, slug, level="#")
288
+ pages.append((slug, alternative["type"], "\n".join(body)))
289
+ return ("layers/index", "Layers", "\n".join(index + [""])), pages
290
+
291
+ def overview(self):
292
+ lines = [
293
+ "# Configuration",
294
+ "",
295
+ "A configuration is a JSON file the `terraingen` command, `GenerateTerrain` and",
296
+ "`terraingen.load_config` read. This reference is generated from the same field lists",
297
+ "the parser reads, so it always matches the library; the [raw schema](schema.md) is",
298
+ "the same information as JSON, for editors and tools.",
299
+ "",
300
+ "Ranges are the values each field accepts on its own; validation also checks the rules",
301
+ "that tie fields together.",
302
+ "",
303
+ "## Top level",
304
+ "",
305
+ ]
306
+ lines += self.fields(self.schema["root"]["fields"], "index")
307
+ lines += ["## Sections", ""]
308
+ for _, paths in SECTIONS:
309
+ for path in paths:
310
+ title, slug = CHOICES[path]
311
+ target = "layers/index.md" if slug == "layers" else f"{slug}.md"
312
+ lines.append(f"- [{title}]({target})")
313
+ lines += ["- [Enumerations](enums.md)", "- [Raw schema](schema.md)", ""]
314
+ return "\n".join(lines)
315
+
316
+ def enum_page(self):
317
+ lines = ["# Enumerations", "", "The named values fields choose between.", ""]
318
+ for choices, (anchor, name, descriptions) in sorted(self.enums.items(), key=lambda item: item[1][0]):
319
+ lines += [f"## `{name}` {{#{anchor}}}", "", "| Value | Meaning |", "| --- | --- |"]
320
+ for value, description in zip(choices, descriptions or [""] * len(choices), strict=True):
321
+ lines.append(f"| `{value}` | {cell(description)} |")
322
+ lines.append("")
323
+ return "\n".join(lines)
324
+
325
+ def schema_page(self):
326
+ text = json.dumps(self.schema, indent=2)
327
+ return "\n".join(
328
+ [
329
+ "# Raw schema",
330
+ "",
331
+ "The structure of a configuration as JSON, from the same field lists the parser",
332
+ "reads: each object's fields with their descriptions, units, defaults and ranges,",
333
+ "and each choice's alternatives. `terraingen.config_schema()` returns it too.",
334
+ "",
335
+ "- [schema.json](schema.json): this document.",
336
+ "- [catalog.json](catalog.json): every type with its defaults, as",
337
+ " `terraingen.config_catalog()` and `terraingen schema` give it.",
338
+ "",
339
+ '??? abstract "schema.json"',
340
+ "",
341
+ " ```json",
342
+ *(" " + line for line in text.splitlines()),
343
+ " ```",
344
+ "",
345
+ ]
346
+ )
347
+
348
+ def pages(self):
349
+ """Every page as (slug, title, markdown), in navigation order, and the navigation."""
350
+ pages = [("index", "Overview", self.overview())]
351
+ nav = [{"Overview": "reference/index.md"}]
352
+ for section, paths in SECTIONS:
353
+ entries = []
354
+ for path in paths:
355
+ if path == "layers":
356
+ index, layers = self.layer_pages()
357
+ pages.append(index)
358
+ pages += layers
359
+ entries.append("reference/layers/index.md")
360
+ entries += [{title: f"reference/{slug}.md"} for slug, title, _ in layers]
361
+ continue
362
+ slug, title, text = self.choice_page(self.ref_of(path))
363
+ pages.append((slug, title, text))
364
+ entries.append({title: f"reference/{slug}.md"})
365
+ nav.append({section: entries})
366
+ pages.append(("enums", "Enumerations", self.enum_page()))
367
+ pages.append(("schema", "Raw schema", self.schema_page()))
368
+ nav += [{"Enumerations": "reference/enums.md"}, {"Raw schema": "reference/schema.md"}]
369
+ return pages, nav
370
+
371
+
372
+ def scan_examples():
373
+ """(key, type) -> the example configurations using that type under that key."""
374
+ found = defaultdict(set)
375
+
376
+ def walk(value, key, path):
377
+ if isinstance(value, dict):
378
+ if "type" in value and key:
379
+ found[(key, value["type"])].add(path)
380
+ for child_key, child in value.items():
381
+ walk(child, child_key, path)
382
+ elif isinstance(value, list):
383
+ for child in value:
384
+ walk(child, key, path)
385
+
386
+ for file in sorted((ROOT / "examples" / "config").rglob("*.json")):
387
+ walk(json.loads(file.read_text()), "", str(file.relative_to(ROOT)))
388
+ return found
389
+
390
+
391
+ _STATE = {}
392
+
393
+
394
+ def on_config(config):
395
+ schema, catalog = load_schema()
396
+ reference = Reference(schema, catalog, scan_examples())
397
+ pages, nav = reference.pages()
398
+ _STATE["pages"] = pages
399
+ _STATE["schema"] = schema
400
+ _STATE["catalog"] = catalog
401
+ entry = {"Configuration": nav}
402
+ position = next(
403
+ (i for i, item in enumerate(config.nav) if isinstance(item, dict) and "API" in item),
404
+ len(config.nav),
405
+ )
406
+ config.nav.insert(position, entry)
407
+ return config
408
+
409
+
410
+ def on_files(files, config):
411
+ for slug, _, text in _STATE["pages"]:
412
+ files.append(File.generated(config, f"reference/{slug}.md", content=text + "\n"))
413
+ files.append(
414
+ File.generated(config, "reference/schema.json", content=json.dumps(_STATE["schema"], indent=2))
415
+ )
416
+ files.append(
417
+ File.generated(config, "reference/catalog.json", content=json.dumps(_STATE["catalog"], indent=2))
418
+ )
419
+ return files
@@ -0,0 +1,44 @@
1
+ {
2
+ "schema_version": 1,
3
+ "layers": [
4
+ {
5
+ "type": "noise",
6
+ "stack": [
7
+ {
8
+ "seed": 1,
9
+ "wavelength": 30,
10
+ "amplitude": 6,
11
+ "octaves": 4
12
+ }
13
+ ]
14
+ },
15
+ {
16
+ "type": "boulders",
17
+ "seed": 1,
18
+ "coverage": 0.06,
19
+ "min_diameter": 0.2,
20
+ "max_diameter": 3,
21
+ "max_slope": 0.35
22
+ }
23
+ ],
24
+ "outputs": [
25
+ {
26
+ "type": "heightmap",
27
+ "path": "example_boulders_max_slope.tif",
28
+ "region": {
29
+ "width": 401,
30
+ "height": 401,
31
+ "pixel_size": 0.1
32
+ }
33
+ },
34
+ {
35
+ "type": "boulder_list",
36
+ "path": "example_boulders_max_slope_boulders.csv",
37
+ "region": {
38
+ "width": 401,
39
+ "height": 401,
40
+ "pixel_size": 0.1
41
+ }
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "schema_version": 1,
3
+ "layers": [
4
+ {
5
+ "type": "noise",
6
+ "stack": [
7
+ {
8
+ "seed": 1,
9
+ "wavelength": 40,
10
+ "amplitude": 0.5,
11
+ "octaves": 6
12
+ }
13
+ ]
14
+ },
15
+ {
16
+ "type": "boulders",
17
+ "seed": 1,
18
+ "coverage": 0.05,
19
+ "min_diameter": 0.2,
20
+ "max_diameter": 3,
21
+ "density_map": {
22
+ "field": {
23
+ "value": 0.01
24
+ },
25
+ "measure": "areal_fraction",
26
+ "min_diameter": 1
27
+ },
28
+ "manual": [
29
+ {
30
+ "x": 5,
31
+ "y": -3,
32
+ "diameter": 4.5
33
+ },
34
+ {
35
+ "x": -8,
36
+ "y": 10,
37
+ "diameter": 3.2
38
+ }
39
+ ],
40
+ "completeness": {
41
+ "value": 3
42
+ }
43
+ }
44
+ ],
45
+ "outputs": [
46
+ {
47
+ "type": "heightmap",
48
+ "path": "example_boulders_rock_abundance.tif",
49
+ "region": {
50
+ "width": 401,
51
+ "height": 401,
52
+ "pixel_size": 0.1
53
+ }
54
+ },
55
+ {
56
+ "type": "boulder_list",
57
+ "path": "example_boulders_rock_abundance_boulders.csv",
58
+ "region": {
59
+ "width": 401,
60
+ "height": 401,
61
+ "pixel_size": 0.1
62
+ }
63
+ }
64
+ ]
65
+ }