terraingenpy 0.1.1.dev13__tar.gz → 0.1.1.dev20__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.dev20/CHANGELOG.md +58 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/CMakeLists.txt +1 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/PKG-INFO +2 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/README.md +1 -2
- terraingenpy-0.1.1.dev20/examples/config/albedo/example_albedo_rocks_and_slopes.json +76 -0
- terraingenpy-0.1.1.dev20/examples/config/boulders/example_boulders_rolling.json +45 -0
- terraingenpy-0.1.1.dev20/examples/config/boulders/example_boulders_slope_map.json +56 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/CMakeLists.txt +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/albedo.cpp +6 -2
- terraingenpy-0.1.1.dev20/terraingen/albedo/rock_albedo.cpp +134 -0
- terraingenpy-0.1.1.dev20/terraingen/albedo/rock_albedo.h +72 -0
- terraingenpy-0.1.1.dev20/terraingen/albedo/slope_albedo.cpp +167 -0
- terraingenpy-0.1.1.dev20/terraingen/albedo/slope_albedo.h +74 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/cli.cpp +6 -4
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/build.cpp +36 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/config.h +35 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/albedo.h +50 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/boulders.h +9 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/craters.h +9 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/enums.h +10 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/maps.h +16 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/generate.cpp +112 -14
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/json.cpp +16 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/json.h +3 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/validate.cpp +36 -15
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/CMakeLists.txt +1 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/abundance.cpp +97 -10
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_layer.cpp +171 -47
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_layer.h +68 -7
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_models.cpp +7 -4
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_options.cpp +23 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_options.h +12 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_shape.cpp +7 -1
- terraingenpy-0.1.1.dev20/terraingen/layers/boulders/ejecta_index.cpp +90 -0
- terraingenpy-0.1.1.dev20/terraingen/layers/boulders/ejecta_index.h +46 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater_layer.cpp +1 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater_layer.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/degradation_model.cpp +6 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/degradation_model.h +7 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/diffusion.cpp +5 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/diffusion.h +4 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/freshness.cpp +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/freshness.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/population.cpp +9 -9
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/population.h +4 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/spacing.cpp +5 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/spacing.h +5 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/apply.cpp +38 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/apply_options.cpp +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/apply_options.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/crater_kernel.cpp +4 -6
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/datum.cpp +12 -4
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/datum.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/prepared.h +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/slope.cpp +15 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/slope.h +24 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/density_map.cpp +24 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/density_map.h +35 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/craters.h +9 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/terrain.cpp +33 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/terrain.h +9 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/albedo.cpp +85 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/boulders.cpp +14 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/crater_models.cpp +3 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/craters.cpp +10 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/layers.cpp +23 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/CMakeLists.txt +3 -2
- terraingenpy-0.1.1.dev20/tests/benchmark/bench_boulders.cpp +26 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_albedo.py +24 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_boulders.py +13 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_craters.py +11 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/albedo/CMakeLists.txt +2 -0
- terraingenpy-0.1.1.dev20/tests/unit/albedo/rock_albedo_test.cpp +158 -0
- terraingenpy-0.1.1.dev20/tests/unit/albedo/slope_albedo_test.cpp +113 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/cli_test.cpp +1 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/build_test.cpp +26 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/generate_terrain_test.cpp +28 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/json_io_test.cpp +19 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/schema_test.cpp +11 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/validate_config_test.cpp +24 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/write_outputs_test.cpp +12 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/CMakeLists.txt +1 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/boulders/boulder_layer_test.cpp +169 -0
- terraingenpy-0.1.1.dev20/tests/unit/layers/boulders/ejecta_index_test.cpp +61 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/degradation/freshness_test.cpp +3 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/generation/population_test.cpp +22 -22
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/generation/spacing_test.cpp +44 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/slope_test.cpp +113 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/density_map_test.cpp +30 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/terrain_test.cpp +32 -0
- terraingenpy-0.1.1.dev13/CHANGELOG.md +0 -29
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.clang-format +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.clang-tidy +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.cmake-format.yaml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.dockerignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.gitattributes +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.gitignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/.pre-commit-config.yaml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/CITATION.cff +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/CONTRIBUTING.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/Dockerfile +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/assets/textures/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/assets/textures/moon_01_diff_4k.jpg +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/assets/textures/moon_01_disp_4k.png +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/assets/textures/moon_01_rough_4k.exr +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/TerrainGenSlang.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/TerrainGenTesting.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/ernie.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/.gitignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/Makefile +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/api/cpp.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/api/python.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/concepts/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/css/extra.css +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/getting-started/command-line.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/getting-started/gui.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/getting-started/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/getting-started/installation.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/getting-started/quickstart.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/guides/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/overrides/home.html +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/requirements.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/scripts/generate_schema.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/docs/validation/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/ages/example_ages_fresh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/ages/example_ages_steady_state.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/ages/example_ages_uniform.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_new_crater.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_rgb.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/albedo/example_albedo_synthetic.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_buried.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_ejecta.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_exposure.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_fragments.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_layer.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_max_slope.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_models.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_patches.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_rock_abundance.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_scene.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_shapes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_sp8023.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/boulders/example_boulders_thomas_clusters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_catalog_and_map.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_datum.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_degradation_none.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_interior_replacement.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_irregular.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_manual.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_max_craters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_profile_complex.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_secondaries.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_secondary_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_simple.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_slopes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_spacing.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_texture.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/craters/example_craters_wall_marks.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_power_law.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_tabulated.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/distributions/example_distributions_viper.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/layers/example_layers_regions.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/layers/example_layers_roughness.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_craters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_dunes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_exposure.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_pavement.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_strata.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_mercury_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/planets/example_planets_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_billow.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_cellular.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_fbm.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_layered.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_ridged.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_roughness.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/config/terrain/example_terrain_voronoi.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/ages/example_ages_models.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/browser.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/browser.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/example.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/example.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/common/standalone_main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/config/example_config_load.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/craters/example_craters_manual.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/craters/example_craters_simple.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/layers/example_layers_custom.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/layers/example_layers_regions.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/planets/example_planets_moon.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/__main__.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/_browser.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/_common.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/_harness.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/_images.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/ages/example_ages_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/albedo/example_albedo_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/albedo/example_albedo_options.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/boulders/example_boulders_exposure.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/boulders/example_boulders_layer.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/boulders/example_boulders_positioning.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/boulders/example_boulders_shapes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/boulders/example_boulders_size_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/config/example_config_load.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_age_sweep.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_apply_options.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_degradation.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_irregularity.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_manual.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_positioning.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_profiles.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_secondaries.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/craters/example_craters_simple.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/distributions/example_distributions_csfd.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/distributions/example_distributions_custom.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/layers/example_layers_custom.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/layers/example_layers_regions.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_body_mesh.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_mars.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_mars_dunes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_mars_exposure.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_mercury.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/planets/example_planets_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/sources/example_sources_chain.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/sources/example_sources_raster_detail.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/terrain/example_terrain_fbm.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/terrain/example_terrain_layered.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/tiles/example_tiles_point_queries.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/tiles/example_tiles_quadtree.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/mkdocs.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/pyproject.toml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/blast_zones.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/crater_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/maturity.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/maturity.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/raster_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/raster_albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/splotches.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/splotches.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/synthetic.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/albedo/synthetic.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/cli.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/config_editor.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/config_editor.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/gui_app.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/gui_app.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/run.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/run.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/run_none.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/terrain_scene.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/gui/terrain_scene.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/app/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/build.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/config.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/feature_lists.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/checks.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/common.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/crater_models.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/fields.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/json_io.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/layers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/materials.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/outputs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/fields/sources.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/generate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/schema.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/config/validate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/combined.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/combined.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/golombek_rapp.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/golombek_rapp.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/log_polynomial.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/log_polynomial.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/minimum.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/moore.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/neukum.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/piecewise_power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/piecewise_power_law.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/piecewise_uniform.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/piecewise_uniform.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/production_surface.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/size_frequency.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/size_frequency.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/spliced.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/spliced.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/summed.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/tabulated.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/tabulated.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/viper.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/backend.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/cuda.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/cuda.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/kernel.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/kernel.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/metal.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/metal.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/vulkan.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/gpu/vulkan.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/bedforms.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/bedforms.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_fragments.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_models.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/boulders/boulder_shape.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/ages/age_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/ages/steady_state.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater_placer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/crater_placer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/generation/cell_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/complex.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/secondaries.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/secondary_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/secondary_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/apply.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/irregularity.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/detail.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/detail.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/dunes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/dunes.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/evaluation_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/exposure.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/exposure.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/fade.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/crater_datums.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/craters.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/kernels/noise_relief.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/layer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/layer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/material.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/noise_relief.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/pavement.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/pavement.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/region.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/region.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/roughness.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/roughness.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sample_block.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sand_fill.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sand_fill.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sand_shadow.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/strata.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/strata.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/transforms.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/materials/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/materials/materials.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/formats.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/gltf.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/icq.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/icq.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/mesh_io.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/mesh_io.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/obj.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/io/stl.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/polyhedra.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/shape_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/mesh/shape_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/fractal.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/lattice.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/noise_layers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/perlin.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/simplex.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/validate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/noise/worley.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/body_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/features.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/features.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/height_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/height_mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/tiles.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/pipeline/tiles.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/bindings.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/casters.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/common.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/gpu.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/module.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/noise.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/objects.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/pipeline.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/random.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/raster.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/sources.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/tables.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/trampolines.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/src/util.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/python/terraingen/render.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/samplers.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/stream.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/value_distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/random/value_distribution.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/cell_loops.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/cell_loops.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/gaussian_blur.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/gaussian_blur.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/geotiff.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/geotiff.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/geotiff/tiff_format.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/grid.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/grid.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/raster.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/raster_stats.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/resample.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/raster/resample.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/field.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/field.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/flat_source.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/flat_source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/geotiff_source.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/geotiff_source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/source_chain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/source_chain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/synthetic_terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/sources/synthetic_terrain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/terraingen.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/build_info.cpp.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/cells.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/checks.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/checks.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/cube_faces.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/cube_sphere_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/fft.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/fft.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/log.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/log.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/lru_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/overloaded.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/parallel.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/planar_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/portable.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/radial_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/special_functions.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/surface.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/surface.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/version.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/terraingen/util/version.h.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/bench_grids.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/bench_python_subclasses.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/benchmark/fixtures.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/golden/noise/kernels_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/build_info_stable.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/package/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/package/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/conftest.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_config.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_distributions.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_examples_harness.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_layers.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_noise.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_pipeline.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_random.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_raster.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_render.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_sources.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_tiles.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/python/test_util.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/support/statistics.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/albedo/albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/gui/config_editor_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/gui/gui_app_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/configs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/feature_lists_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/json_parse_errors_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/json_read_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/config/validate_sources_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/combined_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/examples/example_browser_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/examples/example_harness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/backend_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/noise_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/gpu/vulkan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/crater_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/detail_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/noise_relief_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/region_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/sphere_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/materials/materials_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/mesh/support.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/noise3_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/noise_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/perlin_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/validate_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/features_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/terrains.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/pipeline/tiling_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/cell_loops_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/gdal_fixtures.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/geotiff_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/raster_stats_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/raster_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/resample_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/raster/tiff_format_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/field_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/geotiff_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/source_chain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/cells_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/fft_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/lru_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/overloaded_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev20}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
- Rock albedo: boulders brighter than the regolith (Holt 1981; Marshal et al. 2023), and a speckle of the share of each sample covered by boulders too small to resolve, with the scatter of randomly placed rocks.
|
|
22
|
+
- Slope albedo: steep ground kept immature by mass wasting, its optical maturity rising with slope beyond 20 degrees (Ikeda et al. 2022; Lucey et al. 2014).
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Density maps that count every feature take out the secondaries thrown from a layer's craters and the blocks thrown out around craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
27
|
+
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
28
|
+
- Boulder generation logs under boulders rather than craters.
|
|
29
|
+
- Crater and boulder generation summaries log at debug level; `terraingen` ends with one line counting the files written instead of listing each, and feature outputs log how long they took.
|
|
30
|
+
- Generation logs each grid as it is evaluated, with the time of every layer, the albedo and the materials, and ends with each step's total and share.
|
|
31
|
+
- Faster boulders: the ground beneath them is read in one batch, outputs over one region share the boulders placed for the first, models are placed in parallel, ejecta craters are found through a spatial index and shapes skip the roughness of fracture planes that cannot reach a vertex. The hero demo runs in about 10 s instead of 276 s.
|
|
32
|
+
- Martin, Parkes and Dunstan is the default crater profile.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
37
|
+
- Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
|
|
38
|
+
|
|
39
|
+
## [0.1.0] - 2026-10-18
|
|
40
|
+
|
|
41
|
+
Initial release.
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
46
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
47
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
48
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
49
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
50
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
51
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
52
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
53
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
54
|
+
- Examples in C++, Python and JSON.
|
|
55
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
56
|
+
|
|
57
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
|
|
58
|
+
[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.dev20")
|
|
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.dev20
|
|
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
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"layers": [
|
|
4
|
+
{
|
|
5
|
+
"type": "noise",
|
|
6
|
+
"stack": [
|
|
7
|
+
{
|
|
8
|
+
"seed": 1,
|
|
9
|
+
"wavelength": 200,
|
|
10
|
+
"amplitude": 2.0,
|
|
11
|
+
"octaves": 6
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "craters",
|
|
17
|
+
"seed": 3,
|
|
18
|
+
"density": {
|
|
19
|
+
"type": "trask"
|
|
20
|
+
},
|
|
21
|
+
"ages": {
|
|
22
|
+
"type": "fresh"
|
|
23
|
+
},
|
|
24
|
+
"min_diameter": 2,
|
|
25
|
+
"max_diameter": 40
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"type": "boulders",
|
|
29
|
+
"seed": 5,
|
|
30
|
+
"coverage": 0.01,
|
|
31
|
+
"min_diameter": 0.05,
|
|
32
|
+
"max_diameter": 1.5,
|
|
33
|
+
"ejecta": {
|
|
34
|
+
"min_crater_diameter": 10,
|
|
35
|
+
"coverage": 0.05,
|
|
36
|
+
"reach": 3
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"outputs": [
|
|
41
|
+
{
|
|
42
|
+
"type": "heightmap",
|
|
43
|
+
"path": "example_albedo_rocks_and_slopes_heights.tif",
|
|
44
|
+
"region": {
|
|
45
|
+
"width": 401,
|
|
46
|
+
"height": 401,
|
|
47
|
+
"pixel_size": 0.25
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"type": "albedo",
|
|
52
|
+
"path": "example_albedo_rocks_and_slopes_albedo.tif",
|
|
53
|
+
"region": {
|
|
54
|
+
"width": 401,
|
|
55
|
+
"height": 401,
|
|
56
|
+
"pixel_size": 0.25
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"albedo": {
|
|
61
|
+
"source": {
|
|
62
|
+
"type": "synthetic",
|
|
63
|
+
"value": 0.12
|
|
64
|
+
},
|
|
65
|
+
"layers": [
|
|
66
|
+
{
|
|
67
|
+
"type": "slopes",
|
|
68
|
+
"baseline": 2
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "rocks",
|
|
72
|
+
"seed": 7
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
"roll_distance": 15
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"outputs": [
|
|
26
|
+
{
|
|
27
|
+
"type": "heightmap",
|
|
28
|
+
"path": "example_boulders_rolling.tif",
|
|
29
|
+
"region": {
|
|
30
|
+
"width": 401,
|
|
31
|
+
"height": 401,
|
|
32
|
+
"pixel_size": 0.1
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "boulder_list",
|
|
37
|
+
"path": "example_boulders_rolling_boulders.csv",
|
|
38
|
+
"region": {
|
|
39
|
+
"width": 401,
|
|
40
|
+
"height": 401,
|
|
41
|
+
"pixel_size": 0.1
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
"sizes": {
|
|
19
|
+
"type": "power_law",
|
|
20
|
+
"coefficient": 0.02,
|
|
21
|
+
"exponent": 3.0
|
|
22
|
+
},
|
|
23
|
+
"min_diameter": 0.2,
|
|
24
|
+
"max_diameter": 3,
|
|
25
|
+
"slope_map": {
|
|
26
|
+
"field": {
|
|
27
|
+
"value": 2.2
|
|
28
|
+
},
|
|
29
|
+
"measure": "exponent",
|
|
30
|
+
"reference_diameter": 1.0,
|
|
31
|
+
"min_exponent": 1.5,
|
|
32
|
+
"max_exponent": 5.0
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"outputs": [
|
|
37
|
+
{
|
|
38
|
+
"type": "heightmap",
|
|
39
|
+
"path": "example_boulders_slope_map.tif",
|
|
40
|
+
"region": {
|
|
41
|
+
"width": 401,
|
|
42
|
+
"height": 401,
|
|
43
|
+
"pixel_size": 0.1
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "boulder_list",
|
|
48
|
+
"path": "example_boulders_slope_map_boulders.csv",
|
|
49
|
+
"region": {
|
|
50
|
+
"width": 401,
|
|
51
|
+
"height": 401,
|
|
52
|
+
"pixel_size": 0.1
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#include "terraingen/albedo/albedo.h"
|
|
2
2
|
|
|
3
3
|
#include "terraingen/util/checks.h"
|
|
4
|
+
#include "terraingen/util/log.h"
|
|
4
5
|
#include "terraingen/util/parallel.h"
|
|
5
6
|
|
|
6
7
|
#include <algorithm>
|
|
@@ -110,8 +111,11 @@ std::vector<Raster<float>> EvaluateAlbedo(const Albedo& albedo, const RasterGrid
|
|
|
110
111
|
bands.push_back(std::move(raster));
|
|
111
112
|
}
|
|
112
113
|
albedo.source->Fill(bands, context);
|
|
113
|
-
for (
|
|
114
|
-
|
|
114
|
+
for (std::size_t n = 0; n < albedo.layers.size(); ++n) {
|
|
115
|
+
const Stopwatch stopwatch;
|
|
116
|
+
albedo.layers[n]->Apply(bands, context);
|
|
117
|
+
LogDebug("albedo", "Applied albedo layer ", n + 1, " in ",
|
|
118
|
+
FormatDuration(stopwatch.Milliseconds()));
|
|
115
119
|
}
|
|
116
120
|
return bands;
|
|
117
121
|
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#include "terraingen/albedo/rock_albedo.h"
|
|
2
|
+
|
|
3
|
+
#include "terraingen/random/philox.h"
|
|
4
|
+
#include "terraingen/random/value_distribution.h"
|
|
5
|
+
#include "terraingen/util/parallel.h"
|
|
6
|
+
|
|
7
|
+
#include <algorithm>
|
|
8
|
+
#include <bit>
|
|
9
|
+
#include <cmath>
|
|
10
|
+
#include <stdexcept>
|
|
11
|
+
#include <utility>
|
|
12
|
+
|
|
13
|
+
namespace terraingen {
|
|
14
|
+
|
|
15
|
+
namespace {
|
|
16
|
+
|
|
17
|
+
constexpr std::uint32_t kRockStream = 0x524F434Bu;
|
|
18
|
+
|
|
19
|
+
/// Multiplies every band of `value` by 1 + `share` (`ratio` - 1); NaN stays NaN.
|
|
20
|
+
void Brighten(AlbedoSample& value, std::size_t bands, double share, double ratio) {
|
|
21
|
+
if (share == 0.0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const double factor = 1.0 + share * (ratio - 1.0);
|
|
25
|
+
for (std::size_t band = 0; band < bands; ++band) {
|
|
26
|
+
if (!std::isnan(value[band])) {
|
|
27
|
+
value[band] = static_cast<float>(factor * static_cast<double>(value[band]));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
} // namespace
|
|
33
|
+
|
|
34
|
+
void ValidateRockAlbedo(const RockAlbedoOptions& options) {
|
|
35
|
+
if (!(options.reflectanceRatio > 0.0 && std::isfinite(options.reflectanceRatio))) {
|
|
36
|
+
throw std::invalid_argument("Rock reflectance ratio must be positive and finite");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
double RockShare(double resolved, const UnresolvedCover& unresolved, double normal) {
|
|
41
|
+
double drawn = 0.0;
|
|
42
|
+
if (unresolved.mean > 0.0) {
|
|
43
|
+
const double s2 = std::log1p(unresolved.variance / (unresolved.mean * unresolved.mean));
|
|
44
|
+
drawn =
|
|
45
|
+
std::fmin(1.0, std::exp(std::log(unresolved.mean) - 0.5 * s2 + std::sqrt(s2) * normal));
|
|
46
|
+
}
|
|
47
|
+
const double kept = std::clamp(resolved, 0.0, 1.0);
|
|
48
|
+
return kept + (1.0 - kept) * drawn;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
RockAlbedo::RockAlbedo(RockAlbedoOptions options, std::vector<RockSource> sources)
|
|
52
|
+
: options_(options), sources_(std::move(sources)) {
|
|
53
|
+
ValidateRockAlbedo(options_);
|
|
54
|
+
for (const RockSource& source : sources_) {
|
|
55
|
+
if (!source.layer || !source.ground) {
|
|
56
|
+
throw std::invalid_argument(
|
|
57
|
+
"A rock albedo source needs a boulder layer and its ground");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
double RockAlbedo::Draw(double x, double y, std::size_t source) const {
|
|
63
|
+
const auto xs = std::bit_cast<std::uint64_t>(x);
|
|
64
|
+
const auto ys = std::bit_cast<std::uint64_t>(y);
|
|
65
|
+
const U32x4 bits =
|
|
66
|
+
Philox4x32({static_cast<std::uint32_t>(xs), static_cast<std::uint32_t>(xs >> 32),
|
|
67
|
+
static_cast<std::uint32_t>(ys), static_cast<std::uint32_t>(ys >> 32)},
|
|
68
|
+
{options_.seed ^ kRockStream, static_cast<std::uint32_t>(source)});
|
|
69
|
+
return StandardNormal(std::ldexp(static_cast<double>(bits.x), -32),
|
|
70
|
+
std::ldexp(static_cast<double>(bits.y), -32));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
double RockAlbedo::ShareAt(double x, double y, const AlbedoContext& context) const {
|
|
74
|
+
ValidateAlbedoContext(context);
|
|
75
|
+
double bare = 1.0;
|
|
76
|
+
for (std::size_t n = 0; n < sources_.size(); ++n) {
|
|
77
|
+
const RockSource& source = sources_[n];
|
|
78
|
+
const double resolved =
|
|
79
|
+
source.layer->MaterialCoverAt(x, y, context.spacing, source.ground.get());
|
|
80
|
+
const UnresolvedCover unresolved =
|
|
81
|
+
options_.unresolved
|
|
82
|
+
? source.layer->UnresolvedCoverAt(x, y, context.spacing, source.ground.get())
|
|
83
|
+
: UnresolvedCover{};
|
|
84
|
+
bare *= 1.0 - RockShare(resolved, unresolved, options_.unresolved ? Draw(x, y, n) : 0.0);
|
|
85
|
+
}
|
|
86
|
+
return 1.0 - bare;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
void RockAlbedo::ApplyAt(AlbedoSample& value, std::size_t bands, double x, double y,
|
|
90
|
+
const AlbedoContext& context) const {
|
|
91
|
+
Brighten(value, bands, ShareAt(x, y, context), options_.reflectanceRatio);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
void RockAlbedo::Apply(std::vector<Raster<float>>& bands, const AlbedoContext& context) const {
|
|
95
|
+
ValidateAlbedoContext(context);
|
|
96
|
+
if (bands.empty() || sources_.empty()) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const RasterGrid grid = RasterGrid::FromRaster(bands[0]);
|
|
100
|
+
std::vector<double> bare(grid.width * grid.height, 1.0);
|
|
101
|
+
for (std::size_t n = 0; n < sources_.size(); ++n) {
|
|
102
|
+
const RockSource& source = sources_[n];
|
|
103
|
+
const Raster<double> resolved = source.layer->MaterialCoverOver(
|
|
104
|
+
grid, context.spacing, source.ground.get(), context.threads);
|
|
105
|
+
const std::vector<UnresolvedCover> unresolved =
|
|
106
|
+
options_.unresolved ? source.layer->UnresolvedCoverOver(
|
|
107
|
+
grid, context.spacing, source.ground.get(), context.threads)
|
|
108
|
+
: std::vector<UnresolvedCover>(bare.size());
|
|
109
|
+
ParallelFor(grid.height, context.threads, [&](std::size_t row) {
|
|
110
|
+
for (std::size_t col = 0; col < grid.width; ++col) {
|
|
111
|
+
const std::size_t cell = row * grid.width + col;
|
|
112
|
+
const Vec2d centre = bands[0].CellCenter(col, row);
|
|
113
|
+
bare[cell] *=
|
|
114
|
+
1.0 - RockShare(resolved(col, row), unresolved[cell],
|
|
115
|
+
options_.unresolved ? Draw(centre.x, centre.y, n) : 0.0);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
ParallelFor(grid.height, context.threads, [&](std::size_t row) {
|
|
120
|
+
for (std::size_t col = 0; col < grid.width; ++col) {
|
|
121
|
+
AlbedoSample value{};
|
|
122
|
+
for (std::size_t band = 0; band < bands.size(); ++band) {
|
|
123
|
+
value[band] = bands[band](col, row);
|
|
124
|
+
}
|
|
125
|
+
Brighten(value, bands.size(), 1.0 - bare[row * grid.width + col],
|
|
126
|
+
options_.reflectanceRatio);
|
|
127
|
+
for (std::size_t band = 0; band < bands.size(); ++band) {
|
|
128
|
+
bands[band](col, row) = value[band];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
} // namespace terraingen
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/// @file
|
|
2
|
+
/// @brief Rock albedo: boulders and the rocks too small to resolve, brighter than the regolith.
|
|
3
|
+
#pragma once
|
|
4
|
+
|
|
5
|
+
#include "terraingen/albedo/albedo.h"
|
|
6
|
+
#include "terraingen/layers/boulders/boulder_layer.h"
|
|
7
|
+
|
|
8
|
+
#include <cstdint>
|
|
9
|
+
#include <memory>
|
|
10
|
+
#include <vector>
|
|
11
|
+
|
|
12
|
+
namespace terraingen {
|
|
13
|
+
|
|
14
|
+
/// How rocks brighten the albedo. Rock reflects more than mature regolith: Holt (1981) measured
|
|
15
|
+
/// normal albedos of 18 to 51% for rocks at the Apollo 16 site against 14 to 15% for its most
|
|
16
|
+
/// mature soils; Marshal et al. (2023) model rock about 2.5 times as reflective as regolith,
|
|
17
|
+
/// within the near 3 times of Apollo 16 fragmental breccias (Clark et al. 2002), and earlier
|
|
18
|
+
/// models took about 1.5 times. Boulders an albedo resolves brighten where their rock stands;
|
|
19
|
+
/// smaller ones brighten each sample by the share of it they cover, drawn per sample about its
|
|
20
|
+
/// expected share with the variance of Poisson-scattered rocks, which unresolved cobbles show as
|
|
21
|
+
/// bright pixels (Marshal et al. 2023).
|
|
22
|
+
struct RockAlbedoOptions {
|
|
23
|
+
std::uint32_t seed = 0; ///< Seed of the per-sample draws of unresolved rock.
|
|
24
|
+
double reflectanceRatio = 2.5; ///< Rock over regolith reflectance; positive.
|
|
25
|
+
bool unresolved = true; ///< Whether rocks too small to resolve brighten samples.
|
|
26
|
+
|
|
27
|
+
bool operator==(const RockAlbedoOptions&) const = default;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/// Checks rock albedo options.
|
|
31
|
+
/// @throws std::invalid_argument for a reflectance ratio that is not positive and finite.
|
|
32
|
+
void ValidateRockAlbedo(const RockAlbedoOptions& options);
|
|
33
|
+
|
|
34
|
+
/// A boulder layer whose rock brightens the albedo, and the ground beneath it.
|
|
35
|
+
struct RockSource {
|
|
36
|
+
std::shared_ptr<const BoulderLayer> layer;
|
|
37
|
+
/// The ground the layer was applied to, read under its boulders; must not be null.
|
|
38
|
+
std::shared_ptr<const Ground> ground;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/// The share of a sample rock covers, from the share its resolved boulders cover and a draw
|
|
42
|
+
/// `normal` (standard normal) of the share unresolved rock covers of the rest: log-normal with
|
|
43
|
+
/// the mean and variance of `unresolved`, at most 1.
|
|
44
|
+
double RockShare(double resolved, const UnresolvedCover& unresolved, double normal);
|
|
45
|
+
|
|
46
|
+
/// The albedo brightened by the rock of boulder layers: each band times 1 + `share`
|
|
47
|
+
/// (`reflectanceRatio` - 1), for the share of each sample rock covers over every layer.
|
|
48
|
+
class RockAlbedo final : public AlbedoLayer {
|
|
49
|
+
public:
|
|
50
|
+
/// @throws std::invalid_argument for options invalid as `ValidateRockAlbedo`, or a source
|
|
51
|
+
/// without a layer or ground.
|
|
52
|
+
RockAlbedo(RockAlbedoOptions options, std::vector<RockSource> sources);
|
|
53
|
+
|
|
54
|
+
/// Brightens `value` by the rock at (`x`, `y`); NaN stays NaN.
|
|
55
|
+
void ApplyAt(AlbedoSample& value, std::size_t bands, double x, double y,
|
|
56
|
+
const AlbedoContext& context) const override;
|
|
57
|
+
|
|
58
|
+
/// `ApplyAt` at every cell centre, the boulders found once per layer.
|
|
59
|
+
void Apply(std::vector<Raster<float>>& bands, const AlbedoContext& context) const override;
|
|
60
|
+
|
|
61
|
+
/// The share of the sample at (`x`, `y`) rock covers, over every layer.
|
|
62
|
+
double ShareAt(double x, double y, const AlbedoContext& context) const;
|
|
63
|
+
|
|
64
|
+
private:
|
|
65
|
+
/// The standard normal drawn for unresolved rock of source `source` at (`x`, `y`).
|
|
66
|
+
double Draw(double x, double y, std::size_t source) const;
|
|
67
|
+
|
|
68
|
+
RockAlbedoOptions options_;
|
|
69
|
+
std::vector<RockSource> sources_;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
} // namespace terraingen
|