terraingenpy 0.1.0.dev283__tar.gz → 0.1.1.dev6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- terraingenpy-0.1.1.dev6/CHANGELOG.md +29 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CMakeLists.txt +1 -1
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/PKG-INFO +1 -1
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenSlang.cmake +7 -14
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/kernel.cpp +1 -1
- terraingenpy-0.1.1.dev6/terraingen/gpu/kernel.slang +37 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/CMakeLists.txt +5 -5
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply.cpp +257 -17
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.cpp +4 -7
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.h +9 -0
- terraingenpy-0.1.1.dev6/terraingen/layers/kernels/crater_datums.slang +34 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/craters.h +112 -0
- terraingenpy-0.1.1.dev6/terraingen/layers/kernels/craters.slang +40 -0
- terraingenpy-0.1.1.dev6/terraingen/layers/kernels/noise_relief.slang +24 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +64 -0
- terraingenpy-0.1.0.dev283/CHANGELOG.md +0 -8
- terraingenpy-0.1.0.dev283/cmake/CraterKernel.slang.in +0 -58
- terraingenpy-0.1.0.dev283/cmake/Kernel.slang.in +0 -43
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.clang-format +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.clang-tidy +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.cmake-format.yaml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.dockerignore +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.gitattributes +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.gitignore +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/.pre-commit-config.yaml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CITATION.cff +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/CONTRIBUTING.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/Dockerfile +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/LICENSE +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/README.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/README.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_diff_4k.jpg +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_disp_4k.png +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/assets/textures/moon_01_rough_4k.exr +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/TerrainGenTesting.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/ernie.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/.gitignore +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/Makefile +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/README.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/api/cpp.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/api/python.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/concepts/index.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/css/extra.css +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/command-line.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/gui.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/index.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/installation.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/getting-started/quickstart.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/guides/index.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/index.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/overrides/home.html +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/requirements.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/docs/validation/index.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/README.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_fresh.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_steady_state.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/ages/example_ages_uniform.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_moon_site.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_new_crater.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_rgb.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/albedo/example_albedo_synthetic.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_buried.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_ejecta.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_exposure.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_fragments.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_layer.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_models.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_patches.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_scene.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_shapes.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/boulders/example_boulders_sp8023.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_datum.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_degradation_none.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_interior_replacement.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_irregular.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_manual.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_max_craters.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_profile_complex.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_secondaries.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_secondary_rays.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_simple.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_spacing.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/craters/example_craters_texture.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_power_law.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_tabulated.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/distributions/example_distributions_viper.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_regions.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_roughness.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_craters.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_dunes.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_exposure.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_pavement.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_strata.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_mercury_site.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/planets/example_planets_moon_site.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_billow.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_cellular.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_fbm.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_layered.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_ridged.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_roughness.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/config/terrain/example_terrain_voronoi.json +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/ages/example_ages_models.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/browser.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/browser.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/example.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/example.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/main.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/common/standalone_main.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/config/example_config_load.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_manual.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/craters/example_craters_simple.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/layers/example_layers_custom.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/layers/example_layers_regions.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/planets/example_planets_moon.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/__main__.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_browser.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_common.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_harness.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/_images.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/ages/example_ages_models.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_moon_site.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/albedo/example_albedo_options.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_exposure.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_layer.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_positioning.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_shapes.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/boulders/example_boulders_size_models.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/config/example_config_load.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_age_sweep.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_apply_options.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_degradation.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_irregularity.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_manual.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_positioning.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_profiles.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_secondaries.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/craters/example_craters_simple.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/distributions/example_distributions_csfd.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/distributions/example_distributions_custom.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/layers/example_layers_custom.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/layers/example_layers_regions.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_body_mesh.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars_dunes.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mars_exposure.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_mercury.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/planets/example_planets_moon_site.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/sources/example_sources_chain.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/sources/example_sources_raster_detail.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_fbm.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_layered.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_point_queries.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_quadtree.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/mkdocs.yml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/pyproject.toml +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/albedo.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/albedo.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/blast_zones.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/crater_albedo.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/maturity.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/maturity.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/raster_albedo.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/raster_albedo.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/splotches.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/splotches.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/synthetic.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/albedo/synthetic.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/cli.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/cli.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/config_editor.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/config_editor.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/gui_app.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/gui_app.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/run_none.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/terrain_scene.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/gui/terrain_scene.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/app/main.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/build.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/build.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/config.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/config.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/feature_lists.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/albedo.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/boulders.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/checks.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/common.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/crater_models.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/craters.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/enums.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/fields.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/json_io.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/layers.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/materials.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/outputs.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/fields/sources.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/generate.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/generate.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/json.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/json.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/schema.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/validate.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/config/validate.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/combined.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/combined.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/golombek_rapp.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/golombek_rapp.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/log_polynomial.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/log_polynomial.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/minimum.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/moore.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/neukum.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/piecewise_power_law.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/piecewise_power_law.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/power_law.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/production_surface.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/size_frequency.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/size_frequency.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/spliced.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/spliced.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/summed.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/tabulated.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/tabulated.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/viper.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/backend.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/cuda.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/cuda.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/kernel.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/metal.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/metal.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/vulkan.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/gpu/vulkan.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/bedforms.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/bedforms.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/abundance.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_fragments.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_layer.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_layer.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_models.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_models.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_options.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_options.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/boulders/boulder_shape.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/age_model.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/ages/steady_state.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_layer.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_layer.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_placer.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/crater_placer.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusion.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusion.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/freshness.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/cell_cache.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/population.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/population.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/spacing.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/generation/spacing.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/complex.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/secondaries.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/secondaries.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply_options.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/irregularity.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/prepared.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/detail.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/detail.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/dunes.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/dunes.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/evaluation_cache.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/exposure.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/exposure.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/fade.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernel.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/kernels/noise_relief.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/layer.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/layer.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/material.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/noise_relief.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/noise_relief.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/pavement.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/pavement.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/region.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/region.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/roughness.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/roughness.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sample_block.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_fill.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_fill.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_shadow.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/strata.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/strata.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/transforms.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/materials.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/materials/materials.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/formats.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/gltf.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/icq.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/icq.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/mesh_io.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/mesh_io.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/obj.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/io/stl.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/mesh.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/polyhedra.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/shape_model.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/mesh/shape_model.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/fractal.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/lattice.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/noise_layers.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/perlin.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/simplex.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/validate.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/validate.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/noise/worley.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/body_mesh.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/features.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/features.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/height_mesh.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/height_mesh.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/terrain.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/terrain.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/tiles.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/pipeline/tiles.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/albedo.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/bindings.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/boulders.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/casters.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/common.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/crater_models.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/craters.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/distribution.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/gpu.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/layers.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/materials.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/mesh.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/module.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/noise.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/objects.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/pipeline.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/random.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/raster.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/sources.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/tables.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/trampolines.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/src/util.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/python/terraingen/render.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/samplers.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/stream.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/value_distribution.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/random/value_distribution.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/cell_loops.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/cell_loops.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/gaussian_blur.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/gaussian_blur.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/geotiff/tiff_format.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/grid.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/grid.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/raster.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/raster_stats.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/resample.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/raster/resample.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/flat_source.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/flat_source.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/geotiff_source.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/geotiff_source.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source_chain.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/source_chain.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/synthetic_terrain.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/sources/synthetic_terrain.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/terraingen.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/build_info.cpp.in +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cells.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/checks.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/checks.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cube_faces.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/cube_sphere_cells.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/fft.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/fft.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/log.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/log.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/lru_cache.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/overloaded.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/parallel.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/planar_cells.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/portable.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/radial_shape.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/special_functions.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/surface.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/surface.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/version.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/util/version.h.in +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_grids.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/bench_python_subclasses.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/benchmark/fixtures.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/golden/noise/kernels_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/build_info_stable.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/main.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/conftest.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_albedo.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_boulders.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_config.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_craters.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_distributions.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_examples_harness.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_layers.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_noise.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_pipeline.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_random.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_raster.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_render.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_sources.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_tiles.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/python/test_util.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/statistics.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/albedo_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/cli_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/config_editor_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/gui_app_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/build_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/checks_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/config_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/configs.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/feature_lists_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/generate_terrain_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_io_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_parse_errors_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/json_read_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/schema_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/validate_config_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/validate_sources_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/config/write_outputs_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/combined_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/example_browser_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/examples/example_harness_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/backend_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/noise_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/gpu/vulkan_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/crater_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/population_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/detail_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/noise_relief_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/region_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/sphere_layers_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/materials/materials_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/mesh/support.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/noise3_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/noise_layers_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/perlin_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/validate_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/features_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrain_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/terrains.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/pipeline/tiling_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/cell_loops_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/gdal_fixtures.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/geotiff_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/raster_stats_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/raster_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/resample_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/raster/tiff_format_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/geotiff_source_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/source_chain_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/cells_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/checks_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/fft_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/lru_cache_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/overloaded_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/surface_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/README.md +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.0] - 2026-10-18
|
|
11
|
+
|
|
12
|
+
Initial release.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
17
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
18
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
19
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
20
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
21
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
22
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
23
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
24
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
25
|
+
- Examples in C++, Python and JSON.
|
|
26
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
27
|
+
|
|
28
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
|
|
29
|
+
[0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
|
|
@@ -8,7 +8,7 @@ endif()
|
|
|
8
8
|
|
|
9
9
|
# The release being worked towards, such as 0.1.0, or for a development build a PEP 440 pre-release of
|
|
10
10
|
# it, such as 0.1.0.dev42, which only the Python package carries.
|
|
11
|
-
set(TERRAINGEN_FULL_VERSION "0.1.
|
|
11
|
+
set(TERRAINGEN_FULL_VERSION "0.1.1.dev6")
|
|
12
12
|
string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" TERRAINGEN_VERSION "${TERRAINGEN_FULL_VERSION}")
|
|
13
13
|
|
|
14
14
|
project(
|
|
@@ -73,24 +73,17 @@ function(terraingen_add_slang_kernel target symbol source)
|
|
|
73
73
|
spirv_1_3)
|
|
74
74
|
endfunction()
|
|
75
75
|
|
|
76
|
-
# terraingen_add_kernel(<target> <symbol> <type> <header>): compiles the
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
# `CompiledKernel` specialization
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
function(terraingen_add_kernel target symbol type header)
|
|
84
|
-
cmake_parse_arguments(PARSE_ARGV 4 ARG "" "TEMPLATE" "")
|
|
85
|
-
if(NOT ARG_TEMPLATE)
|
|
86
|
-
set(ARG_TEMPLATE "${PROJECT_SOURCE_DIR}/cmake/Kernel.slang.in")
|
|
87
|
-
endif()
|
|
76
|
+
# terraingen_add_kernel(<target> <symbol> <type> <header> <source>): compiles the Slang compute
|
|
77
|
+
# kernel <source> (entry point "main", including terraingen/gpu/kernel.slang) for every GPU backend
|
|
78
|
+
# the build supports and defines `CompiledKernel<type>()` in <target>. <header>, relative to the
|
|
79
|
+
# repository root, is the kernel header (see util/portable.h) declaring the plain struct <type>
|
|
80
|
+
# that <source> binds and the `CompiledKernel` specialization. A form the build cannot make is
|
|
81
|
+
# embedded empty.
|
|
82
|
+
function(terraingen_add_kernel target symbol type header source)
|
|
88
83
|
set(KERNEL_TYPE "${type}")
|
|
89
84
|
set(KERNEL_HEADER "${header}")
|
|
90
85
|
set(KERNEL_SYMBOL "${symbol}")
|
|
91
86
|
set(directory "${CMAKE_CURRENT_BINARY_DIR}/kernels")
|
|
92
|
-
set(source "${directory}/${symbol}.slang")
|
|
93
|
-
configure_file("${ARG_TEMPLATE}" "${source}" @ONLY)
|
|
94
87
|
configure_file("${PROJECT_SOURCE_DIR}/cmake/Kernel.cpp.in" "${directory}/${symbol}_program.cpp"
|
|
95
88
|
@ONLY)
|
|
96
89
|
target_sources(${target} PRIVATE "${directory}/${symbol}_program.cpp")
|
|
@@ -24,7 +24,7 @@ constexpr std::size_t kGroupSide = 16;
|
|
|
24
24
|
/// Most workgroups Vulkan guarantees in one dimension of a dispatch; CUDA and Metal allow more.
|
|
25
25
|
constexpr std::size_t kMaxGroups = 65535;
|
|
26
26
|
|
|
27
|
-
/// The push constants of kernels (`
|
|
27
|
+
/// The push constants of kernels (`terraingen/gpu/kernel.slang`).
|
|
28
28
|
struct KernelParams {
|
|
29
29
|
std::uint32_t width = 0;
|
|
30
30
|
std::uint32_t rows = 0;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// What every TerrainGen compute kernel binds first: the grid strip's heights and its column and
|
|
2
|
+
// row positions, and the layout of the push constants of RunKernel (terraingen/gpu/kernel.cpp).
|
|
3
|
+
// Kernel sources include this, bind their kernel struct at 3 and any extra buffers from 4 on, and
|
|
4
|
+
// declare `params` after every buffer: Metal numbers buffers in declaration order and RunKernel
|
|
5
|
+
// passes the push constants after the last one.
|
|
6
|
+
|
|
7
|
+
[[vk::binding(0, 0)]] RWStructuredBuffer<float> heights;
|
|
8
|
+
[[vk::binding(1, 0)]] StructuredBuffer<float> xs;
|
|
9
|
+
[[vk::binding(2, 0)]] StructuredBuffer<float> ys;
|
|
10
|
+
|
|
11
|
+
struct Params {
|
|
12
|
+
uint width;
|
|
13
|
+
uint rows;
|
|
14
|
+
uint noData;
|
|
15
|
+
float noDataValue;
|
|
16
|
+
uint firstRow;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
namespace terraingen {
|
|
20
|
+
|
|
21
|
+
static const uint kNoDataNone = 0u;
|
|
22
|
+
static const uint kNoDataNan = 1u;
|
|
23
|
+
|
|
24
|
+
/// Whether the thread `id` falls inside the strip.
|
|
25
|
+
bool InStrip(Params params, uint3 id) {
|
|
26
|
+
return id.x < params.width && id.y < params.rows;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// Whether `height` is the grid's no-data value, which kernels leave as it is.
|
|
30
|
+
bool IsNoData(Params params, float height) {
|
|
31
|
+
if (params.noData == kNoDataNan) {
|
|
32
|
+
return isnan(height);
|
|
33
|
+
}
|
|
34
|
+
return params.noData != kNoDataNone && height == params.noDataValue;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
} // namespace terraingen
|
|
@@ -58,8 +58,8 @@ terraingen_add_library(
|
|
|
58
58
|
terraingen_sources
|
|
59
59
|
terraingen_util)
|
|
60
60
|
terraingen_add_kernel(terraingen_layers terraingen_kernel_noise_relief NoiseReliefKernel
|
|
61
|
-
terraingen/layers/kernels/noise_relief.h)
|
|
62
|
-
terraingen_add_kernel(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
terraingen/layers/kernels/noise_relief.h kernels/noise_relief.slang)
|
|
62
|
+
terraingen_add_kernel(terraingen_layers terraingen_kernel_craters CraterShapeKernel
|
|
63
|
+
terraingen/layers/kernels/craters.h kernels/craters.slang)
|
|
64
|
+
terraingen_add_kernel(terraingen_layers terraingen_kernel_crater_datums CraterDatumKernel
|
|
65
|
+
terraingen/layers/kernels/craters.h kernels/crater_datums.slang)
|
{terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/apply.cpp
RENAMED
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
#include <algorithm>
|
|
14
14
|
#include <array>
|
|
15
15
|
#include <cmath>
|
|
16
|
+
#include <cstdint>
|
|
16
17
|
#include <limits>
|
|
18
|
+
#include <map>
|
|
17
19
|
#include <numbers>
|
|
18
20
|
#include <optional>
|
|
19
21
|
#include <stdexcept>
|
|
@@ -181,11 +183,227 @@ Bounds2d Footprint(const PreparedCrater& prepared, double reachRadii, const Surf
|
|
|
181
183
|
return surface.Expand({crater.x, crater.y, crater.x, crater.y}, reach);
|
|
182
184
|
}
|
|
183
185
|
|
|
186
|
+
/// Craters indexed for `KernelDatumRelief`, with the kernel that reads them.
|
|
187
|
+
///
|
|
188
|
+
/// Records hold each crater's position as the float nearest it and `lows` what that float drops,
|
|
189
|
+
/// so the kernel takes differences between nearby craters exactly; bands and cells are at absolute
|
|
190
|
+
/// positions. The relief summed at a point therefore depends only on the craters reaching it, not
|
|
191
|
+
/// on which others an index holds, and grids and points fit the same datums.
|
|
192
|
+
struct DatumKernelIndex {
|
|
193
|
+
CraterDatumKernel kernel;
|
|
194
|
+
CraterKernelBatch batch;
|
|
195
|
+
std::vector<float> lows;
|
|
196
|
+
/// Per size band: its cell size, which is its largest reach, and its first cell's column and
|
|
197
|
+
/// row.
|
|
198
|
+
std::vector<float> bandFloats;
|
|
199
|
+
/// Per size band: its cells across and down and its first cell.
|
|
200
|
+
std::vector<std::uint32_t> bandCells;
|
|
201
|
+
/// Per cell: its first entry and its entry count.
|
|
202
|
+
std::vector<std::uint32_t> cells;
|
|
203
|
+
/// Indices into the records, ascending within each cell.
|
|
204
|
+
std::vector<std::uint32_t> entries;
|
|
205
|
+
/// The record of each prepared crater, for the craters indexed.
|
|
206
|
+
std::vector<std::uint32_t> slot;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/// Most cells `IndexDatumRelief` lays out, and the largest cell column or row a float holds
|
|
210
|
+
/// exactly enough, before datums are left to the double path.
|
|
211
|
+
constexpr std::size_t kMaxReliefCells = std::size_t{1} << 24;
|
|
212
|
+
constexpr float kMaxReliefCellIndex = 8388608.0f;
|
|
213
|
+
|
|
214
|
+
/// The size band of `crater`: its diameter stretched by its outline, as a power of two.
|
|
215
|
+
int ReliefBand(const PreparedCrater& crater) {
|
|
216
|
+
return std::ilogb(crater.crater.diameter * crater.outline.MaxScale());
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/// Indexes the craters of `prepared` that can reach the datum footprint of any of `fitted`, in
|
|
220
|
+
/// size bands of cells as wide as each band's largest reach; nothing for craters spread too far.
|
|
221
|
+
std::optional<DatumKernelIndex> IndexDatumRelief(const std::vector<PreparedCrater>& prepared,
|
|
222
|
+
const std::vector<std::size_t>& fitted,
|
|
223
|
+
const CraterProfile& profile,
|
|
224
|
+
const CraterShapeKernel& shape,
|
|
225
|
+
const CraterApplyOptions& options) {
|
|
226
|
+
constexpr double kInfinity = std::numeric_limits<double>::infinity();
|
|
227
|
+
Bounds2d region{kInfinity, kInfinity, -kInfinity, -kInfinity};
|
|
228
|
+
std::vector<bool> isFitted(prepared.size(), false);
|
|
229
|
+
for (const std::size_t k : fitted) {
|
|
230
|
+
const Crater& c = prepared[k].crater;
|
|
231
|
+
const double fitRadius = options.datumFitRadii * 0.5 * c.diameter;
|
|
232
|
+
region = {std::fmin(region.minX, c.x - fitRadius), std::fmin(region.minY, c.y - fitRadius),
|
|
233
|
+
std::fmax(region.maxX, c.x + fitRadius), std::fmax(region.maxY, c.y + fitRadius)};
|
|
234
|
+
isFitted[k] = true;
|
|
235
|
+
}
|
|
236
|
+
const std::size_t last = *std::max_element(fitted.begin(), fitted.end());
|
|
237
|
+
DatumKernelIndex index;
|
|
238
|
+
index.slot.assign(prepared.size(), 0);
|
|
239
|
+
std::vector<std::size_t> kept;
|
|
240
|
+
for (std::size_t n = 0; n <= last; ++n) {
|
|
241
|
+
const PreparedCrater& p = prepared[n];
|
|
242
|
+
const double reach = p.outline.MaxScale() * profile.ReachRadii() * 0.5 * p.crater.diameter;
|
|
243
|
+
if (isFitted[n] || (p.crater.x + reach > region.minX && p.crater.x - reach < region.maxX &&
|
|
244
|
+
p.crater.y + reach > region.minY && p.crater.y - reach < region.maxY)) {
|
|
245
|
+
index.slot[n] = static_cast<std::uint32_t>(kept.size());
|
|
246
|
+
kept.push_back(n);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
index.batch = MakeCraterKernelBatch(shape, profile, prepared, kept, options);
|
|
250
|
+
if (index.batch.data.empty()) {
|
|
251
|
+
index.batch.data.push_back(0.0f);
|
|
252
|
+
}
|
|
253
|
+
index.lows.resize(2 * kept.size());
|
|
254
|
+
std::map<int, std::vector<std::uint32_t>> bands;
|
|
255
|
+
for (std::size_t m = 0; m < kept.size(); ++m) {
|
|
256
|
+
const Crater& c = prepared[kept[m]].crater;
|
|
257
|
+
CraterRecord& record = index.batch.records[m];
|
|
258
|
+
record.x = static_cast<float>(c.x);
|
|
259
|
+
record.y = static_cast<float>(c.y);
|
|
260
|
+
index.lows[2 * m] = static_cast<float>(c.x - static_cast<double>(record.x));
|
|
261
|
+
index.lows[2 * m + 1] = static_cast<float>(c.y - static_cast<double>(record.y));
|
|
262
|
+
bands[ReliefBand(prepared[kept[m]])].push_back(static_cast<std::uint32_t>(m));
|
|
263
|
+
}
|
|
264
|
+
std::vector<std::uint32_t> cellOf;
|
|
265
|
+
std::vector<std::uint32_t> filled;
|
|
266
|
+
for (const auto& [band, members] : bands) {
|
|
267
|
+
const auto size = static_cast<float>(1.0001 * profile.ReachRadii() * std::ldexp(1.0, band));
|
|
268
|
+
float minI = std::numeric_limits<float>::infinity();
|
|
269
|
+
float minJ = minI;
|
|
270
|
+
float maxI = -minI;
|
|
271
|
+
float maxJ = -minI;
|
|
272
|
+
for (const std::uint32_t m : members) {
|
|
273
|
+
const float i = std::floor(index.batch.records[m].x / size);
|
|
274
|
+
const float j = std::floor(index.batch.records[m].y / size);
|
|
275
|
+
minI = std::fmin(minI, i);
|
|
276
|
+
minJ = std::fmin(minJ, j);
|
|
277
|
+
maxI = std::fmax(maxI, i);
|
|
278
|
+
maxJ = std::fmax(maxJ, j);
|
|
279
|
+
}
|
|
280
|
+
const std::size_t first = index.cells.size() / 2;
|
|
281
|
+
const auto across = static_cast<std::size_t>(maxI - minI) + 1;
|
|
282
|
+
const auto down = static_cast<std::size_t>(maxJ - minJ) + 1;
|
|
283
|
+
if (std::fmax(std::fabs(minI), std::fabs(maxI)) >= kMaxReliefCellIndex ||
|
|
284
|
+
std::fmax(std::fabs(minJ), std::fabs(maxJ)) >= kMaxReliefCellIndex ||
|
|
285
|
+
first + across * down > kMaxReliefCells) {
|
|
286
|
+
return std::nullopt;
|
|
287
|
+
}
|
|
288
|
+
index.bandFloats.insert(index.bandFloats.end(), {size, minI, minJ});
|
|
289
|
+
index.bandCells.insert(index.bandCells.end(), {static_cast<std::uint32_t>(across),
|
|
290
|
+
static_cast<std::uint32_t>(down),
|
|
291
|
+
static_cast<std::uint32_t>(first)});
|
|
292
|
+
index.cells.resize(2 * (first + across * down), 0);
|
|
293
|
+
cellOf.resize(members.size());
|
|
294
|
+
for (std::size_t m = 0; m < members.size(); ++m) {
|
|
295
|
+
const CraterRecord& r = index.batch.records[members[m]];
|
|
296
|
+
const auto i = static_cast<std::size_t>(std::floor(r.x / size) - minI);
|
|
297
|
+
const auto j = static_cast<std::size_t>(std::floor(r.y / size) - minJ);
|
|
298
|
+
cellOf[m] = static_cast<std::uint32_t>(first + j * across + i);
|
|
299
|
+
++index.cells[2 * cellOf[m] + 1];
|
|
300
|
+
}
|
|
301
|
+
auto start = static_cast<std::uint32_t>(index.entries.size());
|
|
302
|
+
for (std::size_t cell = first; cell < first + across * down; ++cell) {
|
|
303
|
+
index.cells[2 * cell] = start;
|
|
304
|
+
start += index.cells[2 * cell + 1];
|
|
305
|
+
}
|
|
306
|
+
index.entries.resize(start);
|
|
307
|
+
filled.assign(across * down, 0);
|
|
308
|
+
for (std::size_t m = 0; m < members.size(); ++m) {
|
|
309
|
+
const std::uint32_t cell = cellOf[m];
|
|
310
|
+
index.entries[index.cells[2 * cell] + filled[cell - first]++] = members[m];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
index.kernel.shape = shape;
|
|
314
|
+
index.kernel.fitRadii = static_cast<float>(options.datumFitRadii);
|
|
315
|
+
index.kernel.latticeSide = static_cast<std::uint32_t>(kDatumLatticeSide);
|
|
316
|
+
index.kernel.bandCount = static_cast<std::uint32_t>(bands.size());
|
|
317
|
+
return index;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/// Fits the datums of craters `fitted` of `prepared`, all indexed in `index`: the ground under
|
|
321
|
+
/// each lattice point is read, the relief of the craters before each crater added by
|
|
322
|
+
/// `KernelDatumRelief` on GPU `backend` when it can take it and on CPU threads otherwise, and the
|
|
323
|
+
/// fit solved in double.
|
|
324
|
+
void FitDatumsWithKernel(std::vector<PreparedCrater>& prepared,
|
|
325
|
+
const std::vector<std::size_t>& fitted, const HeightSampler& ground,
|
|
326
|
+
const DatumKernelIndex& index, const CraterApplyOptions& options,
|
|
327
|
+
Backend backend, unsigned threads) {
|
|
328
|
+
constexpr auto kPoints = static_cast<std::size_t>(kDatumLatticeSide * kDatumLatticeSide);
|
|
329
|
+
Raster<float> lattice(kPoints, fitted.size(), 0.0f);
|
|
330
|
+
std::vector<std::uint8_t> valid(lattice.Size(), 0);
|
|
331
|
+
const auto forEachPoint = [&](std::size_t n, const auto& visit) {
|
|
332
|
+
const double fitRadius = options.datumFitRadii * 0.5 * prepared[fitted[n]].crater.diameter;
|
|
333
|
+
for (int j = 0; j < kDatumLatticeSide; ++j) {
|
|
334
|
+
const double dy = DatumLatticeOffset(j, fitRadius);
|
|
335
|
+
for (int i = 0; i < kDatumLatticeSide; ++i) {
|
|
336
|
+
const double dx = DatumLatticeOffset(i, fitRadius);
|
|
337
|
+
if (dx * dx + dy * dy < fitRadius * fitRadius) {
|
|
338
|
+
visit(n * kPoints + static_cast<std::size_t>(j * kDatumLatticeSide + i), dx,
|
|
339
|
+
dy);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
ParallelFor(fitted.size(), threads, [&](std::size_t n) {
|
|
345
|
+
const Crater& c = prepared[fitted[n]].crater;
|
|
346
|
+
forEachPoint(n, [&](std::size_t at, double dx, double dy) {
|
|
347
|
+
const float height = ground(c.x + dx, c.y + dy);
|
|
348
|
+
if (!std::isnan(height)) {
|
|
349
|
+
lattice.Values()[at] = height;
|
|
350
|
+
valid[at] = 1;
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
std::vector<std::uint32_t> targets(fitted.size());
|
|
355
|
+
for (std::size_t n = 0; n < fitted.size(); ++n) {
|
|
356
|
+
targets[n] = index.slot[fitted[n]];
|
|
357
|
+
}
|
|
358
|
+
const CraterKernelBatch& batch = index.batch;
|
|
359
|
+
const std::array<KernelBuffer, 8> extra{
|
|
360
|
+
KernelBuffer{std::as_bytes(std::span(batch.records)), batch.records.size()},
|
|
361
|
+
KernelBuffer{std::as_bytes(std::span(batch.data)), batch.data.size()},
|
|
362
|
+
KernelBuffer{std::as_bytes(std::span(index.lows)), index.lows.size()},
|
|
363
|
+
KernelBuffer{std::as_bytes(std::span(index.bandFloats)), index.bandFloats.size()},
|
|
364
|
+
KernelBuffer{std::as_bytes(std::span(index.bandCells)), index.bandCells.size()},
|
|
365
|
+
KernelBuffer{std::as_bytes(std::span(index.cells)), index.cells.size()},
|
|
366
|
+
KernelBuffer{std::as_bytes(std::span(index.entries)), index.entries.size()},
|
|
367
|
+
KernelBuffer{std::as_bytes(std::span(targets)), targets.size()}};
|
|
368
|
+
Backend ran = backend;
|
|
369
|
+
if (!RunKernel(backend, CompiledKernel<CraterDatumKernel>(),
|
|
370
|
+
std::as_bytes(std::span(&index.kernel, 1)), lattice, {0.0, 0.0}, extra)) {
|
|
371
|
+
ran = Backend::Cpu;
|
|
372
|
+
ParallelFor(fitted.size(), threads, [&](std::size_t n) {
|
|
373
|
+
for (std::size_t point = 0; point < kPoints; ++point) {
|
|
374
|
+
const std::size_t at = n * kPoints + point;
|
|
375
|
+
if (valid[at] != 0) {
|
|
376
|
+
lattice.Values()[at] += KernelDatumRelief(
|
|
377
|
+
index.kernel, batch.Data(), batch.records.data(), index.lows.data(),
|
|
378
|
+
index.bandFloats.data(), index.bandCells.data(), index.cells.data(),
|
|
379
|
+
index.entries.data(), targets[n], static_cast<std::uint32_t>(point));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
ParallelFor(fitted.size(), threads, [&](std::size_t n) {
|
|
385
|
+
PlaneFit fit;
|
|
386
|
+
forEachPoint(n, [&](std::size_t at, double dx, double dy) {
|
|
387
|
+
if (valid[at] != 0) {
|
|
388
|
+
fit.Add(dx, dy, lattice.Values()[at]);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
std::optional<Plane>& datum = prepared[fitted[n]].datum;
|
|
392
|
+
if (fit.Empty()) {
|
|
393
|
+
datum.reset();
|
|
394
|
+
} else {
|
|
395
|
+
datum = options.datum == CraterDatum::Plane ? fit.Solve() : Plane{fit.Mean(), 0.0, 0.0};
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
LogDebug("craters", "Fitted ", fitted.size(), " crater datums on ", BackendName(ran));
|
|
399
|
+
}
|
|
400
|
+
|
|
184
401
|
/// Fits the datums of craters `fitted` of `prepared` to `ground`, or to the raster as given when
|
|
185
|
-
/// it is empty.
|
|
402
|
+
/// it is empty; with the crater datum kernel when `shape` is set and it can take them.
|
|
186
403
|
void FitDatums(std::vector<PreparedCrater>& prepared, const std::vector<std::size_t>& fitted,
|
|
187
404
|
const Raster<float>& raster, const CraterProfile& profile,
|
|
188
|
-
const
|
|
405
|
+
const std::optional<CraterShapeKernel>& shape, const CraterApplyOptions& options,
|
|
406
|
+
const CraterSampling& sampling) {
|
|
189
407
|
std::optional<Raster<float>> input;
|
|
190
408
|
HeightSampler ground = sampling.ground;
|
|
191
409
|
if (!ground) {
|
|
@@ -195,6 +413,14 @@ void FitDatums(std::vector<PreparedCrater>& prepared, const std::vector<std::siz
|
|
|
195
413
|
Sample(*input, x, y).value_or(std::numeric_limits<double>::quiet_NaN()));
|
|
196
414
|
};
|
|
197
415
|
}
|
|
416
|
+
if (shape && options.datum != CraterDatum::CentreHeight) {
|
|
417
|
+
if (const std::optional<DatumKernelIndex> index =
|
|
418
|
+
IndexDatumRelief(prepared, fitted, profile, *shape, options)) {
|
|
419
|
+
FitDatumsWithKernel(prepared, fitted, ground, *index, options, sampling.backend,
|
|
420
|
+
sampling.threads);
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
198
424
|
const CraterReliefIndex index(prepared, profile, MaxOutlineScale(options.irregularity),
|
|
199
425
|
options.surface);
|
|
200
426
|
ParallelFor(fitted.size(), sampling.threads, [&](std::size_t n) {
|
|
@@ -419,10 +645,11 @@ void ApplyCraters(Raster<float>& raster, const CraterList& craters, const Crater
|
|
|
419
645
|
windows.push_back(std::move(around));
|
|
420
646
|
}
|
|
421
647
|
}
|
|
648
|
+
const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options);
|
|
422
649
|
if (options.datum != CraterDatum::None && !onRaster.empty()) {
|
|
423
|
-
FitDatums(prepared, onRaster, raster, profile, options, sampling);
|
|
650
|
+
FitDatums(prepared, onRaster, raster, profile, kernel, options, sampling);
|
|
424
651
|
}
|
|
425
|
-
if (
|
|
652
|
+
if (kernel) {
|
|
426
653
|
CraterKernelBatch batch =
|
|
427
654
|
MakeCraterKernelBatch(*kernel, profile, prepared, onRaster, options);
|
|
428
655
|
if (!ShapeTilesOnGpu(raster, sampling.backend, *kernel, batch, prepared, onRaster,
|
|
@@ -467,32 +694,45 @@ void ApplyCraters(SampleBlock& samples, const CraterList& craters, const CraterS
|
|
|
467
694
|
PrepareCraters(craters, options, sampling.spacing, *models.degradation, sampling.reshape);
|
|
468
695
|
const std::vector<ReachingCrater> reaching =
|
|
469
696
|
CratersReaching(samples, prepared, CraterReachRadii(profile, options), options.surface);
|
|
697
|
+
const std::optional<CraterShapeKernel> kernel = MakeCraterShapeKernel(profile, options);
|
|
698
|
+
std::vector<std::size_t> indices;
|
|
699
|
+
for (const ReachingCrater& crater : reaching) {
|
|
700
|
+
indices.push_back(static_cast<std::size_t>(crater.prepared - prepared.data()));
|
|
701
|
+
}
|
|
470
702
|
if (options.datum != CraterDatum::None && !reaching.empty()) {
|
|
703
|
+
std::optional<DatumKernelIndex> kernelIndex;
|
|
704
|
+
bool indexed = false;
|
|
471
705
|
std::optional<CraterReliefIndex> index;
|
|
472
|
-
const auto fit = [&](
|
|
706
|
+
const auto fit = [&](std::size_t k) -> std::optional<Plane> {
|
|
707
|
+
if (kernel && options.datum != CraterDatum::CentreHeight) {
|
|
708
|
+
if (!indexed) {
|
|
709
|
+
kernelIndex = IndexDatumRelief(prepared, indices, profile, *kernel, options);
|
|
710
|
+
indexed = true;
|
|
711
|
+
}
|
|
712
|
+
if (kernelIndex) {
|
|
713
|
+
FitDatumsWithKernel(prepared, {k}, sampling.ground, *kernelIndex, options,
|
|
714
|
+
Backend::Cpu, 1);
|
|
715
|
+
return prepared[k].datum;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
473
718
|
if (!index) {
|
|
474
719
|
index.emplace(prepared, profile, MaxOutlineScale(options.irregularity),
|
|
475
720
|
options.surface);
|
|
476
721
|
}
|
|
477
|
-
|
|
478
|
-
return FitCraterDatum(crater.prepared->crater, options,
|
|
722
|
+
return FitCraterDatum(prepared[k].crater, options,
|
|
479
723
|
DatumGround(sampling.ground, *index, k));
|
|
480
724
|
};
|
|
481
|
-
for (const
|
|
725
|
+
for (const std::size_t k : indices) {
|
|
482
726
|
if (sampling.cache != nullptr) {
|
|
483
|
-
|
|
484
|
-
sampling.owner,
|
|
485
|
-
[&] { return fit(
|
|
727
|
+
prepared[k].datum = *sampling.cache->Get<std::optional<Plane>>(
|
|
728
|
+
sampling.owner, prepared[k].crater.id, sampling.spacing,
|
|
729
|
+
[&] { return fit(k); });
|
|
486
730
|
} else {
|
|
487
|
-
|
|
731
|
+
prepared[k].datum = fit(k);
|
|
488
732
|
}
|
|
489
733
|
}
|
|
490
734
|
}
|
|
491
|
-
if (
|
|
492
|
-
std::vector<std::size_t> indices;
|
|
493
|
-
for (const ReachingCrater& crater : reaching) {
|
|
494
|
-
indices.push_back(static_cast<std::size_t>(crater.prepared - prepared.data()));
|
|
495
|
-
}
|
|
735
|
+
if (kernel) {
|
|
496
736
|
const CraterKernelBatch batch =
|
|
497
737
|
MakeCraterKernelBatch(*kernel, profile, prepared, indices, options);
|
|
498
738
|
const CraterData data = batch.Data();
|
{terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.cpp
RENAMED
|
@@ -12,9 +12,6 @@ namespace {
|
|
|
12
12
|
|
|
13
13
|
using Matrix3 = std::array<std::array<double, 3>, 3>;
|
|
14
14
|
|
|
15
|
-
/// Points per side of the lattice a crater's datum is fitted over.
|
|
16
|
-
constexpr int kDatumSamples = 7;
|
|
17
|
-
|
|
18
15
|
double Determinant(const Matrix3& m) {
|
|
19
16
|
return m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) -
|
|
20
17
|
m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) +
|
|
@@ -31,10 +28,10 @@ PlaneFit FitFootprint(const Crater& crater, double fitRadii, const Surface& surf
|
|
|
31
28
|
const HeightSampler& ground) {
|
|
32
29
|
const double fitRadius = fitRadii * 0.5 * crater.diameter;
|
|
33
30
|
PlaneFit fit;
|
|
34
|
-
for (int j = 0; j <
|
|
35
|
-
const double dy =
|
|
36
|
-
for (int i = 0; i <
|
|
37
|
-
const double dx =
|
|
31
|
+
for (int j = 0; j < kDatumLatticeSide; ++j) {
|
|
32
|
+
const double dy = DatumLatticeOffset(j, fitRadius);
|
|
33
|
+
for (int i = 0; i < kDatumLatticeSide; ++i) {
|
|
34
|
+
const double dx = DatumLatticeOffset(i, fitRadius);
|
|
38
35
|
if (dx * dx + dy * dy >= fitRadius * fitRadius) {
|
|
39
36
|
continue;
|
|
40
37
|
}
|
{terraingenpy-0.1.0.dev283 → terraingenpy-0.1.1.dev6}/terraingen/layers/craters/shaping/datum.h
RENAMED
|
@@ -47,6 +47,15 @@ class PlaneFit {
|
|
|
47
47
|
double syh_ = 0.0;
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
/// Points per side of the lattice crater datums are fitted over.
|
|
51
|
+
constexpr int kDatumLatticeSide = 7;
|
|
52
|
+
|
|
53
|
+
/// The offset (m) from a crater's centre of lattice point `index` (0 to `kDatumLatticeSide` - 1)
|
|
54
|
+
/// along one axis of a fit footprint of `fitRadius` (m).
|
|
55
|
+
inline double DatumLatticeOffset(int index, double fitRadius) {
|
|
56
|
+
return fitRadius * ((2.0 * index + 1.0) / kDatumLatticeSide - 1.0);
|
|
57
|
+
}
|
|
58
|
+
|
|
50
59
|
/// The datum a crater is cut to, fitted to the ground beneath it; nothing for
|
|
51
60
|
/// `CraterDatum::None` or where the ground has no data.
|
|
52
61
|
///
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Adds, to the ground under each lattice point of each crater's datum footprint, the relief of the
|
|
2
|
+
// craters applied before it (KernelDatumRelief). A row is one crater (`targets`), a column one
|
|
3
|
+
// lattice point. The host side is FitDatumsWithKernel
|
|
4
|
+
// (terraingen/layers/craters/shaping/apply.cpp).
|
|
5
|
+
#include "terraingen/gpu/kernel.slang"
|
|
6
|
+
#include "terraingen/layers/kernels/craters.h"
|
|
7
|
+
|
|
8
|
+
[[vk::binding(3, 0)]] StructuredBuffer<terraingen::CraterDatumKernel> kernels;
|
|
9
|
+
[[vk::binding(4, 0)]] StructuredBuffer<terraingen::CraterRecord> records;
|
|
10
|
+
[[vk::binding(5, 0)]] StructuredBuffer<float> data;
|
|
11
|
+
[[vk::binding(6, 0)]] StructuredBuffer<float> lows;
|
|
12
|
+
[[vk::binding(7, 0)]] StructuredBuffer<float> bandFloats;
|
|
13
|
+
[[vk::binding(8, 0)]] StructuredBuffer<uint> bandCells;
|
|
14
|
+
[[vk::binding(9, 0)]] StructuredBuffer<uint> cells;
|
|
15
|
+
[[vk::binding(10, 0)]] StructuredBuffer<uint> entries;
|
|
16
|
+
// The crater of each row.
|
|
17
|
+
[[vk::binding(11, 0)]] StructuredBuffer<uint> targets;
|
|
18
|
+
|
|
19
|
+
// After every buffer (terraingen/gpu/kernel.slang).
|
|
20
|
+
[[vk::push_constant]] ConstantBuffer<Params> params;
|
|
21
|
+
|
|
22
|
+
[shader("compute")]
|
|
23
|
+
[numthreads(16, 16, 1)]
|
|
24
|
+
void main(uint3 id : SV_DispatchThreadID) {
|
|
25
|
+
if (!terraingen::InStrip(params, id)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const uint at = id.y * params.width + id.x;
|
|
29
|
+
heights[at] = heights[at] + terraingen::KernelDatumRelief(kernels[0], data, records, lows,
|
|
30
|
+
bandFloats, bandCells, cells,
|
|
31
|
+
entries,
|
|
32
|
+
targets[params.firstRow + id.y],
|
|
33
|
+
id.x);
|
|
34
|
+
}
|