terraingenpy 0.1.0.dev283__tar.gz → 0.1.1.dev6__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 (774) hide show
  1. terraingenpy-0.1.1.dev6/CHANGELOG.md +29 -0
  2. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CMakeLists.txt +1 -1
  3. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/PKG-INFO +1 -1
  4. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenSlang.cmake +7 -14
  5. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/kernel.cpp +1 -1
  6. terraingenpy-0.1.1.dev6/terraingen/gpu/kernel.slang +37 -0
  7. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/CMakeLists.txt +5 -5
  8. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply.cpp +257 -17
  9. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.cpp +4 -7
  10. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.h +9 -0
  11. terraingenpy-0.1.1.dev6/terraingen/layers/kernels/crater_datums.slang +34 -0
  12. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/craters.h +112 -0
  13. terraingenpy-0.1.1.dev6/terraingen/layers/kernels/craters.slang +40 -0
  14. terraingenpy-0.1.1.dev6/terraingen/layers/kernels/noise_relief.slang +24 -0
  15. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +64 -0
  16. terraingenpy-0.1.0.dev283/CHANGELOG.md +0 -8
  17. terraingenpy-0.1.0.dev283/cmake/CraterKernel.slang.in +0 -58
  18. terraingenpy-0.1.0.dev283/cmake/Kernel.slang.in +0 -43
  19. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.clang-format +0 -0
  20. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.clang-tidy +0 -0
  21. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.cmake-format.yaml +0 -0
  22. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.dockerignore +0 -0
  23. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.gitattributes +0 -0
  24. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  25. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  26. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  27. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/pull_request_template.md +0 -0
  28. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/scripts/install-lavapipe-windows.sh +0 -0
  29. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/workflows/ci.yml +0 -0
  30. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.gitignore +0 -0
  31. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.pre-commit-config.yaml +0 -0
  32. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CITATION.cff +0 -0
  33. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CONTRIBUTING.md +0 -0
  34. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/Dockerfile +0 -0
  35. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/LICENSE +0 -0
  36. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/README.md +0 -0
  37. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/README.md +0 -0
  38. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_diff_4k.jpg +0 -0
  39. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_disp_4k.png +0 -0
  40. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
  41. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_rough_4k.exr +0 -0
  42. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/BuildInfo.cmake +0 -0
  43. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/CoverageBadge.cmake +0 -0
  44. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/EmbedFile.cmake +0 -0
  45. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/Kernel.cpp.in +0 -0
  46. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenPackaging.cmake +0 -0
  47. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenTesting.cmake +0 -0
  48. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/terraingenConfig.cmake.in +0 -0
  49. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/benchmark.cmake +0 -0
  50. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/ernie.cmake +0 -0
  51. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/googletest.cmake +0 -0
  52. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/mesh_formats.cmake +0 -0
  53. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/miniz.cmake +0 -0
  54. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/nanobind.cmake +0 -0
  55. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/nvrtc.cmake +0 -0
  56. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/slang.cmake +0 -0
  57. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/volk.cmake +0 -0
  58. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/vulkan_headers.cmake +0 -0
  59. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/.gitignore +0 -0
  60. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/Makefile +0 -0
  61. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/README.md +0 -0
  62. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/api/cpp.md +0 -0
  63. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/api/python.md +0 -0
  64. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/concepts/index.md +0 -0
  65. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/css/extra.css +0 -0
  66. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/command-line.md +0 -0
  67. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/gui.md +0 -0
  68. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/index.md +0 -0
  69. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/installation.md +0 -0
  70. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/quickstart.md +0 -0
  71. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/guides/index.md +0 -0
  72. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/index.md +0 -0
  73. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/overrides/home.html +0 -0
  74. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/overrides/partials/header.html +0 -0
  75. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/requirements.txt +0 -0
  76. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/validation/index.md +0 -0
  77. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/README.md +0 -0
  78. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_fresh.json +0 -0
  79. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_steady_state.json +0 -0
  80. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_uniform.json +0 -0
  81. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
  82. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
  83. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
  84. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_moon_site.json +0 -0
  85. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_new_crater.json +0 -0
  86. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
  87. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_rgb.json +0 -0
  88. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_synthetic.json +0 -0
  89. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_buried.json +0 -0
  90. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_ejecta.json +0 -0
  91. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_exposure.json +0 -0
  92. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_fragments.json +0 -0
  93. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_layer.json +0 -0
  94. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_models.json +0 -0
  95. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_patches.json +0 -0
  96. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_scene.json +0 -0
  97. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_shapes.json +0 -0
  98. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_sp8023.json +0 -0
  99. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_datum.json +0 -0
  100. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
  101. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_degradation_none.json +0 -0
  102. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_interior_replacement.json +0 -0
  103. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_irregular.json +0 -0
  104. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_manual.json +0 -0
  105. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_max_craters.json +0 -0
  106. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_profile_complex.json +0 -0
  107. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
  108. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
  109. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_secondaries.json +0 -0
  110. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_secondary_rays.json +0 -0
  111. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_simple.json +0 -0
  112. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
  113. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_spacing.json +0 -0
  114. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_texture.json +0 -0
  115. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
  116. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
  117. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_power_law.json +0 -0
  118. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_tabulated.json +0 -0
  119. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
  120. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_viper.json +0 -0
  121. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_regions.json +0 -0
  122. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_roughness.json +0 -0
  123. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
  124. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
  125. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
  126. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_craters.json +0 -0
  127. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_dunes.json +0 -0
  128. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_exposure.json +0 -0
  129. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_pavement.json +0 -0
  130. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
  131. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
  132. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_strata.json +0 -0
  133. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
  134. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mercury_site.json +0 -0
  135. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
  136. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_moon_site.json +0 -0
  137. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_billow.json +0 -0
  138. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_cellular.json +0 -0
  139. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
  140. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_fbm.json +0 -0
  141. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_layered.json +0 -0
  142. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_ridged.json +0 -0
  143. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_roughness.json +0 -0
  144. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_voronoi.json +0 -0
  145. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/CMakeLists.txt +0 -0
  146. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/ages/example_ages_models.cpp +0 -0
  147. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
  148. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
  149. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
  150. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
  151. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/browser.cpp +0 -0
  152. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/browser.h +0 -0
  153. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/example.cpp +0 -0
  154. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/example.h +0 -0
  155. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/main.cpp +0 -0
  156. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/standalone_main.cpp +0 -0
  157. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/config/example_config_load.cpp +0 -0
  158. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
  159. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_manual.cpp +0 -0
  160. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
  161. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
  162. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_simple.cpp +0 -0
  163. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
  164. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/layers/example_layers_custom.cpp +0 -0
  165. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/layers/example_layers_regions.cpp +0 -0
  166. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/planets/example_planets_moon.cpp +0 -0
  167. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
  168. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
  169. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
  170. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
  171. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
  172. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
  173. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/__main__.py +0 -0
  174. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_browser.py +0 -0
  175. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_common.py +0 -0
  176. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_harness.py +0 -0
  177. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_images.py +0 -0
  178. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/ages/example_ages_models.py +0 -0
  179. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
  180. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_moon_site.py +0 -0
  181. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_options.py +0 -0
  182. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_exposure.py +0 -0
  183. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_layer.py +0 -0
  184. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_positioning.py +0 -0
  185. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_shapes.py +0 -0
  186. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_size_models.py +0 -0
  187. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/config/example_config_load.py +0 -0
  188. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_age_sweep.py +0 -0
  189. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_apply_options.py +0 -0
  190. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_degradation.py +0 -0
  191. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_irregularity.py +0 -0
  192. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_manual.py +0 -0
  193. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_positioning.py +0 -0
  194. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_profiles.py +0 -0
  195. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
  196. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_secondaries.py +0 -0
  197. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_simple.py +0 -0
  198. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/distributions/example_distributions_csfd.py +0 -0
  199. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/distributions/example_distributions_custom.py +0 -0
  200. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/layers/example_layers_custom.py +0 -0
  201. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/layers/example_layers_regions.py +0 -0
  202. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_body_mesh.py +0 -0
  203. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars.py +0 -0
  204. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars_dunes.py +0 -0
  205. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars_exposure.py +0 -0
  206. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mercury.py +0 -0
  207. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_moon_site.py +0 -0
  208. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/sources/example_sources_chain.py +0 -0
  209. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/sources/example_sources_raster_detail.py +0 -0
  210. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_fbm.py +0 -0
  211. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
  212. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
  213. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_layered.py +0 -0
  214. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
  215. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
  216. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_point_queries.py +0 -0
  217. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_quadtree.py +0 -0
  218. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
  219. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/mkdocs.yml +0 -0
  220. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/pyproject.toml +0 -0
  221. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/CMakeLists.txt +0 -0
  222. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/CMakeLists.txt +0 -0
  223. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/albedo.cpp +0 -0
  224. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/albedo.h +0 -0
  225. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/blast_zones.cpp +0 -0
  226. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/blast_zones.h +0 -0
  227. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/crater_albedo.cpp +0 -0
  228. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/crater_albedo.h +0 -0
  229. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/maturity.cpp +0 -0
  230. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/maturity.h +0 -0
  231. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/raster_albedo.cpp +0 -0
  232. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/raster_albedo.h +0 -0
  233. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/splotches.cpp +0 -0
  234. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/splotches.h +0 -0
  235. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/synthetic.cpp +0 -0
  236. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/synthetic.h +0 -0
  237. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/CMakeLists.txt +0 -0
  238. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/cli.cpp +0 -0
  239. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/cli.h +0 -0
  240. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/CMakeLists.txt +0 -0
  241. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/config_editor.cpp +0 -0
  242. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/config_editor.h +0 -0
  243. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/gui_app.cpp +0 -0
  244. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/gui_app.h +0 -0
  245. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run.cpp +0 -0
  246. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run.h +0 -0
  247. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run_none.cpp +0 -0
  248. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/terrain_scene.cpp +0 -0
  249. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/terrain_scene.h +0 -0
  250. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/main.cpp +0 -0
  251. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/CMakeLists.txt +0 -0
  252. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/build.cpp +0 -0
  253. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/build.h +0 -0
  254. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/config.cpp +0 -0
  255. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/config.h +0 -0
  256. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/feature_lists.cpp +0 -0
  257. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/albedo.h +0 -0
  258. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/boulders.h +0 -0
  259. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/checks.h +0 -0
  260. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/common.h +0 -0
  261. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/crater_models.h +0 -0
  262. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/craters.h +0 -0
  263. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/enums.h +0 -0
  264. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/fields.h +0 -0
  265. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/json_io.h +0 -0
  266. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/layers.h +0 -0
  267. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/materials.h +0 -0
  268. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/outputs.h +0 -0
  269. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/sources.h +0 -0
  270. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/generate.cpp +0 -0
  271. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/generate.h +0 -0
  272. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/json.cpp +0 -0
  273. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/json.h +0 -0
  274. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/schema.cpp +0 -0
  275. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/validate.cpp +0 -0
  276. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/validate.h +0 -0
  277. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/CMakeLists.txt +0 -0
  278. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/combined.cpp +0 -0
  279. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/combined.h +0 -0
  280. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/equilibrium.cpp +0 -0
  281. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/equilibrium.h +0 -0
  282. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/golombek_rapp.cpp +0 -0
  283. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/golombek_rapp.h +0 -0
  284. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/ivanov.cpp +0 -0
  285. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/ivanov.h +0 -0
  286. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/log_polynomial.cpp +0 -0
  287. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/log_polynomial.h +0 -0
  288. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/minimum.cpp +0 -0
  289. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/minimum.h +0 -0
  290. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/moore.cpp +0 -0
  291. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/moore.h +0 -0
  292. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/neukum.cpp +0 -0
  293. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/neukum.h +0 -0
  294. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/piecewise_power_law.cpp +0 -0
  295. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/piecewise_power_law.h +0 -0
  296. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/power_law.cpp +0 -0
  297. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/power_law.h +0 -0
  298. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/production_surface.cpp +0 -0
  299. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/production_surface.h +0 -0
  300. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/size_frequency.cpp +0 -0
  301. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/size_frequency.h +0 -0
  302. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/sp8023.cpp +0 -0
  303. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/sp8023.h +0 -0
  304. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/spliced.cpp +0 -0
  305. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/spliced.h +0 -0
  306. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/summed.cpp +0 -0
  307. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/summed.h +0 -0
  308. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/synthterrain.cpp +0 -0
  309. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/synthterrain.h +0 -0
  310. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/tabulated.cpp +0 -0
  311. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/tabulated.h +0 -0
  312. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/viper.cpp +0 -0
  313. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/viper.h +0 -0
  314. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/CMakeLists.txt +0 -0
  315. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/backend.cpp +0 -0
  316. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/backend.h +0 -0
  317. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/cuda.cpp +0 -0
  318. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/cuda.h +0 -0
  319. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/kernel.h +0 -0
  320. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/metal.cpp +0 -0
  321. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/metal.h +0 -0
  322. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/program.h +0 -0
  323. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/vulkan.cpp +0 -0
  324. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/vulkan.h +0 -0
  325. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/bedforms.cpp +0 -0
  326. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/bedforms.h +0 -0
  327. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/abundance.cpp +0 -0
  328. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder.h +0 -0
  329. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
  330. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_fragments.h +0 -0
  331. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_layer.cpp +0 -0
  332. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_layer.h +0 -0
  333. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_models.cpp +0 -0
  334. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_models.h +0 -0
  335. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_options.cpp +0 -0
  336. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_options.h +0 -0
  337. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_placer.h +0 -0
  338. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
  339. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_shape.h +0 -0
  340. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/age_model.cpp +0 -0
  341. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/age_model.h +0 -0
  342. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
  343. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/steady_state.h +0 -0
  344. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater.cpp +0 -0
  345. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater.h +0 -0
  346. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_layer.cpp +0 -0
  347. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_layer.h +0 -0
  348. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_placer.cpp +0 -0
  349. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_placer.h +0 -0
  350. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
  351. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
  352. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusion.cpp +0 -0
  353. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusion.h +0 -0
  354. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
  355. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
  356. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
  357. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/freshness.h +0 -0
  358. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/state.h +0 -0
  359. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
  360. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/cell_cache.h +0 -0
  361. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/population.cpp +0 -0
  362. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/population.h +0 -0
  363. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/spacing.cpp +0 -0
  364. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/spacing.h +0 -0
  365. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/complex.cpp +0 -0
  366. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/complex.h +0 -0
  367. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
  368. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
  369. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
  370. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
  371. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/profile.h +0 -0
  372. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/rays.cpp +0 -0
  373. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/rays.h +0 -0
  374. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/secondaries.cpp +0 -0
  375. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/secondaries.h +0 -0
  376. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply.h +0 -0
  377. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
  378. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply_options.h +0 -0
  379. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
  380. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/attributes.h +0 -0
  381. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
  382. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
  383. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
  384. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/irregularity.h +0 -0
  385. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
  386. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/morphometry.h +0 -0
  387. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
  388. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/prepared.h +0 -0
  389. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/detail.cpp +0 -0
  390. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/detail.h +0 -0
  391. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/dunes.cpp +0 -0
  392. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/dunes.h +0 -0
  393. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/evaluation_cache.h +0 -0
  394. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/exposure.cpp +0 -0
  395. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/exposure.h +0 -0
  396. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/fade.cpp +0 -0
  397. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/fade.h +0 -0
  398. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/ground.h +0 -0
  399. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernel.h +0 -0
  400. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/cell.h +0 -0
  401. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/noise_relief.h +0 -0
  402. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/layer.cpp +0 -0
  403. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/layer.h +0 -0
  404. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/material.cpp +0 -0
  405. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/material.h +0 -0
  406. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/noise_relief.cpp +0 -0
  407. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/noise_relief.h +0 -0
  408. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/pavement.cpp +0 -0
  409. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/pavement.h +0 -0
  410. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/region.cpp +0 -0
  411. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/region.h +0 -0
  412. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/roughness.cpp +0 -0
  413. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/roughness.h +0 -0
  414. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sample_block.cpp +0 -0
  415. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sample_block.h +0 -0
  416. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_fill.cpp +0 -0
  417. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_fill.h +0 -0
  418. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_shadow.cpp +0 -0
  419. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_shadow.h +0 -0
  420. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/strata.cpp +0 -0
  421. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/strata.h +0 -0
  422. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/transforms.cpp +0 -0
  423. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/transforms.h +0 -0
  424. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/CMakeLists.txt +0 -0
  425. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/materials.cpp +0 -0
  426. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/materials.h +0 -0
  427. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/CMakeLists.txt +0 -0
  428. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/formats.h +0 -0
  429. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/gltf.cpp +0 -0
  430. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/icq.cpp +0 -0
  431. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/icq.h +0 -0
  432. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/mesh_io.cpp +0 -0
  433. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/mesh_io.h +0 -0
  434. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/obj.cpp +0 -0
  435. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/stl.cpp +0 -0
  436. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/mesh.cpp +0 -0
  437. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/mesh.h +0 -0
  438. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/polyhedra.cpp +0 -0
  439. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/polyhedra.h +0 -0
  440. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/shape_model.cpp +0 -0
  441. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/shape_model.h +0 -0
  442. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/CMakeLists.txt +0 -0
  443. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/fractal.h +0 -0
  444. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/hash.h +0 -0
  445. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/lattice.h +0 -0
  446. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/noise_layers.h +0 -0
  447. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/perlin.h +0 -0
  448. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/simplex.h +0 -0
  449. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/validate.cpp +0 -0
  450. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/validate.h +0 -0
  451. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/value.h +0 -0
  452. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/worley.h +0 -0
  453. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/CMakeLists.txt +0 -0
  454. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/body_mesh.cpp +0 -0
  455. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/body_mesh.h +0 -0
  456. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/features.cpp +0 -0
  457. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/features.h +0 -0
  458. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/height_mesh.cpp +0 -0
  459. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/height_mesh.h +0 -0
  460. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/terrain.cpp +0 -0
  461. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/terrain.h +0 -0
  462. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/tiles.cpp +0 -0
  463. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/tiles.h +0 -0
  464. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/CMakeLists.txt +0 -0
  465. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/albedo.cpp +0 -0
  466. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/bindings.h +0 -0
  467. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/boulders.cpp +0 -0
  468. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/casters.h +0 -0
  469. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/common.h +0 -0
  470. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/crater_models.cpp +0 -0
  471. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/craters.cpp +0 -0
  472. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/distribution.cpp +0 -0
  473. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/gpu.cpp +0 -0
  474. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/layers.cpp +0 -0
  475. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/materials.cpp +0 -0
  476. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/mesh.cpp +0 -0
  477. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/module.cpp +0 -0
  478. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/noise.cpp +0 -0
  479. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/objects.h +0 -0
  480. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/pipeline.cpp +0 -0
  481. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/random.cpp +0 -0
  482. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/raster.cpp +0 -0
  483. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/sources.cpp +0 -0
  484. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/tables.h +0 -0
  485. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/trampolines.h +0 -0
  486. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/util.cpp +0 -0
  487. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/terraingen/__init__.py +0 -0
  488. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/terraingen/render.py +0 -0
  489. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/CMakeLists.txt +0 -0
  490. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/philox.h +0 -0
  491. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/samplers.cpp +0 -0
  492. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/samplers.h +0 -0
  493. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/stream.cpp +0 -0
  494. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/stream.h +0 -0
  495. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/value_distribution.cpp +0 -0
  496. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/value_distribution.h +0 -0
  497. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/CMakeLists.txt +0 -0
  498. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/cell_loops.cpp +0 -0
  499. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/cell_loops.h +0 -0
  500. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/gaussian_blur.cpp +0 -0
  501. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/gaussian_blur.h +0 -0
  502. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geo_transform.h +0 -0
  503. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff.cpp +0 -0
  504. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff.h +0 -0
  505. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
  506. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
  507. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
  508. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
  509. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
  510. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_format.h +0 -0
  511. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/grid.cpp +0 -0
  512. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/grid.h +0 -0
  513. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/raster.h +0 -0
  514. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/raster_stats.h +0 -0
  515. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/resample.cpp +0 -0
  516. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/resample.h +0 -0
  517. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/CMakeLists.txt +0 -0
  518. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/flat_source.cpp +0 -0
  519. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/flat_source.h +0 -0
  520. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/geotiff_source.cpp +0 -0
  521. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/geotiff_source.h +0 -0
  522. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source.h +0 -0
  523. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source_chain.cpp +0 -0
  524. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source_chain.h +0 -0
  525. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/synthetic_terrain.cpp +0 -0
  526. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/synthetic_terrain.h +0 -0
  527. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/terraingen.h +0 -0
  528. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/CMakeLists.txt +0 -0
  529. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/build_info.cpp.in +0 -0
  530. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/build_info.h +0 -0
  531. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cells.h +0 -0
  532. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/checks.cpp +0 -0
  533. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/checks.h +0 -0
  534. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cube_faces.h +0 -0
  535. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cube_sphere_cells.cpp +0 -0
  536. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/fft.cpp +0 -0
  537. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/fft.h +0 -0
  538. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/geometry.h +0 -0
  539. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/log.cpp +0 -0
  540. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/log.h +0 -0
  541. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/lru_cache.h +0 -0
  542. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/overloaded.h +0 -0
  543. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/parallel.cpp +0 -0
  544. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/parallel.h +0 -0
  545. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/planar_cells.cpp +0 -0
  546. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/portable.h +0 -0
  547. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/radial_shape.cpp +0 -0
  548. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/radial_shape.h +0 -0
  549. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/special_functions.cpp +0 -0
  550. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/special_functions.h +0 -0
  551. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/surface.cpp +0 -0
  552. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/surface.h +0 -0
  553. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/version.cpp +0 -0
  554. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/version.h.in +0 -0
  555. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/CMakeLists.txt +0 -0
  556. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/CMakeLists.txt +0 -0
  557. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_craters.cpp +0 -0
  558. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_grids.cpp +0 -0
  559. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_point_queries.cpp +0 -0
  560. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_python_subclasses.py +0 -0
  561. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/fixtures.h +0 -0
  562. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/golden/CMakeLists.txt +0 -0
  563. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/golden/noise/kernels_test.cpp +0 -0
  564. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/CMakeLists.txt +0 -0
  565. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/build_info_stable.cmake +0 -0
  566. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/examples/CMakeLists.txt +0 -0
  567. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/CMakeLists.txt +0 -0
  568. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/main.cpp +0 -0
  569. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/test_debian_packages.cmake +0 -0
  570. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/CMakeLists.txt +0 -0
  571. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/conftest.py +0 -0
  572. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_albedo.py +0 -0
  573. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_boulders.py +0 -0
  574. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_config.py +0 -0
  575. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_crater_models.py +0 -0
  576. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_craters.py +0 -0
  577. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_distributions.py +0 -0
  578. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_examples_harness.py +0 -0
  579. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_gpu.py +0 -0
  580. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_layers.py +0 -0
  581. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_meshes.py +0 -0
  582. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_noise.py +0 -0
  583. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_pipeline.py +0 -0
  584. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_random.py +0 -0
  585. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_raster.py +0 -0
  586. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_render.py +0 -0
  587. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_sources.py +0 -0
  588. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_stubs.py +0 -0
  589. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_tiles.py +0 -0
  590. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_util.py +0 -0
  591. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/CMakeLists.txt +0 -0
  592. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/distribution/crater_references_test.cpp +0 -0
  593. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
  594. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
  595. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
  596. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/craters/population_test.cpp +0 -0
  597. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/roughness_test.cpp +0 -0
  598. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/random/random_test.cpp +0 -0
  599. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/log_capture.h +0 -0
  600. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/lunar_craters.h +0 -0
  601. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/raster_equality.h +0 -0
  602. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/statistics.h +0 -0
  603. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/temp_path.h +0 -0
  604. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/CMakeLists.txt +0 -0
  605. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/CMakeLists.txt +0 -0
  606. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/albedo_test.cpp +0 -0
  607. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/blast_zones_test.cpp +0 -0
  608. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
  609. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/splotches_test.cpp +0 -0
  610. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/CMakeLists.txt +0 -0
  611. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/cli_test.cpp +0 -0
  612. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/CMakeLists.txt +0 -0
  613. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/config_editor_test.cpp +0 -0
  614. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/gui_app_test.cpp +0 -0
  615. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
  616. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/CMakeLists.txt +0 -0
  617. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/build_test.cpp +0 -0
  618. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/checks_test.cpp +0 -0
  619. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/config_test.cpp +0 -0
  620. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/configs.h +0 -0
  621. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/feature_lists_test.cpp +0 -0
  622. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/generate_terrain_test.cpp +0 -0
  623. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_io_test.cpp +0 -0
  624. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_parse_errors_test.cpp +0 -0
  625. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_read_test.cpp +0 -0
  626. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/schema_test.cpp +0 -0
  627. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/validate_config_test.cpp +0 -0
  628. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/validate_sources_test.cpp +0 -0
  629. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/write_outputs_test.cpp +0 -0
  630. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/CMakeLists.txt +0 -0
  631. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/combined_test.cpp +0 -0
  632. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/equilibrium_test.cpp +0 -0
  633. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
  634. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/ivanov_test.cpp +0 -0
  635. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
  636. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/minimum_test.cpp +0 -0
  637. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/moore_test.cpp +0 -0
  638. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/neukum_test.cpp +0 -0
  639. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
  640. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/power_law_test.cpp +0 -0
  641. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/production_surface_test.cpp +0 -0
  642. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/size_frequency_test.cpp +0 -0
  643. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/sp8023_test.cpp +0 -0
  644. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/spliced_test.cpp +0 -0
  645. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/summed_test.cpp +0 -0
  646. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/synthterrain_test.cpp +0 -0
  647. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/tabulated_test.cpp +0 -0
  648. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/viper_test.cpp +0 -0
  649. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/CMakeLists.txt +0 -0
  650. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/example_browser_test.cpp +0 -0
  651. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/example_harness_test.cpp +0 -0
  652. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/CMakeLists.txt +0 -0
  653. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/backend_test.cpp +0 -0
  654. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
  655. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
  656. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/noise_test.cpp +0 -0
  657. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/vulkan_test.cpp +0 -0
  658. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/CMakeLists.txt +0 -0
  659. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/bedforms_test.cpp +0 -0
  660. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
  661. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_layer_test.cpp +0 -0
  662. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
  663. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
  664. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
  665. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
  666. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
  667. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
  668. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/crater_test.cpp +0 -0
  669. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
  670. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
  671. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
  672. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
  673. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/population_test.cpp +0 -0
  674. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
  675. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
  676. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
  677. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
  678. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
  679. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
  680. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
  681. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
  682. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
  683. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
  684. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/sphere_test.cpp +0 -0
  685. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/detail_test.cpp +0 -0
  686. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/dunes_test.cpp +0 -0
  687. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
  688. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/exposure_test.cpp +0 -0
  689. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/fade_test.cpp +0 -0
  690. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/layer_test.cpp +0 -0
  691. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/noise_relief_test.cpp +0 -0
  692. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/pavement_test.cpp +0 -0
  693. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/region_test.cpp +0 -0
  694. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/roughness_test.cpp +0 -0
  695. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sample_block_test.cpp +0 -0
  696. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sand_fill_test.cpp +0 -0
  697. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sand_shadow_test.cpp +0 -0
  698. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sphere_layers_test.cpp +0 -0
  699. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/strata_test.cpp +0 -0
  700. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/transforms_test.cpp +0 -0
  701. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/materials/CMakeLists.txt +0 -0
  702. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/materials/materials_test.cpp +0 -0
  703. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/CMakeLists.txt +0 -0
  704. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/io/icq_test.cpp +0 -0
  705. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
  706. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/mesh_test.cpp +0 -0
  707. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/polyhedra_test.cpp +0 -0
  708. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/shape_model_test.cpp +0 -0
  709. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/support.h +0 -0
  710. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/CMakeLists.txt +0 -0
  711. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/fractal_test.cpp +0 -0
  712. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/hash_test.cpp +0 -0
  713. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/noise3_test.cpp +0 -0
  714. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/noise_layers_test.cpp +0 -0
  715. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/perlin_test.cpp +0 -0
  716. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/simplex_test.cpp +0 -0
  717. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/validate_test.cpp +0 -0
  718. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/value_test.cpp +0 -0
  719. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/worley_test.cpp +0 -0
  720. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/CMakeLists.txt +0 -0
  721. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/features_test.cpp +0 -0
  722. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
  723. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrain_test.cpp +0 -0
  724. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
  725. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrains.h +0 -0
  726. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
  727. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/tiling_test.cpp +0 -0
  728. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/CMakeLists.txt +0 -0
  729. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/philox_test.cpp +0 -0
  730. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/samplers_test.cpp +0 -0
  731. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/stream_test.cpp +0 -0
  732. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/value_distribution_test.cpp +0 -0
  733. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/CMakeLists.txt +0 -0
  734. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/cell_loops_test.cpp +0 -0
  735. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
  736. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/gdal_fixtures.h +0 -0
  737. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
  738. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geo_transform_test.cpp +0 -0
  739. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geotiff_fixtures.inc +0 -0
  740. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geotiff_test.cpp +0 -0
  741. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/grid_test.cpp +0 -0
  742. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/raster_stats_test.cpp +0 -0
  743. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/raster_test.cpp +0 -0
  744. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/resample_test.cpp +0 -0
  745. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/tiff_format_test.cpp +0 -0
  746. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/CMakeLists.txt +0 -0
  747. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/flat_source_test.cpp +0 -0
  748. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/geotiff_source_test.cpp +0 -0
  749. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/source_chain_test.cpp +0 -0
  750. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
  751. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/CMakeLists.txt +0 -0
  752. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/cells_test.cpp +0 -0
  753. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/checks_test.cpp +0 -0
  754. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/fft_test.cpp +0 -0
  755. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/geometry_test.cpp +0 -0
  756. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/log_test.cpp +0 -0
  757. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/lru_cache_test.cpp +0 -0
  758. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/overloaded_test.cpp +0 -0
  759. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/parallel_test.cpp +0 -0
  760. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/radial_shape_test.cpp +0 -0
  761. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/special_functions_test.cpp +0 -0
  762. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/surface_test.cpp +0 -0
  763. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/version_test.cpp +0 -0
  764. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/README.md +0 -0
  765. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/LICENSE +0 -0
  766. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/cgltf.h +0 -0
  767. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/cgltf_write.h +0 -0
  768. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/LICENSE +0 -0
  769. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/miniz.c +0 -0
  770. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/miniz.h +0 -0
  771. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/nlohmann/LICENSE.MIT +0 -0
  772. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/nlohmann/json.hpp +0 -0
  773. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/tinyobjloader/LICENSE +0 -0
  774. {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
@@ -0,0 +1,29 @@
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
+ ## [0.1.0] - 2026-10-18
11
+
12
+ Initial release.
13
+
14
+ ### Added
15
+
16
+ - C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
17
+ - Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
18
+ - Procedural 3D boulder models, and small boulders baked into the heightmap.
19
+ - Synthetic albedo with crater ejecta and rays that fade with age.
20
+ - Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
21
+ - Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
22
+ - Deterministic output for a seed on any grid, tile or thread count.
23
+ - GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
24
+ - `terraingen` command-line interface driven by JSON configurations.
25
+ - Examples in C++, Python and JSON.
26
+ - Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
27
+
28
+ [Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
29
+ [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.0.dev283")
11
+ set(TERRAINGEN_FULL_VERSION "0.1.1.dev6")
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.0.dev283
3
+ Version: 0.1.1.dev6
4
4
  Summary: Scientific terrain generation for planetary surfaces
5
5
  Keywords: terrain,moon,mars,craters,planetary science,simulation
6
6
  Author: Alex Maietta
@@ -73,24 +73,17 @@ function(terraingen_add_slang_kernel target symbol source)
73
73
  spirv_1_3)
74
74
  endfunction()
75
75
 
76
- # terraingen_add_kernel(<target> <symbol> <type> <header>): compiles the kernel terraingen::<type>
77
- # for every GPU backend the build supports and defines `CompiledKernel<type>()` in <target>. <header>,
78
- # relative to the repository root, is a kernel header (see util/portable.h) declaring the plain
79
- # struct <type>, `float ApplyCell(<type> kernel, float height, CellPosition position)` and the
80
- # `CompiledKernel` specialization; the generated entry point (cmake/Kernel.slang.in) applies it to grid
81
- # cells for RunKernel. A form the build cannot make is embedded empty. TEMPLATE names another
82
- # entry point, for kernels that bind more buffers (cmake/CraterKernel.slang.in).
83
- function(terraingen_add_kernel target symbol type header)
84
- cmake_parse_arguments(PARSE_ARGV 4 ARG "" "TEMPLATE" "")
85
- if(NOT ARG_TEMPLATE)
86
- set(ARG_TEMPLATE "${PROJECT_SOURCE_DIR}/cmake/Kernel.slang.in")
87
- endif()
76
+ # terraingen_add_kernel(<target> <symbol> <type> <header> <source>): compiles the Slang compute
77
+ # kernel <source> (entry point "main", including terraingen/gpu/kernel.slang) for every GPU backend
78
+ # the build supports and defines `CompiledKernel<type>()` in <target>. <header>, relative to the
79
+ # repository root, is the kernel header (see util/portable.h) declaring the plain struct <type>
80
+ # that <source> binds and the `CompiledKernel` specialization. A form the build cannot make is
81
+ # embedded empty.
82
+ function(terraingen_add_kernel target symbol type header source)
88
83
  set(KERNEL_TYPE "${type}")
89
84
  set(KERNEL_HEADER "${header}")
90
85
  set(KERNEL_SYMBOL "${symbol}")
91
86
  set(directory "${CMAKE_CURRENT_BINARY_DIR}/kernels")
92
- set(source "${directory}/${symbol}.slang")
93
- configure_file("${ARG_TEMPLATE}" "${source}" @ONLY)
94
87
  configure_file("${PROJECT_SOURCE_DIR}/cmake/Kernel.cpp.in" "${directory}/${symbol}_program.cpp"
95
88
  @ONLY)
96
89
  target_sources(${target} PRIVATE "${directory}/${symbol}_program.cpp")
@@ -24,7 +24,7 @@ constexpr std::size_t kGroupSide = 16;
24
24
  /// Most workgroups Vulkan guarantees in one dimension of a dispatch; CUDA and Metal allow more.
25
25
  constexpr std::size_t kMaxGroups = 65535;
26
26
 
27
- /// The push constants of kernels (`cmake/Kernel.slang.in`).
27
+ /// The push constants of kernels (`terraingen/gpu/kernel.slang`).
28
28
  struct KernelParams {
29
29
  std::uint32_t width = 0;
30
30
  std::uint32_t rows = 0;
@@ -0,0 +1,37 @@
1
+ // What every TerrainGen compute kernel binds first: the grid strip's heights and its column and
2
+ // row positions, and the layout of the push constants of RunKernel (terraingen/gpu/kernel.cpp).
3
+ // Kernel sources include this, bind their kernel struct at 3 and any extra buffers from 4 on, and
4
+ // declare `params` after every buffer: Metal numbers buffers in declaration order and RunKernel
5
+ // passes the push constants after the last one.
6
+
7
+ [[vk::binding(0, 0)]] RWStructuredBuffer<float> heights;
8
+ [[vk::binding(1, 0)]] StructuredBuffer<float> xs;
9
+ [[vk::binding(2, 0)]] StructuredBuffer<float> ys;
10
+
11
+ struct Params {
12
+ uint width;
13
+ uint rows;
14
+ uint noData;
15
+ float noDataValue;
16
+ uint firstRow;
17
+ };
18
+
19
+ namespace terraingen {
20
+
21
+ static const uint kNoDataNone = 0u;
22
+ static const uint kNoDataNan = 1u;
23
+
24
+ /// Whether the thread `id` falls inside the strip.
25
+ bool InStrip(Params params, uint3 id) {
26
+ return id.x < params.width && id.y < params.rows;
27
+ }
28
+
29
+ /// Whether `height` is the grid's no-data value, which kernels leave as it is.
30
+ bool IsNoData(Params params, float height) {
31
+ if (params.noData == kNoDataNan) {
32
+ return isnan(height);
33
+ }
34
+ return params.noData != kNoDataNone && height == params.noDataValue;
35
+ }
36
+
37
+ } // namespace terraingen
@@ -58,8 +58,8 @@ terraingen_add_library(
58
58
  terraingen_sources
59
59
  terraingen_util)
60
60
  terraingen_add_kernel(terraingen_layers terraingen_kernel_noise_relief NoiseReliefKernel
61
- terraingen/layers/kernels/noise_relief.h)
62
- terraingen_add_kernel(
63
- terraingen_layers terraingen_kernel_craters CraterShapeKernel
64
- terraingen/layers/kernels/craters.h TEMPLATE
65
- "${PROJECT_SOURCE_DIR}/cmake/CraterKernel.slang.in")
61
+ terraingen/layers/kernels/noise_relief.h kernels/noise_relief.slang)
62
+ terraingen_add_kernel(terraingen_layers terraingen_kernel_craters CraterShapeKernel
63
+ terraingen/layers/kernels/craters.h kernels/craters.slang)
64
+ terraingen_add_kernel(terraingen_layers terraingen_kernel_crater_datums CraterDatumKernel
65
+ terraingen/layers/kernels/craters.h kernels/crater_datums.slang)
@@ -13,7 +13,9 @@
13
13
  #include <algorithm>
14
14
  #include <array>
15
15
  #include <cmath>
16
+ #include <cstdint>
16
17
  #include <limits>
18
+ #include <map>
17
19
  #include <numbers>
18
20
  #include <optional>
19
21
  #include <stdexcept>
@@ -181,11 +183,227 @@ Bounds2d Footprint(const PreparedCrater& prepared, double reachRadii, const Surf
181
183
  return surface.Expand({crater.x, crater.y, crater.x, crater.y}, reach);
182
184
  }
183
185
 
186
+ /// Craters indexed for `KernelDatumRelief`, with the kernel that reads them.
187
+ ///
188
+ /// Records hold each crater's position as the float nearest it and `lows` what that float drops,
189
+ /// so the kernel takes differences between nearby craters exactly; bands and cells are at absolute
190
+ /// positions. The relief summed at a point therefore depends only on the craters reaching it, not
191
+ /// on which others an index holds, and grids and points fit the same datums.
192
+ struct DatumKernelIndex {
193
+ CraterDatumKernel kernel;
194
+ CraterKernelBatch batch;
195
+ std::vector<float> lows;
196
+ /// Per size band: its cell size, which is its largest reach, and its first cell's column and
197
+ /// row.
198
+ std::vector<float> bandFloats;
199
+ /// Per size band: its cells across and down and its first cell.
200
+ std::vector<std::uint32_t> bandCells;
201
+ /// Per cell: its first entry and its entry count.
202
+ std::vector<std::uint32_t> cells;
203
+ /// Indices into the records, ascending within each cell.
204
+ std::vector<std::uint32_t> entries;
205
+ /// The record of each prepared crater, for the craters indexed.
206
+ std::vector<std::uint32_t> slot;
207
+ };
208
+
209
+ /// Most cells `IndexDatumRelief` lays out, and the largest cell column or row a float holds
210
+ /// exactly enough, before datums are left to the double path.
211
+ constexpr std::size_t kMaxReliefCells = std::size_t{1} << 24;
212
+ constexpr float kMaxReliefCellIndex = 8388608.0f;
213
+
214
+ /// The size band of `crater`: its diameter stretched by its outline, as a power of two.
215
+ int ReliefBand(const PreparedCrater& crater) {
216
+ return std::ilogb(crater.crater.diameter * crater.outline.MaxScale());
217
+ }
218
+
219
+ /// Indexes the craters of `prepared` that can reach the datum footprint of any of `fitted`, in
220
+ /// size bands of cells as wide as each band's largest reach; nothing for craters spread too far.
221
+ std::optional<DatumKernelIndex> IndexDatumRelief(const std::vector<PreparedCrater>& prepared,
222
+ const std::vector<std::size_t>& fitted,
223
+ const CraterProfile& profile,
224
+ const CraterShapeKernel& shape,
225
+ const CraterApplyOptions& options) {
226
+ constexpr double kInfinity = std::numeric_limits<double>::infinity();
227
+ Bounds2d region{kInfinity, kInfinity, -kInfinity, -kInfinity};
228
+ std::vector<bool> isFitted(prepared.size(), false);
229
+ for (const std::size_t k : fitted) {
230
+ const Crater& c = prepared[k].crater;
231
+ const double fitRadius = options.datumFitRadii * 0.5 * c.diameter;
232
+ region = {std::fmin(region.minX, c.x - fitRadius), std::fmin(region.minY, c.y - fitRadius),
233
+ std::fmax(region.maxX, c.x + fitRadius), std::fmax(region.maxY, c.y + fitRadius)};
234
+ isFitted[k] = true;
235
+ }
236
+ const std::size_t last = *std::max_element(fitted.begin(), fitted.end());
237
+ DatumKernelIndex index;
238
+ index.slot.assign(prepared.size(), 0);
239
+ std::vector<std::size_t> kept;
240
+ for (std::size_t n = 0; n <= last; ++n) {
241
+ const PreparedCrater& p = prepared[n];
242
+ const double reach = p.outline.MaxScale() * profile.ReachRadii() * 0.5 * p.crater.diameter;
243
+ if (isFitted[n] || (p.crater.x + reach > region.minX && p.crater.x - reach < region.maxX &&
244
+ p.crater.y + reach > region.minY && p.crater.y - reach < region.maxY)) {
245
+ index.slot[n] = static_cast<std::uint32_t>(kept.size());
246
+ kept.push_back(n);
247
+ }
248
+ }
249
+ index.batch = MakeCraterKernelBatch(shape, profile, prepared, kept, options);
250
+ if (index.batch.data.empty()) {
251
+ index.batch.data.push_back(0.0f);
252
+ }
253
+ index.lows.resize(2 * kept.size());
254
+ std::map<int, std::vector<std::uint32_t>> bands;
255
+ for (std::size_t m = 0; m < kept.size(); ++m) {
256
+ const Crater& c = prepared[kept[m]].crater;
257
+ CraterRecord& record = index.batch.records[m];
258
+ record.x = static_cast<float>(c.x);
259
+ record.y = static_cast<float>(c.y);
260
+ index.lows[2 * m] = static_cast<float>(c.x - static_cast<double>(record.x));
261
+ index.lows[2 * m + 1] = static_cast<float>(c.y - static_cast<double>(record.y));
262
+ bands[ReliefBand(prepared[kept[m]])].push_back(static_cast<std::uint32_t>(m));
263
+ }
264
+ std::vector<std::uint32_t> cellOf;
265
+ std::vector<std::uint32_t> filled;
266
+ for (const auto& [band, members] : bands) {
267
+ const auto size = static_cast<float>(1.0001 * profile.ReachRadii() * std::ldexp(1.0, band));
268
+ float minI = std::numeric_limits<float>::infinity();
269
+ float minJ = minI;
270
+ float maxI = -minI;
271
+ float maxJ = -minI;
272
+ for (const std::uint32_t m : members) {
273
+ const float i = std::floor(index.batch.records[m].x / size);
274
+ const float j = std::floor(index.batch.records[m].y / size);
275
+ minI = std::fmin(minI, i);
276
+ minJ = std::fmin(minJ, j);
277
+ maxI = std::fmax(maxI, i);
278
+ maxJ = std::fmax(maxJ, j);
279
+ }
280
+ const std::size_t first = index.cells.size() / 2;
281
+ const auto across = static_cast<std::size_t>(maxI - minI) + 1;
282
+ const auto down = static_cast<std::size_t>(maxJ - minJ) + 1;
283
+ if (std::fmax(std::fabs(minI), std::fabs(maxI)) >= kMaxReliefCellIndex ||
284
+ std::fmax(std::fabs(minJ), std::fabs(maxJ)) >= kMaxReliefCellIndex ||
285
+ first + across * down > kMaxReliefCells) {
286
+ return std::nullopt;
287
+ }
288
+ index.bandFloats.insert(index.bandFloats.end(), {size, minI, minJ});
289
+ index.bandCells.insert(index.bandCells.end(), {static_cast<std::uint32_t>(across),
290
+ static_cast<std::uint32_t>(down),
291
+ static_cast<std::uint32_t>(first)});
292
+ index.cells.resize(2 * (first + across * down), 0);
293
+ cellOf.resize(members.size());
294
+ for (std::size_t m = 0; m < members.size(); ++m) {
295
+ const CraterRecord& r = index.batch.records[members[m]];
296
+ const auto i = static_cast<std::size_t>(std::floor(r.x / size) - minI);
297
+ const auto j = static_cast<std::size_t>(std::floor(r.y / size) - minJ);
298
+ cellOf[m] = static_cast<std::uint32_t>(first + j * across + i);
299
+ ++index.cells[2 * cellOf[m] + 1];
300
+ }
301
+ auto start = static_cast<std::uint32_t>(index.entries.size());
302
+ for (std::size_t cell = first; cell < first + across * down; ++cell) {
303
+ index.cells[2 * cell] = start;
304
+ start += index.cells[2 * cell + 1];
305
+ }
306
+ index.entries.resize(start);
307
+ filled.assign(across * down, 0);
308
+ for (std::size_t m = 0; m < members.size(); ++m) {
309
+ const std::uint32_t cell = cellOf[m];
310
+ index.entries[index.cells[2 * cell] + filled[cell - first]++] = members[m];
311
+ }
312
+ }
313
+ index.kernel.shape = shape;
314
+ index.kernel.fitRadii = static_cast<float>(options.datumFitRadii);
315
+ index.kernel.latticeSide = static_cast<std::uint32_t>(kDatumLatticeSide);
316
+ index.kernel.bandCount = static_cast<std::uint32_t>(bands.size());
317
+ return index;
318
+ }
319
+
320
+ /// Fits the datums of craters `fitted` of `prepared`, all indexed in `index`: the ground under
321
+ /// each lattice point is read, the relief of the craters before each crater added by
322
+ /// `KernelDatumRelief` on GPU `backend` when it can take it and on CPU threads otherwise, and the
323
+ /// fit solved in double.
324
+ void FitDatumsWithKernel(std::vector<PreparedCrater>& prepared,
325
+ const std::vector<std::size_t>& fitted, const HeightSampler& ground,
326
+ const DatumKernelIndex& index, const CraterApplyOptions& options,
327
+ Backend backend, unsigned threads) {
328
+ constexpr auto kPoints = static_cast<std::size_t>(kDatumLatticeSide * kDatumLatticeSide);
329
+ Raster<float> lattice(kPoints, fitted.size(), 0.0f);
330
+ std::vector<std::uint8_t> valid(lattice.Size(), 0);
331
+ const auto forEachPoint = [&](std::size_t n, const auto& visit) {
332
+ const double fitRadius = options.datumFitRadii * 0.5 * prepared[fitted[n]].crater.diameter;
333
+ for (int j = 0; j < kDatumLatticeSide; ++j) {
334
+ const double dy = DatumLatticeOffset(j, fitRadius);
335
+ for (int i = 0; i < kDatumLatticeSide; ++i) {
336
+ const double dx = DatumLatticeOffset(i, fitRadius);
337
+ if (dx * dx + dy * dy < fitRadius * fitRadius) {
338
+ visit(n * kPoints + static_cast<std::size_t>(j * kDatumLatticeSide + i), dx,
339
+ dy);
340
+ }
341
+ }
342
+ }
343
+ };
344
+ ParallelFor(fitted.size(), threads, [&](std::size_t n) {
345
+ const Crater& c = prepared[fitted[n]].crater;
346
+ forEachPoint(n, [&](std::size_t at, double dx, double dy) {
347
+ const float height = ground(c.x + dx, c.y + dy);
348
+ if (!std::isnan(height)) {
349
+ lattice.Values()[at] = height;
350
+ valid[at] = 1;
351
+ }
352
+ });
353
+ });
354
+ std::vector<std::uint32_t> targets(fitted.size());
355
+ for (std::size_t n = 0; n < fitted.size(); ++n) {
356
+ targets[n] = index.slot[fitted[n]];
357
+ }
358
+ const CraterKernelBatch& batch = index.batch;
359
+ const std::array<KernelBuffer, 8> extra{
360
+ KernelBuffer{std::as_bytes(std::span(batch.records)), batch.records.size()},
361
+ KernelBuffer{std::as_bytes(std::span(batch.data)), batch.data.size()},
362
+ KernelBuffer{std::as_bytes(std::span(index.lows)), index.lows.size()},
363
+ KernelBuffer{std::as_bytes(std::span(index.bandFloats)), index.bandFloats.size()},
364
+ KernelBuffer{std::as_bytes(std::span(index.bandCells)), index.bandCells.size()},
365
+ KernelBuffer{std::as_bytes(std::span(index.cells)), index.cells.size()},
366
+ KernelBuffer{std::as_bytes(std::span(index.entries)), index.entries.size()},
367
+ KernelBuffer{std::as_bytes(std::span(targets)), targets.size()}};
368
+ Backend ran = backend;
369
+ if (!RunKernel(backend, CompiledKernel<CraterDatumKernel>(),
370
+ std::as_bytes(std::span(&index.kernel, 1)), lattice, {0.0, 0.0}, extra)) {
371
+ ran = Backend::Cpu;
372
+ ParallelFor(fitted.size(), threads, [&](std::size_t n) {
373
+ for (std::size_t point = 0; point < kPoints; ++point) {
374
+ const std::size_t at = n * kPoints + point;
375
+ if (valid[at] != 0) {
376
+ lattice.Values()[at] += KernelDatumRelief(
377
+ index.kernel, batch.Data(), batch.records.data(), index.lows.data(),
378
+ index.bandFloats.data(), index.bandCells.data(), index.cells.data(),
379
+ index.entries.data(), targets[n], static_cast<std::uint32_t>(point));
380
+ }
381
+ }
382
+ });
383
+ }
384
+ ParallelFor(fitted.size(), threads, [&](std::size_t n) {
385
+ PlaneFit fit;
386
+ forEachPoint(n, [&](std::size_t at, double dx, double dy) {
387
+ if (valid[at] != 0) {
388
+ fit.Add(dx, dy, lattice.Values()[at]);
389
+ }
390
+ });
391
+ std::optional<Plane>& datum = prepared[fitted[n]].datum;
392
+ if (fit.Empty()) {
393
+ datum.reset();
394
+ } else {
395
+ datum = options.datum == CraterDatum::Plane ? fit.Solve() : Plane{fit.Mean(), 0.0, 0.0};
396
+ }
397
+ });
398
+ LogDebug("craters", "Fitted ", fitted.size(), " crater datums on ", BackendName(ran));
399
+ }
400
+
184
401
  /// Fits the datums of craters `fitted` of `prepared` to `ground`, or to the raster as given when
185
- /// it is empty.
402
+ /// it is empty; with the crater datum kernel when `shape` is set and it can take them.
186
403
  void FitDatums(std::vector<PreparedCrater>& prepared, const std::vector<std::size_t>& fitted,
187
404
  const Raster<float>& raster, const CraterProfile& profile,
188
- const CraterApplyOptions& options, const CraterSampling& sampling) {
405
+ const std::optional<CraterShapeKernel>& shape, const CraterApplyOptions& options,
406
+ const CraterSampling& sampling) {
189
407
  std::optional<Raster<float>> input;
190
408
  HeightSampler ground = sampling.ground;
191
409
  if (!ground) {
@@ -195,6 +413,14 @@ void FitDatums(std::vector<PreparedCrater>& prepared, const std::vector<std::siz
195
413
  Sample(*input, x, y).value_or(std::numeric_limits<double>::quiet_NaN()));
196
414
  };
197
415
  }
416
+ if (shape && options.datum != CraterDatum::CentreHeight) {
417
+ if (const std::optional<DatumKernelIndex> index =
418
+ IndexDatumRelief(prepared, fitted, profile, *shape, options)) {
419
+ FitDatumsWithKernel(prepared, fitted, ground, *index, options, sampling.backend,
420
+ sampling.threads);
421
+ return;
422
+ }
423
+ }
198
424
  const CraterReliefIndex index(prepared, profile, MaxOutlineScale(options.irregularity),
199
425
  options.surface);
200
426
  ParallelFor(fitted.size(), sampling.threads, [&](std::size_t n) {
@@ -419,10 +645,11 @@ void ApplyCraters(Raster<float>& raster, const CraterList& craters, const Crater
419
645
  windows.push_back(std::move(around));
420
646
  }
421
647
  }
648
+ const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options);
422
649
  if (options.datum != CraterDatum::None && !onRaster.empty()) {
423
- FitDatums(prepared, onRaster, raster, profile, options, sampling);
650
+ FitDatums(prepared, onRaster, raster, profile, kernel, options, sampling);
424
651
  }
425
- if (const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options)) {
652
+ if (kernel) {
426
653
  CraterKernelBatch batch =
427
654
  MakeCraterKernelBatch(*kernel, profile, prepared, onRaster, options);
428
655
  if (!ShapeTilesOnGpu(raster, sampling.backend, *kernel, batch, prepared, onRaster,
@@ -467,32 +694,45 @@ void ApplyCraters(SampleBlock& samples, const CraterList& craters, const CraterS
467
694
  PrepareCraters(craters, options, sampling.spacing, *models.degradation, sampling.reshape);
468
695
  const std::vector<ReachingCrater> reaching =
469
696
  CratersReaching(samples, prepared, CraterReachRadii(profile, options), options.surface);
697
+ const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options);
698
+ std::vector<std::size_t> indices;
699
+ for (const ReachingCrater& crater : reaching) {
700
+ indices.push_back(static_cast<std::size_t>(crater.prepared - prepared.data()));
701
+ }
470
702
  if (options.datum != CraterDatum::None && !reaching.empty()) {
703
+ std::optional<DatumKernelIndex> kernelIndex;
704
+ bool indexed = false;
471
705
  std::optional<CraterReliefIndex> index;
472
- const auto fit = [&](const ReachingCrater& crater) {
706
+ const auto fit = [&](std::size_t k) -> std::optional<Plane> {
707
+ if (kernel && options.datum != CraterDatum::CentreHeight) {
708
+ if (!indexed) {
709
+ kernelIndex = IndexDatumRelief(prepared, indices, profile, *kernel, options);
710
+ indexed = true;
711
+ }
712
+ if (kernelIndex) {
713
+ FitDatumsWithKernel(prepared, {k}, sampling.ground, *kernelIndex, options,
714
+ Backend::Cpu, 1);
715
+ return prepared[k].datum;
716
+ }
717
+ }
473
718
  if (!index) {
474
719
  index.emplace(prepared, profile, MaxOutlineScale(options.irregularity),
475
720
  options.surface);
476
721
  }
477
- const auto k = static_cast<std::size_t>(crater.prepared - prepared.data());
478
- return FitCraterDatum(crater.prepared->crater, options,
722
+ return FitCraterDatum(prepared[k].crater, options,
479
723
  DatumGround(sampling.ground, *index, k));
480
724
  };
481
- for (const ReachingCrater& crater : reaching) {
725
+ for (const std::size_t k : indices) {
482
726
  if (sampling.cache != nullptr) {
483
- crater.prepared->datum = *sampling.cache->Get<std::optional<Plane>>(
484
- sampling.owner, crater.prepared->crater.id, sampling.spacing,
485
- [&] { return fit(crater); });
727
+ prepared[k].datum = *sampling.cache->Get<std::optional<Plane>>(
728
+ sampling.owner, prepared[k].crater.id, sampling.spacing,
729
+ [&] { return fit(k); });
486
730
  } else {
487
- crater.prepared->datum = fit(crater);
731
+ prepared[k].datum = fit(k);
488
732
  }
489
733
  }
490
734
  }
491
- if (const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options)) {
492
- std::vector<std::size_t> indices;
493
- for (const ReachingCrater& crater : reaching) {
494
- indices.push_back(static_cast<std::size_t>(crater.prepared - prepared.data()));
495
- }
735
+ if (kernel) {
496
736
  const CraterKernelBatch batch =
497
737
  MakeCraterKernelBatch(*kernel, profile, prepared, indices, options);
498
738
  const CraterData data = batch.Data();
@@ -12,9 +12,6 @@ namespace {
12
12
 
13
13
  using Matrix3 = std::array<std::array<double, 3>, 3>;
14
14
 
15
- /// Points per side of the lattice a crater's datum is fitted over.
16
- constexpr int kDatumSamples = 7;
17
-
18
15
  double Determinant(const Matrix3& m) {
19
16
  return m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) -
20
17
  m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) +
@@ -31,10 +28,10 @@ PlaneFit FitFootprint(const Crater& crater, double fitRadii, const Surface& surf
31
28
  const HeightSampler& ground) {
32
29
  const double fitRadius = fitRadii * 0.5 * crater.diameter;
33
30
  PlaneFit fit;
34
- for (int j = 0; j < kDatumSamples; ++j) {
35
- const double dy = fitRadius * ((2.0 * j + 1.0) / kDatumSamples - 1.0);
36
- for (int i = 0; i < kDatumSamples; ++i) {
37
- const double dx = fitRadius * ((2.0 * i + 1.0) / kDatumSamples - 1.0);
31
+ for (int j = 0; j < kDatumLatticeSide; ++j) {
32
+ const double dy = DatumLatticeOffset(j, fitRadius);
33
+ for (int i = 0; i < kDatumLatticeSide; ++i) {
34
+ const double dx = DatumLatticeOffset(i, fitRadius);
38
35
  if (dx * dx + dy * dy >= fitRadius * fitRadius) {
39
36
  continue;
40
37
  }
@@ -47,6 +47,15 @@ class PlaneFit {
47
47
  double syh_ = 0.0;
48
48
  };
49
49
 
50
+ /// Points per side of the lattice crater datums are fitted over.
51
+ constexpr int kDatumLatticeSide = 7;
52
+
53
+ /// The offset (m) from a crater's centre of lattice point `index` (0 to `kDatumLatticeSide` - 1)
54
+ /// along one axis of a fit footprint of `fitRadius` (m).
55
+ inline double DatumLatticeOffset(int index, double fitRadius) {
56
+ return fitRadius * ((2.0 * index + 1.0) / kDatumLatticeSide - 1.0);
57
+ }
58
+
50
59
  /// The datum a crater is cut to, fitted to the ground beneath it; nothing for
51
60
  /// `CraterDatum::None` or where the ground has no data.
52
61
  ///
@@ -0,0 +1,34 @@
1
+ // Adds, to the ground under each lattice point of each crater's datum footprint, the relief of the
2
+ // craters applied before it (KernelDatumRelief). A row is one crater (`targets`), a column one
3
+ // lattice point. The host side is FitDatumsWithKernel
4
+ // (terraingen/layers/craters/shaping/apply.cpp).
5
+ #include "terraingen/gpu/kernel.slang"
6
+ #include "terraingen/layers/kernels/craters.h"
7
+
8
+ [[vk::binding(3, 0)]] StructuredBuffer<terraingen::CraterDatumKernel> kernels;
9
+ [[vk::binding(4, 0)]] StructuredBuffer<terraingen::CraterRecord> records;
10
+ [[vk::binding(5, 0)]] StructuredBuffer<float> data;
11
+ [[vk::binding(6, 0)]] StructuredBuffer<float> lows;
12
+ [[vk::binding(7, 0)]] StructuredBuffer<float> bandFloats;
13
+ [[vk::binding(8, 0)]] StructuredBuffer<uint> bandCells;
14
+ [[vk::binding(9, 0)]] StructuredBuffer<uint> cells;
15
+ [[vk::binding(10, 0)]] StructuredBuffer<uint> entries;
16
+ // The crater of each row.
17
+ [[vk::binding(11, 0)]] StructuredBuffer<uint> targets;
18
+
19
+ // After every buffer (terraingen/gpu/kernel.slang).
20
+ [[vk::push_constant]] ConstantBuffer<Params> params;
21
+
22
+ [shader("compute")]
23
+ [numthreads(16, 16, 1)]
24
+ void main(uint3 id : SV_DispatchThreadID) {
25
+ if (!terraingen::InStrip(params, id)) {
26
+ return;
27
+ }
28
+ const uint at = id.y * params.width + id.x;
29
+ heights[at] = heights[at] + terraingen::KernelDatumRelief(kernels[0], data, records, lows,
30
+ bandFloats, bandCells, cells,
31
+ entries,
32
+ targets[params.firstRow + id.y],
33
+ id.x);
34
+ }