terraingenpy 0.1.1.dev6__tar.gz → 0.1.1.dev17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- terraingenpy-0.1.1.dev17/CHANGELOG.md +53 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CMakeLists.txt +1 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/PKG-INFO +2 -3
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/README.md +1 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/README.md +3 -0
- terraingenpy-0.1.1.dev17/docs/scripts/generate_schema.py +419 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_max_slope.json +44 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_rock_abundance.json +65 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_rolling.json +45 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_slope_map.json +56 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_thomas_clusters.json +53 -0
- terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_catalog_and_map.json +70 -0
- terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_slopes.json +43 -0
- terraingenpy-0.1.1.dev17/examples/config/craters/example_craters_wall_marks.json +59 -0
- terraingenpy-0.1.1.dev17/examples/config/distributions/example_distributions_piecewise_uniform.json +61 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/mkdocs.yml +4 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/build.cpp +81 -5
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/build.h +12 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/config.h +60 -6
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/albedo.h +142 -86
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/boulders.h +149 -65
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/common.h +58 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/crater_models.h +51 -17
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/craters.h +148 -59
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/enums.h +32 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/json_io.h +4 -4
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/layers.h +145 -88
- terraingenpy-0.1.1.dev17/terraingen/config/fields/maps.h +62 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/materials.h +11 -7
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/outputs.h +10 -8
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/sources.h +8 -6
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/json.h +3 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/schema.cpp +16 -7
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/CMakeLists.txt +1 -0
- terraingenpy-0.1.1.dev17/terraingen/distribution/piecewise_uniform.cpp +105 -0
- terraingenpy-0.1.1.dev17/terraingen/distribution/piecewise_uniform.h +55 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/CMakeLists.txt +3 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/boulders/abundance.cpp +279 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.cpp +98 -24
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.h +33 -1
- terraingenpy-0.1.1.dev17/terraingen/layers/boulders/boulder_models.cpp +290 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_models.h +4 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.cpp +181 -6
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.h +107 -7
- terraingenpy-0.1.1.dev17/terraingen/layers/craters/crater_layer.cpp +222 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.h +24 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.cpp +6 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.h +7 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.cpp +5 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.h +4 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.cpp +2 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.h +2 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.cpp +23 -6
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.h +21 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.cpp +5 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.h +5 -3
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondaries.cpp +4 -187
- terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondaries.h +84 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondary_model.cpp +259 -0
- terraingenpy-0.1.1.dev6/terraingen/layers/craters/secondaries.h → terraingenpy-0.1.1.dev17/terraingen/layers/craters/secondary_model.h +78 -61
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.cpp +45 -3
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.cpp +5 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.h +6 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.cpp +15 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.cpp +12 -4
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.h +2 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.cpp +81 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.h +35 -4
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.h +2 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/craters/shaping/slope.cpp +84 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/craters/shaping/slope.h +91 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/density_map.cpp +118 -0
- terraingenpy-0.1.1.dev17/terraingen/layers/density_map.h +131 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.h +88 -13
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/boulders.cpp +20 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/crater_models.cpp +3 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/craters.cpp +44 -6
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/distribution.cpp +25 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/layers.cpp +57 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/sources.cpp +50 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/CMakeLists.txt +1 -0
- terraingenpy-0.1.1.dev17/terraingen/sources/field.cpp +100 -0
- terraingenpy-0.1.1.dev17/terraingen/sources/field.h +109 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/terraingen.h +4 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_boulders.py +50 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_craters.py +50 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_distributions.py +13 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_sources.py +31 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/build_test.cpp +108 -3
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/generate_terrain_test.cpp +8 -2
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_io_test.cpp +45 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/schema_test.cpp +57 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/CMakeLists.txt +1 -0
- terraingenpy-0.1.1.dev17/tests/unit/distribution/piecewise_uniform_test.cpp +131 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/CMakeLists.txt +2 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_fragments_test.cpp +57 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_layer_test.cpp +283 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_models_test.cpp +76 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_layer_test.cpp +35 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/freshness_test.cpp +3 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/population_test.cpp +100 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/spacing_test.cpp +44 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/secondaries_test.cpp +100 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +13 -1
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/irregularity_test.cpp +98 -0
- terraingenpy-0.1.1.dev17/tests/unit/layers/craters/shaping/slope_test.cpp +259 -0
- terraingenpy-0.1.1.dev17/tests/unit/layers/density_map_test.cpp +135 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/CMakeLists.txt +1 -0
- terraingenpy-0.1.1.dev17/tests/unit/sources/field_test.cpp +104 -0
- terraingenpy-0.1.1.dev6/CHANGELOG.md +0 -29
- terraingenpy-0.1.1.dev6/terraingen/layers/boulders/abundance.cpp +0 -162
- terraingenpy-0.1.1.dev6/terraingen/layers/boulders/boulder_models.cpp +0 -126
- terraingenpy-0.1.1.dev6/terraingen/layers/craters/crater_layer.cpp +0 -110
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.clang-format +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.clang-tidy +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.cmake-format.yaml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.dockerignore +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.gitattributes +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.gitignore +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/.pre-commit-config.yaml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CITATION.cff +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/CONTRIBUTING.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/Dockerfile +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/LICENSE +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/README.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_diff_4k.jpg +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_disp_4k.png +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_rough_4k.exr +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenSlang.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenTesting.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/ernie.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/.gitignore +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/Makefile +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/api/cpp.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/api/python.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/concepts/index.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/css/extra.css +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/command-line.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/gui.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/index.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/installation.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/getting-started/quickstart.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/guides/index.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/index.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/overrides/home.html +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/requirements.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/docs/validation/index.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/README.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_fresh.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_steady_state.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_uniform.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_new_crater.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_rgb.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_synthetic.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_buried.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_ejecta.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_exposure.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_fragments.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_layer.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_models.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_patches.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_scene.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_shapes.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_sp8023.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_datum.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_none.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_interior_replacement.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_irregular.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_manual.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_max_craters.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_complex.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondaries.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondary_rays.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_simple.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_spacing.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_texture.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_power_law.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_tabulated.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_viper.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_regions.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_roughness.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_craters.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_dunes.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_exposure.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_pavement.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_strata.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mercury_site.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_billow.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_cellular.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_fbm.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_layered.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_ridged.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_roughness.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_voronoi.json +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/ages/example_ages_models.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/main.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/common/standalone_main.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/config/example_config_load.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_manual.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_simple.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_custom.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_regions.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/planets/example_planets_moon.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/__main__.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_browser.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_common.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_harness.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/_images.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/ages/example_ages_models.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_options.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_exposure.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_layer.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_positioning.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_shapes.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_size_models.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/config/example_config_load.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_age_sweep.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_apply_options.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_degradation.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_irregularity.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_manual.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_positioning.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_profiles.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_secondaries.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_simple.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_csfd.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_custom.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_custom.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_regions.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_body_mesh.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_dunes.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_exposure.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mercury.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_chain.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_raster_detail.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fbm.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_layered.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_point_queries.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_quadtree.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/pyproject.toml +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run_none.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/app/main.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/config.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/feature_lists.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/checks.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/fields.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/json.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/evaluation_cache.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernel.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/crater_datums.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/formats.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/gltf.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/obj.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/stl.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/fractal.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/lattice.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/noise_layers.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/perlin.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/simplex.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/noise/worley.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/bindings.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/casters.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/common.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/gpu.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/module.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/noise.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/objects.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/pipeline.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/random.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/raster.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/tables.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/trampolines.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/src/util.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/render.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster_stats.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.cpp.in +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cells.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_faces.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_sphere_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/log.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/log.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/lru_cache.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/overloaded.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/planar_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/portable.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/version.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/terraingen/util/version.h.in +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_grids.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_python_subclasses.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/benchmark/fixtures.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/golden/noise/kernels_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/build_info_stable.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/main.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/conftest.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_albedo.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_config.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_examples_harness.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_layers.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_noise.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_pipeline.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_random.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_raster.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_render.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_tiles.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/python/test_util.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/statistics.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/cli_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/config_editor_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/gui_app_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/configs.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/feature_lists_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_parse_errors_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_read_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_sources_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/config/write_outputs_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/combined_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_browser_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_harness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/backend_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/noise_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/vulkan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/detail_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/noise_relief_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/region_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sphere_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/materials/materials_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/support.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise3_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/perlin_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/validate_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/features_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrains.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tiling_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/cell_loops_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gdal_fixtures.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_stats_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/resample_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/raster/tiff_format_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/geotiff_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/source_chain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/cells_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/fft_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/lru_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/overloaded_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/README.md +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.1.1.dev6 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Piecewise uniform size-frequency distributions: counts per diameter band, given absolutely or as shares of a total.
|
|
13
|
+
- Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
|
|
14
|
+
- Thomas cluster process for boulder clusters, with Poisson-scattered centres whose clusters add where they overlap.
|
|
15
|
+
- Craters on slopes: floors offset downslope and rims and ejecta lowered upslope (Plescia et al. 2019), and faster wear toward a critical gradient (Roering et al. 1999).
|
|
16
|
+
- Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
|
|
17
|
+
- Density maps from GeoTIFFs or constants: a scale, a count in a diameter range, or an areal fraction such as rock abundance, which set crater and boulder densities point by point.
|
|
18
|
+
- Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
|
|
19
|
+
- Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
|
|
20
|
+
- Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Density maps that count every feature take out the secondaries thrown from a layer's craters and the blocks thrown out around craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
25
|
+
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
26
|
+
- Boulder generation logs under boulders rather than craters.
|
|
27
|
+
- Martin, Parkes and Dunstan is the default crater profile.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
32
|
+
- Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
|
|
33
|
+
|
|
34
|
+
## [0.1.0] - 2026-10-18
|
|
35
|
+
|
|
36
|
+
Initial release.
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
41
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
42
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
43
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
44
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
45
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
46
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
47
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
48
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
49
|
+
- Examples in C++, Python and JSON.
|
|
50
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
51
|
+
|
|
52
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
|
|
53
|
+
[0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
|
|
@@ -8,7 +8,7 @@ endif()
|
|
|
8
8
|
|
|
9
9
|
# The release being worked towards, such as 0.1.0, or for a development build a PEP 440 pre-release of
|
|
10
10
|
# it, such as 0.1.0.dev42, which only the Python package carries.
|
|
11
|
-
set(TERRAINGEN_FULL_VERSION "0.1.1.
|
|
11
|
+
set(TERRAINGEN_FULL_VERSION "0.1.1.dev17")
|
|
12
12
|
string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" TERRAINGEN_VERSION "${TERRAINGEN_FULL_VERSION}")
|
|
13
13
|
|
|
14
14
|
project(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: terraingenpy
|
|
3
|
-
Version: 0.1.1.
|
|
3
|
+
Version: 0.1.1.dev17
|
|
4
4
|
Summary: Scientific terrain generation for planetary surfaces
|
|
5
5
|
Keywords: terrain,moon,mars,craters,planetary science,simulation
|
|
6
6
|
Author: Alex Maietta
|
|
@@ -60,7 +60,6 @@ Description-Content-Type: text/markdown
|
|
|
60
60
|
[](https://alexmaietta.github.io/terraingen/coverage/)
|
|
61
61
|
[](https://github.com/alexmaietta/terraingen/releases)
|
|
62
62
|
[](https://pypi.org/project/terraingenpy/)
|
|
63
|
-
[](https://alexmaietta.github.io/terraingen/)
|
|
64
63
|
[](LICENSE)
|
|
65
64
|
|
|
66
65
|
# TerrainGen
|
|
@@ -78,7 +77,7 @@ TerrainGen can:
|
|
|
78
77
|
- Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
|
|
79
78
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
80
79
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
81
|
-
- GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
80
|
+
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
82
81
|
- Generate deterministic results for the same seed on any grid, tile or thread count.
|
|
83
82
|
- Integrate into simulations and other external workflows.
|
|
84
83
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
[](https://alexmaietta.github.io/terraingen/coverage/)
|
|
5
5
|
[](https://github.com/alexmaietta/terraingen/releases)
|
|
6
6
|
[](https://pypi.org/project/terraingenpy/)
|
|
7
|
-
[](https://alexmaietta.github.io/terraingen/)
|
|
8
7
|
[](LICENSE)
|
|
9
8
|
|
|
10
9
|
# TerrainGen
|
|
@@ -22,7 +21,7 @@ TerrainGen can:
|
|
|
22
21
|
- Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
|
|
23
22
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
24
23
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
25
|
-
- GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
24
|
+
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
26
25
|
- Generate deterministic results for the same seed on any grid, tile or thread count.
|
|
27
26
|
- Integrate into simulations and other external workflows.
|
|
28
27
|
|
|
@@ -7,6 +7,9 @@ sudo apt install doxygen
|
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
For the Python API, TerrainGen must be built with Python bindings, `-DTERRAINGEN_BUILD_PYTHON=ON`.
|
|
10
|
+
The configuration reference is generated from the same build: `scripts/generate_schema.py` reads
|
|
11
|
+
the library's configuration schema at build time and writes the pages under `reference/`, so
|
|
12
|
+
nothing there is kept in the source tree.
|
|
10
13
|
|
|
11
14
|
Install `mkdocs` and related dependencies.
|
|
12
15
|
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MkDocs hook that writes the configuration reference from the library's own schema.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import sys
|
|
9
|
+
from collections import defaultdict
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from mkdocs.structure.files import File
|
|
13
|
+
|
|
14
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
15
|
+
REPO_BLOB = "https://github.com/alexmaietta/terraingen/blob/main/"
|
|
16
|
+
|
|
17
|
+
# Titles and slugs of the choices, keyed by where they are first reached from the root.
|
|
18
|
+
CHOICES = {
|
|
19
|
+
"body": ("Bodies", "body"),
|
|
20
|
+
"base": ("Base sources", "base"),
|
|
21
|
+
"layers": ("Layers", "layers"),
|
|
22
|
+
"layers[craters].density": ("Crater densities", "models/densities"),
|
|
23
|
+
"layers[craters].ages": ("Crater ages", "models/ages"),
|
|
24
|
+
"layers[craters].profile": ("Crater profiles", "models/profiles"),
|
|
25
|
+
"layers[craters].degradation": ("Crater degradation", "models/degradation"),
|
|
26
|
+
"layers[boulders].sizes": ("Boulder sizes", "models/boulder-sizes"),
|
|
27
|
+
"layers[region].shape": ("Region shapes", "models/region-shapes"),
|
|
28
|
+
"outputs": ("Outputs", "outputs"),
|
|
29
|
+
"albedo.source": ("Albedo sources", "albedo-sources"),
|
|
30
|
+
"albedo.layers": ("Albedo layers", "albedo-layers"),
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
# The order of the reference's sections in the navigation.
|
|
34
|
+
SECTIONS = [
|
|
35
|
+
("Bodies", ["body"]),
|
|
36
|
+
("Base sources", ["base"]),
|
|
37
|
+
("Layers", ["layers"]),
|
|
38
|
+
(
|
|
39
|
+
"Crater and boulder models",
|
|
40
|
+
[
|
|
41
|
+
"layers[craters].density",
|
|
42
|
+
"layers[craters].ages",
|
|
43
|
+
"layers[craters].profile",
|
|
44
|
+
"layers[craters].degradation",
|
|
45
|
+
"layers[boulders].sizes",
|
|
46
|
+
"layers[region].shape",
|
|
47
|
+
],
|
|
48
|
+
),
|
|
49
|
+
("Albedo", ["albedo.source", "albedo.layers"]),
|
|
50
|
+
("Outputs", ["outputs"]),
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def load_schema():
|
|
55
|
+
"""The schema and catalog from the built module."""
|
|
56
|
+
sys.path.insert(0, str(ROOT / "build" / "python"))
|
|
57
|
+
try:
|
|
58
|
+
import terraingen
|
|
59
|
+
except ImportError as error:
|
|
60
|
+
raise RuntimeError(
|
|
61
|
+
"The configuration reference needs TerrainGen built with Python in build/ "
|
|
62
|
+
"(cmake -S . -B build && cmake --build build)"
|
|
63
|
+
) from error
|
|
64
|
+
return terraingen.config_schema(), terraingen.config_catalog()
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def unwrap(schema):
|
|
68
|
+
"""The schema an optional or a list holds, and whether it was either."""
|
|
69
|
+
wrapped = []
|
|
70
|
+
while schema.get("kind") in ("optional", "array"):
|
|
71
|
+
wrapped.append(schema["kind"])
|
|
72
|
+
schema = schema["of"]
|
|
73
|
+
return schema, wrapped
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def compact(value, limit=40):
|
|
77
|
+
"""A value as short JSON for a table cell."""
|
|
78
|
+
if isinstance(value, dict):
|
|
79
|
+
return f'`{{"type": "{value["type"]}", ...}}`' if "type" in value else "`{...}`"
|
|
80
|
+
if isinstance(value, list) and value:
|
|
81
|
+
return "`[...]`"
|
|
82
|
+
if isinstance(value, float) and value == int(value) and abs(value) < 1e15:
|
|
83
|
+
text = f"{value:.1f}"
|
|
84
|
+
else:
|
|
85
|
+
text = json.dumps(value)
|
|
86
|
+
if len(text) > limit:
|
|
87
|
+
text = text[: limit - 3] + "..."
|
|
88
|
+
return f"`{text}`"
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def cell(text):
|
|
92
|
+
"""Text safe in a Markdown table cell."""
|
|
93
|
+
return text.replace("|", "\\|").replace("\n", " ")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def number(value):
|
|
97
|
+
return f"{value:g}"
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def range_text(field):
|
|
101
|
+
"""A field's range in interval notation, or empty."""
|
|
102
|
+
low = field.get("minimum")
|
|
103
|
+
high = field.get("maximum")
|
|
104
|
+
if low is None and high is None:
|
|
105
|
+
return ""
|
|
106
|
+
left = "(" if low is None or field.get("exclusive_minimum") else "["
|
|
107
|
+
right = ")" if high is None or field.get("exclusive_maximum") else "]"
|
|
108
|
+
return f"{left}{'-inf' if low is None else number(low)}, {'inf' if high is None else number(high)}{right}"
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
class Reference:
|
|
112
|
+
"""The pages of the configuration reference, built from one schema."""
|
|
113
|
+
|
|
114
|
+
def __init__(self, schema, catalog, examples):
|
|
115
|
+
self.schema = schema
|
|
116
|
+
self.catalog = catalog
|
|
117
|
+
self.definitions = schema["definitions"]
|
|
118
|
+
self.paths = {} # choice id -> path first reached from the root
|
|
119
|
+
self.names = defaultdict(set) # choice id -> the field names that refer to it
|
|
120
|
+
self.enums = {} # tuple of choices -> (anchor, name, descriptions)
|
|
121
|
+
self.examples = examples
|
|
122
|
+
self.walk(schema["root"], "")
|
|
123
|
+
|
|
124
|
+
# Discovery ---------------------------------------------------------------------------------
|
|
125
|
+
|
|
126
|
+
def walk(self, obj, path):
|
|
127
|
+
for field in obj.get("fields", []):
|
|
128
|
+
self.visit(field["schema"], f"{path}.{field['name']}" if path else field["name"], field)
|
|
129
|
+
|
|
130
|
+
def visit(self, schema, path, field):
|
|
131
|
+
inner, _ = unwrap(schema)
|
|
132
|
+
kind = inner.get("kind")
|
|
133
|
+
if kind == "enum":
|
|
134
|
+
key = tuple(inner["choices"])
|
|
135
|
+
if key not in self.enums:
|
|
136
|
+
name = field["name"]
|
|
137
|
+
anchor = name.replace("_", "-")
|
|
138
|
+
taken = {a for a, _, _ in self.enums.values()}
|
|
139
|
+
suffix = 2
|
|
140
|
+
while anchor in taken:
|
|
141
|
+
anchor = f"{name.replace('_', '-')}-{suffix}"
|
|
142
|
+
suffix += 1
|
|
143
|
+
self.enums[key] = (anchor, name, inner.get("descriptions", []))
|
|
144
|
+
return
|
|
145
|
+
if kind != "ref":
|
|
146
|
+
return
|
|
147
|
+
ref = inner["ref"]
|
|
148
|
+
target = self.definitions[ref]
|
|
149
|
+
if target["kind"] == "choice":
|
|
150
|
+
self.names[ref].add(field["name"])
|
|
151
|
+
if ref in self.paths:
|
|
152
|
+
return
|
|
153
|
+
self.paths[ref] = path
|
|
154
|
+
for alternative in target["alternatives"]:
|
|
155
|
+
self.walk(alternative, f"{path}[{alternative['type']}]")
|
|
156
|
+
else:
|
|
157
|
+
self.walk(target, path)
|
|
158
|
+
|
|
159
|
+
def page_of(self, ref):
|
|
160
|
+
"""The slug and title of a choice's page."""
|
|
161
|
+
path = self.paths[ref]
|
|
162
|
+
if path in CHOICES:
|
|
163
|
+
title, slug = CHOICES[path]
|
|
164
|
+
return slug, title
|
|
165
|
+
if path.endswith("].simple"):
|
|
166
|
+
return CHOICES["layers[craters].profile"][1], CHOICES["layers[craters].profile"][0]
|
|
167
|
+
name = path.rsplit(".", 1)[-1]
|
|
168
|
+
return f"models/{name.replace('_', '-')}", name.replace("_", " ").capitalize()
|
|
169
|
+
|
|
170
|
+
def ref_of(self, path):
|
|
171
|
+
return next(ref for ref, p in self.paths.items() if p == path)
|
|
172
|
+
|
|
173
|
+
# Rendering ---------------------------------------------------------------------------------
|
|
174
|
+
|
|
175
|
+
def link(self, here, slug, anchor=""):
|
|
176
|
+
"""A relative link from page `here` to page `slug`."""
|
|
177
|
+
depth = here.count("/")
|
|
178
|
+
target = "../" * depth + slug + ".md"
|
|
179
|
+
return target + (f"#{anchor}" if anchor else "")
|
|
180
|
+
|
|
181
|
+
def type_text(self, schema, here):
|
|
182
|
+
inner, wrapped = unwrap(schema)
|
|
183
|
+
kind = inner.get("kind")
|
|
184
|
+
if kind == "ref":
|
|
185
|
+
target = self.definitions[inner["ref"]]
|
|
186
|
+
if target["kind"] == "choice":
|
|
187
|
+
slug, title = self.page_of(inner["ref"])
|
|
188
|
+
page = "layers/index" if slug == "layers" else slug
|
|
189
|
+
text = f"[{title.lower()}]({self.link(here, page)})"
|
|
190
|
+
else:
|
|
191
|
+
text = "object, below"
|
|
192
|
+
elif kind == "enum":
|
|
193
|
+
anchor, _, _ = self.enums[tuple(inner["choices"])]
|
|
194
|
+
values = ", ".join(f"`{c}`" for c in inner["choices"])
|
|
195
|
+
text = f"[one of]({self.link(here, 'enums', anchor)}) {values}"
|
|
196
|
+
elif kind == "integer" and inner.get("fixed"):
|
|
197
|
+
text = "integer, fixed"
|
|
198
|
+
else:
|
|
199
|
+
text = kind
|
|
200
|
+
for wrapper in reversed(wrapped):
|
|
201
|
+
text = f"list of {text}" if wrapper == "array" else f"{text}, optional"
|
|
202
|
+
return text
|
|
203
|
+
|
|
204
|
+
def nested(self, schema):
|
|
205
|
+
"""The object definition a field holds, if any."""
|
|
206
|
+
inner, wrapped = unwrap(schema)
|
|
207
|
+
if inner.get("kind") == "ref":
|
|
208
|
+
target = self.definitions[inner["ref"]]
|
|
209
|
+
if target["kind"] == "object":
|
|
210
|
+
return target, "array" in wrapped
|
|
211
|
+
return None, False
|
|
212
|
+
|
|
213
|
+
def fields(self, fields, here, indent=""):
|
|
214
|
+
"""The fields of an object: the plain ones in a table, then each group collapsed."""
|
|
215
|
+
lines = []
|
|
216
|
+
plain = [f for f in fields if self.nested(f["schema"])[0] is None]
|
|
217
|
+
groups = [f for f in fields if self.nested(f["schema"])[0] is not None]
|
|
218
|
+
if plain:
|
|
219
|
+
lines += [
|
|
220
|
+
f"{indent}| Key | Type | Default | Range | Unit | Description |",
|
|
221
|
+
f"{indent}| --- | --- | --- | --- | --- | --- |",
|
|
222
|
+
]
|
|
223
|
+
for f in plain:
|
|
224
|
+
lines.append(
|
|
225
|
+
f"{indent}| `{f['name']}` | {self.type_text(f['schema'], here)} | "
|
|
226
|
+
f"{compact(f['default'])} | {range_text(f)} | {f['unit']} | "
|
|
227
|
+
f"{cell(f['description'])} |"
|
|
228
|
+
)
|
|
229
|
+
lines.append("")
|
|
230
|
+
for f in groups:
|
|
231
|
+
target, listed = self.nested(f["schema"])
|
|
232
|
+
title = f"{f['name']}[]" if listed else f["name"]
|
|
233
|
+
lines.append(f'{indent}??? note "`{title}`: {f["description"].replace(chr(34), chr(39))}"')
|
|
234
|
+
lines.append("")
|
|
235
|
+
lines += self.fields(target["fields"], here, indent + " ")
|
|
236
|
+
return lines
|
|
237
|
+
|
|
238
|
+
def used_in(self, names, type_name):
|
|
239
|
+
files = sorted({path for name in names for path in self.examples.get((name, type_name), [])})
|
|
240
|
+
if not files:
|
|
241
|
+
return []
|
|
242
|
+
links = ", ".join(f"[{Path(p).stem}]({REPO_BLOB}{p})" for p in files[:8])
|
|
243
|
+
more = f" and {len(files) - 8} more" if len(files) > 8 else ""
|
|
244
|
+
return [f"**Used in:** {links}{more}", ""]
|
|
245
|
+
|
|
246
|
+
def alternative(self, alternative, names, here, level="##"):
|
|
247
|
+
lines = [f"{level} `{alternative['type']}` {{#{alternative['type']}}}", ""]
|
|
248
|
+
lines += [alternative["description"], ""]
|
|
249
|
+
lines += self.fields(alternative["fields"], here)
|
|
250
|
+
lines += [
|
|
251
|
+
'??? example "Every key with its default"',
|
|
252
|
+
"",
|
|
253
|
+
" ```json",
|
|
254
|
+
*(" " + line for line in json.dumps(alternative["default"], indent=4).splitlines()),
|
|
255
|
+
" ```",
|
|
256
|
+
"",
|
|
257
|
+
]
|
|
258
|
+
lines += self.used_in(names, alternative["type"])
|
|
259
|
+
return lines
|
|
260
|
+
|
|
261
|
+
def choice_page(self, ref):
|
|
262
|
+
slug, title = self.page_of(ref)
|
|
263
|
+
choice = self.definitions[ref]
|
|
264
|
+
names = self.names[ref]
|
|
265
|
+
keys = ", ".join(f"`{n}`" for n in sorted(names))
|
|
266
|
+
lines = [f"# {title}", "", f'Chosen by `"type"` in {keys}.', ""]
|
|
267
|
+
lines += ["| Type | What it is |", "| --- | --- |"]
|
|
268
|
+
for alternative in choice["alternatives"]:
|
|
269
|
+
first = alternative["description"].split(". ")[0].rstrip(".")
|
|
270
|
+
lines.append(f"| [`{alternative['type']}`](#{alternative['type']}) | {cell(first)}. |")
|
|
271
|
+
lines.append("")
|
|
272
|
+
for alternative in choice["alternatives"]:
|
|
273
|
+
lines += self.alternative(alternative, names, slug)
|
|
274
|
+
return slug, title, "\n".join(lines)
|
|
275
|
+
|
|
276
|
+
def layer_pages(self):
|
|
277
|
+
ref = self.ref_of("layers")
|
|
278
|
+
choice = self.definitions[ref]
|
|
279
|
+
names = self.names[ref]
|
|
280
|
+
index = ["# Layers", "", "Relief and features added to the base, applied in order.", ""]
|
|
281
|
+
index += ["| Type | What it is |", "| --- | --- |"]
|
|
282
|
+
pages = []
|
|
283
|
+
for alternative in choice["alternatives"]:
|
|
284
|
+
slug = f"layers/{alternative['type']}"
|
|
285
|
+
first = alternative["description"].split(". ")[0].rstrip(".")
|
|
286
|
+
index.append(f"| [`{alternative['type']}`]({alternative['type']}.md) | {cell(first)}. |")
|
|
287
|
+
body = self.alternative(alternative, names, slug, level="#")
|
|
288
|
+
pages.append((slug, alternative["type"], "\n".join(body)))
|
|
289
|
+
return ("layers/index", "Layers", "\n".join(index + [""])), pages
|
|
290
|
+
|
|
291
|
+
def overview(self):
|
|
292
|
+
lines = [
|
|
293
|
+
"# Configuration",
|
|
294
|
+
"",
|
|
295
|
+
"A configuration is a JSON file the `terraingen` command, `GenerateTerrain` and",
|
|
296
|
+
"`terraingen.load_config` read. This reference is generated from the same field lists",
|
|
297
|
+
"the parser reads, so it always matches the library; the [raw schema](schema.md) is",
|
|
298
|
+
"the same information as JSON, for editors and tools.",
|
|
299
|
+
"",
|
|
300
|
+
"Ranges are the values each field accepts on its own; validation also checks the rules",
|
|
301
|
+
"that tie fields together.",
|
|
302
|
+
"",
|
|
303
|
+
"## Top level",
|
|
304
|
+
"",
|
|
305
|
+
]
|
|
306
|
+
lines += self.fields(self.schema["root"]["fields"], "index")
|
|
307
|
+
lines += ["## Sections", ""]
|
|
308
|
+
for _, paths in SECTIONS:
|
|
309
|
+
for path in paths:
|
|
310
|
+
title, slug = CHOICES[path]
|
|
311
|
+
target = "layers/index.md" if slug == "layers" else f"{slug}.md"
|
|
312
|
+
lines.append(f"- [{title}]({target})")
|
|
313
|
+
lines += ["- [Enumerations](enums.md)", "- [Raw schema](schema.md)", ""]
|
|
314
|
+
return "\n".join(lines)
|
|
315
|
+
|
|
316
|
+
def enum_page(self):
|
|
317
|
+
lines = ["# Enumerations", "", "The named values fields choose between.", ""]
|
|
318
|
+
for choices, (anchor, name, descriptions) in sorted(self.enums.items(), key=lambda item: item[1][0]):
|
|
319
|
+
lines += [f"## `{name}` {{#{anchor}}}", "", "| Value | Meaning |", "| --- | --- |"]
|
|
320
|
+
for value, description in zip(choices, descriptions or [""] * len(choices), strict=True):
|
|
321
|
+
lines.append(f"| `{value}` | {cell(description)} |")
|
|
322
|
+
lines.append("")
|
|
323
|
+
return "\n".join(lines)
|
|
324
|
+
|
|
325
|
+
def schema_page(self):
|
|
326
|
+
text = json.dumps(self.schema, indent=2)
|
|
327
|
+
return "\n".join(
|
|
328
|
+
[
|
|
329
|
+
"# Raw schema",
|
|
330
|
+
"",
|
|
331
|
+
"The structure of a configuration as JSON, from the same field lists the parser",
|
|
332
|
+
"reads: each object's fields with their descriptions, units, defaults and ranges,",
|
|
333
|
+
"and each choice's alternatives. `terraingen.config_schema()` returns it too.",
|
|
334
|
+
"",
|
|
335
|
+
"- [schema.json](schema.json): this document.",
|
|
336
|
+
"- [catalog.json](catalog.json): every type with its defaults, as",
|
|
337
|
+
" `terraingen.config_catalog()` and `terraingen schema` give it.",
|
|
338
|
+
"",
|
|
339
|
+
'??? abstract "schema.json"',
|
|
340
|
+
"",
|
|
341
|
+
" ```json",
|
|
342
|
+
*(" " + line for line in text.splitlines()),
|
|
343
|
+
" ```",
|
|
344
|
+
"",
|
|
345
|
+
]
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
def pages(self):
|
|
349
|
+
"""Every page as (slug, title, markdown), in navigation order, and the navigation."""
|
|
350
|
+
pages = [("index", "Overview", self.overview())]
|
|
351
|
+
nav = [{"Overview": "reference/index.md"}]
|
|
352
|
+
for section, paths in SECTIONS:
|
|
353
|
+
entries = []
|
|
354
|
+
for path in paths:
|
|
355
|
+
if path == "layers":
|
|
356
|
+
index, layers = self.layer_pages()
|
|
357
|
+
pages.append(index)
|
|
358
|
+
pages += layers
|
|
359
|
+
entries.append("reference/layers/index.md")
|
|
360
|
+
entries += [{title: f"reference/{slug}.md"} for slug, title, _ in layers]
|
|
361
|
+
continue
|
|
362
|
+
slug, title, text = self.choice_page(self.ref_of(path))
|
|
363
|
+
pages.append((slug, title, text))
|
|
364
|
+
entries.append({title: f"reference/{slug}.md"})
|
|
365
|
+
nav.append({section: entries})
|
|
366
|
+
pages.append(("enums", "Enumerations", self.enum_page()))
|
|
367
|
+
pages.append(("schema", "Raw schema", self.schema_page()))
|
|
368
|
+
nav += [{"Enumerations": "reference/enums.md"}, {"Raw schema": "reference/schema.md"}]
|
|
369
|
+
return pages, nav
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
def scan_examples():
|
|
373
|
+
"""(key, type) -> the example configurations using that type under that key."""
|
|
374
|
+
found = defaultdict(set)
|
|
375
|
+
|
|
376
|
+
def walk(value, key, path):
|
|
377
|
+
if isinstance(value, dict):
|
|
378
|
+
if "type" in value and key:
|
|
379
|
+
found[(key, value["type"])].add(path)
|
|
380
|
+
for child_key, child in value.items():
|
|
381
|
+
walk(child, child_key, path)
|
|
382
|
+
elif isinstance(value, list):
|
|
383
|
+
for child in value:
|
|
384
|
+
walk(child, key, path)
|
|
385
|
+
|
|
386
|
+
for file in sorted((ROOT / "examples" / "config").rglob("*.json")):
|
|
387
|
+
walk(json.loads(file.read_text()), "", str(file.relative_to(ROOT)))
|
|
388
|
+
return found
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
_STATE = {}
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
def on_config(config):
|
|
395
|
+
schema, catalog = load_schema()
|
|
396
|
+
reference = Reference(schema, catalog, scan_examples())
|
|
397
|
+
pages, nav = reference.pages()
|
|
398
|
+
_STATE["pages"] = pages
|
|
399
|
+
_STATE["schema"] = schema
|
|
400
|
+
_STATE["catalog"] = catalog
|
|
401
|
+
entry = {"Configuration": nav}
|
|
402
|
+
position = next(
|
|
403
|
+
(i for i, item in enumerate(config.nav) if isinstance(item, dict) and "API" in item),
|
|
404
|
+
len(config.nav),
|
|
405
|
+
)
|
|
406
|
+
config.nav.insert(position, entry)
|
|
407
|
+
return config
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def on_files(files, config):
|
|
411
|
+
for slug, _, text in _STATE["pages"]:
|
|
412
|
+
files.append(File.generated(config, f"reference/{slug}.md", content=text + "\n"))
|
|
413
|
+
files.append(
|
|
414
|
+
File.generated(config, "reference/schema.json", content=json.dumps(_STATE["schema"], indent=2))
|
|
415
|
+
)
|
|
416
|
+
files.append(
|
|
417
|
+
File.generated(config, "reference/catalog.json", content=json.dumps(_STATE["catalog"], indent=2))
|
|
418
|
+
)
|
|
419
|
+
return files
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"layers": [
|
|
4
|
+
{
|
|
5
|
+
"type": "noise",
|
|
6
|
+
"stack": [
|
|
7
|
+
{
|
|
8
|
+
"seed": 1,
|
|
9
|
+
"wavelength": 30,
|
|
10
|
+
"amplitude": 6,
|
|
11
|
+
"octaves": 4
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "boulders",
|
|
17
|
+
"seed": 1,
|
|
18
|
+
"coverage": 0.06,
|
|
19
|
+
"min_diameter": 0.2,
|
|
20
|
+
"max_diameter": 3,
|
|
21
|
+
"max_slope": 0.35
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"outputs": [
|
|
25
|
+
{
|
|
26
|
+
"type": "heightmap",
|
|
27
|
+
"path": "example_boulders_max_slope.tif",
|
|
28
|
+
"region": {
|
|
29
|
+
"width": 401,
|
|
30
|
+
"height": 401,
|
|
31
|
+
"pixel_size": 0.1
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "boulder_list",
|
|
36
|
+
"path": "example_boulders_max_slope_boulders.csv",
|
|
37
|
+
"region": {
|
|
38
|
+
"width": 401,
|
|
39
|
+
"height": 401,
|
|
40
|
+
"pixel_size": 0.1
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"layers": [
|
|
4
|
+
{
|
|
5
|
+
"type": "noise",
|
|
6
|
+
"stack": [
|
|
7
|
+
{
|
|
8
|
+
"seed": 1,
|
|
9
|
+
"wavelength": 40,
|
|
10
|
+
"amplitude": 0.5,
|
|
11
|
+
"octaves": 6
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "boulders",
|
|
17
|
+
"seed": 1,
|
|
18
|
+
"coverage": 0.05,
|
|
19
|
+
"min_diameter": 0.2,
|
|
20
|
+
"max_diameter": 3,
|
|
21
|
+
"density_map": {
|
|
22
|
+
"field": {
|
|
23
|
+
"value": 0.01
|
|
24
|
+
},
|
|
25
|
+
"measure": "areal_fraction",
|
|
26
|
+
"min_diameter": 1
|
|
27
|
+
},
|
|
28
|
+
"manual": [
|
|
29
|
+
{
|
|
30
|
+
"x": 5,
|
|
31
|
+
"y": -3,
|
|
32
|
+
"diameter": 4.5
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"x": -8,
|
|
36
|
+
"y": 10,
|
|
37
|
+
"diameter": 3.2
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"completeness": {
|
|
41
|
+
"value": 3
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"outputs": [
|
|
46
|
+
{
|
|
47
|
+
"type": "heightmap",
|
|
48
|
+
"path": "example_boulders_rock_abundance.tif",
|
|
49
|
+
"region": {
|
|
50
|
+
"width": 401,
|
|
51
|
+
"height": 401,
|
|
52
|
+
"pixel_size": 0.1
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "boulder_list",
|
|
57
|
+
"path": "example_boulders_rock_abundance_boulders.csv",
|
|
58
|
+
"region": {
|
|
59
|
+
"width": 401,
|
|
60
|
+
"height": 401,
|
|
61
|
+
"pixel_size": 0.1
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|