terraingenpy 0.1.1.dev115__tar.gz → 0.2.0.dev117__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.2.0.dev117/CHANGELOG.md +222 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/CITATION.cff +1 -1
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/CMakeLists.txt +1 -1
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/PKG-INFO +7 -7
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/README.md +6 -6
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/scripts/generate_schema.py +3 -3
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/version.h.in +1 -1
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/package/CMakeLists.txt +1 -1
- terraingenpy-0.1.1.dev115/CHANGELOG.md +0 -125
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.clang-format +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.clang-tidy +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.cmake-format.yaml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.dockerignore +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.gitattributes +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.gitignore +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.pre-commit-config.yaml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/CONTRIBUTING.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/Dockerfile +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/LICENSE +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/README.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_diff_4k.jpg +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_disp_4k.png +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_rough_4k.exr +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_ao_2k.png +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_arm_2k.png +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_diff_2k.png +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_disp_2k.png +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_nor_dx_2k.exr +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_nor_gl_2k.exr +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_rough_2k.exr +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/TerrainGenSlang.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/TerrainGenTesting.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/ernie.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/.gitignore +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/Makefile +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/README.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/api/cpp.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/api/python.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/concepts/index.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/css/extra.css +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/getting-started/command-line.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/getting-started/gui.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/getting-started/index.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/getting-started/installation.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/getting-started/quickstart.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/guides/index.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/images/hero_mk1_sn101_connecting_ridge.jpg +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/images/hero_mk1_sn101_connecting_ridge_split.jpg +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/index.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/overrides/home.html +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/requirements.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/docs/validation/index.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/README.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/ages/example_ages_fresh.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/ages/example_ages_freshness.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/ages/example_ages_steady_state.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/ages/example_ages_uniform.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_new_crater.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_rgb.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_rocks_and_slopes.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/albedo/example_albedo_synthetic.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_buried.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_ejecta.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_exposure.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_fragments.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_layer.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_manual.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_max_slope.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_models.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_patches.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_rock_abundance.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_rolling.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_scene.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_shapes.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_slope_map.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_sp8023.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/boulders/example_boulders_thomas_clusters.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_catalog_and_map.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_datum.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_degradation_none.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_interior_replacement.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_irregular.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_manual.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_manual_depth.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_max_craters.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_profile_complex.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_secondaries.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_secondary_rays.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_simple.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_slopes.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_spacing.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_texture.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/craters/example_craters_wall_marks.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_power_law.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_tabulated.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/distributions/example_distributions_viper.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/layers/example_layers_regions.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/layers/example_layers_roughness.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/layers/example_layers_spectral_continuation.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_craters.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_dunes.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_exposure.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_pavement.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_strata.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_mercury_site.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/planets/example_planets_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_billow.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_cellular.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_fbm.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_layered.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_ridged.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_roughness.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/config/terrain/example_terrain_voronoi.json +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/ages/example_ages_models.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/boulders/example_boulders_manual.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/browser.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/browser.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/example.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/example.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/main.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/common/standalone_main.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/config/example_config_load.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_manual.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_manual_depth.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/craters/example_craters_simple.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/layers/example_layers_custom.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/layers/example_layers_regions.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/planets/example_planets_moon.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/queries/example_queries_rover_contacts.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/sources/example_sources_raster_roughness.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/__main__.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/_browser.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/_common.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/_harness.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/_images.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/ages/example_ages_models.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/albedo/example_albedo_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/albedo/example_albedo_options.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_exposure.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_layer.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_manual.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_positioning.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_shapes.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/boulders/example_boulders_size_models.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/config/example_config_load.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_age_sweep.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_apply_options.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_degradation.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_irregularity.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_manual.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_manual_depth.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_positioning.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_profiles.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_secondaries.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/craters/example_craters_simple.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/distributions/example_distributions_csfd.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/distributions/example_distributions_custom.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/layers/example_layers_custom.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/layers/example_layers_regions.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_body_mesh.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_mars.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_mars_dunes.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_mars_exposure.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_mercury.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/planets/example_planets_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/queries/example_queries_points.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/queries/example_queries_rover_contacts.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/sources/example_sources_chain.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/sources/example_sources_raster_detail.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/terrain/example_terrain_fbm.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/terrain/example_terrain_layered.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/mkdocs.yml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/pyproject.toml +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/bands.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/bands.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/blast_zones.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/brightness_statistics.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/brightness_statistics.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/crater_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/maturity.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/maturity.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/photometry.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/photometry.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/raster_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/raster_albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/rock_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/rock_albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/slope_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/slope_albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/splotches.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/splotches.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/synthetic.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/albedo/synthetic.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/cli.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/cli.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/config_editor.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/config_editor.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/gui_app.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/gui_app.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/run.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/run.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/run_none.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/terrain_scene.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/terrain_scene.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/gui/widgets.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/app/main.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/build.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/build.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/config.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/config.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/feature_lists.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/albedo.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/boulders.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/checks.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/common.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/crater_models.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/craters.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/enums.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/fields.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/json_io.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/layers.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/maps.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/materials.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/outputs.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/ranges.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/fields/sources.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/generate.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/generate.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/json.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/json.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/ranges.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/report.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/report.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/schema.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/config/validate.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/composition.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/composition.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/exponential_chronology.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/exponential_chronology.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/golombek_rapp.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/golombek_rapp.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/log_polynomial.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/log_polynomial.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/minimum.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/moore.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/neukum.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/piecewise_power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/piecewise_power_law.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/piecewise_uniform.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/piecewise_uniform.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/production_surface.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/size_frequency.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/size_frequency.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/spliced.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/spliced.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/summed.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/tabulated.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/tabulated.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/viper.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/backend.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/cuda.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/cuda.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/device.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/kernel.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/kernel.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/kernel.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/metal.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/metal.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/vulkan.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/gpu/vulkan.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/anchored_plane.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/anchored_plane.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/bedforms.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/bedforms.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/bisection.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/abundance.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_abundance.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_abundance.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_clusters.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_clusters.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_fragments.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_layer.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_models.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_models.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_options.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_options.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/boulder_shape.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/ejecta_index.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/boulders/ejecta_index.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/age_model.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/freshness.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/freshness.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/ages/steady_state.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater_layer.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater_placer.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/crater_placer.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/diffusion.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/diffusion.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/freshness.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/cell_cache.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/population.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/population.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/resolved_limit.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/resolved_limit.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/spacing.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/generation/spacing.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/complex.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/secondaries.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/secondary_model.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/secondary_model.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/apply.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/apply.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/apply_options.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/datum.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/datum.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/explicit_state.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/explicit_state.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/irregularity.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/prepared.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/slope.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/craters/shaping/slope.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/density_map.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/density_map.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/dunes.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/dunes.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/evaluation_cache.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/exposure.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/exposure.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/fade.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/ground.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernel.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/crater_body_datums.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/crater_datums.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/craters.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/craters.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/kernels/noise_relief.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/lattice.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/layer.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/layer.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/masked.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/masked.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/material.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/noise_relief.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/pavement.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/pavement.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/roughness.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/roughness.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/roughness_estimate.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/roughness_estimate.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sample_block.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sand_fill.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sand_fill.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sand_shadow.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/source_resolved.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/source_resolved.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/spectral_continuation.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/spectral_continuation.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/strata.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/strata.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/transforms.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/formats.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/gltf.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/icq.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/icq.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/mesh_io.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/mesh_io.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/obj.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/io/stl.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/polyhedra.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/shape_model.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/mesh/shape_model.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/fractal.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/lattice.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/noise_layers.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/perlin.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/simplex.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/validate.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/noise/worley.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/body_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/features.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/features.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/generator.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/generator.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/materials.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/mesh_build.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/pipeline/mesh_build.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/arrays.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/bindings.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/boulders.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/casters.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/common.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/crater_models.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/craters.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/gpu.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/layers.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/module.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/noise.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/objects.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/options.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/pipeline.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/random.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/raster.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/report.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/sources.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/tables.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/trampolines.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/src/util.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/python/terraingen/render.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/samplers.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/stream.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/streams.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/value_distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/random/value_distribution.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/cell_loops.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/cell_loops.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/gaussian_blur.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/gaussian_blur.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/geotiff.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/geotiff.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/geotiff/tiff_format.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/grid.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/grid.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/raster.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/raster_stats.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/resample.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/resample.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/variogram.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/raster/variogram.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/diamond_square.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/diamond_square.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/field.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/field.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/flat_source.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/flat_source.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/geotiff_source.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/geotiff_source.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/raster_source.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/raster_source.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/source.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/source_chain.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/source_chain.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/synthetic_source.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/synthetic_source.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/synthetic_terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/synthetic_terrain.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/upsampling.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/sources/upsampling.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/terraingen.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/arithmetic.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/bits.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/build_info.cpp.in +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/cells.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/checks.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/checks.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/cube_faces.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/cube_sphere_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/fft.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/fft.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/files.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/files.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/log.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/log.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/lru_cache.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/overloaded.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/parallel.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/planar_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/portable.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/radial_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/span.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/special_functions.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/surface.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/surface.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/text.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/text.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/terraingen/util/version.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/bench_boulders.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/bench_grids.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/bench_python_subclasses.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/benchmark/fixtures.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/golden/noise/kernels_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/build_info_stable.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/package/main.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/conftest.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_albedo.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_boulders.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_config.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_craters.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_distributions.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_examples_harness.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_layers.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_noise.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_pipeline.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_random.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_raster.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_render.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_report.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_sources.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/python/test_util.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/support/statistics.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/bands_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/photometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/rock_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/slope_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/cli_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/gui/config_editor_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/gui/gui_app_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/angles_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/build_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/configs.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/feature_lists_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/generate_terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/json_io_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/json_parse_errors_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/json_read_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/ranges_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/report_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/schema_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/validate_config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/validate_sources_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/config/write_outputs_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/composition_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/exponential_chronology_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/examples/example_browser_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/examples/example_harness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/backend_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/noise_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/gpu/vulkan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/anchored_plane_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/bisection_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/ejecta_index_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/boulders/manual_boulder_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/ages/freshness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/crater_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/generation/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/generation/resolved_limit_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/explicit_state_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/shaping/slope_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/density_map_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/ground_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/lattice_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/masked_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/noise_relief_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/roughness_estimate_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/source_resolved_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/spectral_continuation_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/sphere_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/mesh/support.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/noise3_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/noise_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/perlin_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/validate_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/features_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/generator_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/materials_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/mesh_build_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/terrain_windows_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/pipeline/terrains.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/cell_loops_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/gdal_fixtures.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/geotiff_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/raster_stats_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/raster_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/resample_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/raster/tiff_format_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/diamond_square_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/field_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/geotiff_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/raster_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/source_chain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/synthetic_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/sources/upsampling_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/cells_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/fft_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/lru_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/overloaded_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/span_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/text_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/README.md +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
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.2.0] - 2026-10-23
|
|
11
|
+
|
|
12
|
+
Sources replace the base: DEMs are upsampled rather than resampled, synthetic sources generate heights from noise, and layers leave out what the source already resolves. Outputs set their own pixel size and extent, `GenerateFromConfig` returns everything it computes, and the core types are renamed. Configurations and code written for 0.1.0 need the changes under [Migrating from 0.1.0](#migrating-from-010).
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Sources in configurations (`source`) of type `raster`, `chain` or `synthetic`; without one the terrain starts from a flat synthetic source at 0 m.
|
|
17
|
+
- `SyntheticSource` (source `synthetic`): heights from a noise stack plus `elevation_m` over an unbounded plane or the whole body, evaluated at every point, or sampled at posts `pixel_size_m` apart and upsampled like a DEM; an empty stack is flat.
|
|
18
|
+
- `RasterSource`, heights from a raster in memory, shared rather than copied and upsampled as a GeoTIFF source is; `GeoTiffSource` is a `RasterSource` of its band.
|
|
19
|
+
- Upsampling on sources (`Upsampler`, config `upsampling`): how a source's posts become heights between them and at any finer sample spacing, deterministically, so points and grids at one spacing agree; kernels `nearest`, `bilinear`, `cubic` (the default), `catmull_rom`, `lanczos3` and `cubic_bspline`.
|
|
20
|
+
- Diamond-square upsampling (`DiamondSquareUpsampler`, `"upsampling": {"type": "diamond_square"}`): random midpoint displacement of a source's posts to finer spacings, as PANGU expands DEMs (Martin et al. 2014), keeping every coarser node, with bilinear or Catmull-Rom (`interp`) refinement and the scale and fractal dimension estimated from the posts when not given.
|
|
21
|
+
- `RegisterUpsampler` (Python `register_upsampler`) names upsampler types of your own, C++ or Python subclasses of `Upsampler`, for configurations to use with their settings.
|
|
22
|
+
- Windowed GeoTIFF reads that decode only the strips or tiles a window meets, and `crop` (`min_x`, `min_y`, `max_x`, `max_y` in CRS units) on raster sources to read only the window needed while giving the same heights there as the whole file.
|
|
23
|
+
- `effective_pixel_size_m` on raster sources (`effectivePixelSize`), the cell size a DEM upsampled or smoothed before it was saved truly resolves.
|
|
24
|
+
- `Source::ResolutionAt`, the cell size of the data behind each height, and `UnresolvedCraterLimit`, a completeness limit that leaves the craters a DEM already resolves to it; `MinimumField` combines it with a catalog's limit.
|
|
25
|
+
- `source_resolves_px` on craters, secondaries, boulders, noise, dunes and bedforms: features at least that many source cells across, by diameter, wavelength or dune width, are already in the source, so only smaller ones are added at each point, each raster of a chain giving its own limit; ignored on synthetic sources, `null` adds them all. In C++ `sourceResolvesPixels` on the layer options, applied when the layer is given its `source`, with `SourceResolvedLimit` and `LayerResolvedLimit` (Python `source_resolved_limit`).
|
|
26
|
+
- Spectral continuation layer (`spectral_continuation`, `SpectralContinuationLayer`): detail finer than a DEM that continues its fitted power-law spectrum to shorter wavelengths as sparse Gabor noise, tapered in at the DEM's Nyquist wavelength so resolved scales gain nothing, with grids and points in agreement.
|
|
27
|
+
- Roughness and noise layers that estimate their settings from the source with `estimate_from_base`: the Hurst exponent and RMS height difference of its variogram, extrapolated to the roughness baseline or matched at each noise layer's wavelength; explicit values override the estimates. The estimators are public: `EstimateSourceRoughness`, `EstimateBaseRoughness`, `EstimatePowerLawSpectrum`, `RadialPowerSpectrum`, `EstimateMidpointRoughness` and `raster/variogram.h` (Python `estimate_source_roughness` and the rest).
|
|
28
|
+
- Lanczos (three lobes), Catmull-Rom and cubic B-spline kernels for `Resample`, `SampleRaster` and `ResampleMethod`.
|
|
29
|
+
- Output areas: `pixel_size_m` and `extent_m` (`extent_deg` on a body) as `{"center": [x, y], "size": [w, h]}` or `{"min": [x, y], "max": [x, y]}`, defaulting to a raster or chain source's extent and cell size; the grid starts at the extent's min corner, is snapped outward to whole cells and sampled at cell centers (`OutputAreaSpec`, `ExtentSpec`, `config::SnappedGrid`).
|
|
30
|
+
- Optional output paths: without a `path` the result is returned and nothing is written. `GenerateFromConfig` returns everything the outputs ask for, each computed once: `GeneratedGrid` holds the grid, heights, albedo, materials, photometry, placed craters and boulders and terrain mesh, `GeneratedOutputs` the body mesh or ICQ model, the report, `Grid()` and `Find()`; Python `GeneratedGrid` values are views without a copy.
|
|
31
|
+
- `terrain_mesh` outputs take `cutouts` (`{"min": [x, y], "max": [x, y]}` boxes), a `skirt_m` and a frame `site_deg` as [lon, lat].
|
|
32
|
+
- Terrain reports: output type `report` (`ReportOutput`) with an optional `path`, returned as `GeneratedOutputs::report` and written as JSON by `WriteOutputs`; per grid (`GridReport`) height and slope statistics, craters per power-of-2 diameter bin against the first crater layer's density and boulder counts and cover, with per-layer timings, backend, threads, layer seeds and version (`ReportGrid`, `ReportToJson`, `TerrainReport`, `LayerTimer`; Python `report_grid`, `report_to_json`, `TerrainReport.to_dict`).
|
|
33
|
+
- `GetMeshSize` and `FillMesh` (Python `get_mesh_size`, `fill_mesh`) size and write a height mesh into caller buffers laid out as Chrono's ChVector3d and ChVector3i arrays or NumPy (N, 3) float64 and (M, 3) int32 arrays, with no copy; `FillHeights` (Python `fill_heights`) evaluates into a caller buffer; `TriangleMesh.positions` and `TriangleMesh.triangles` are NumPy views without a copy.
|
|
34
|
+
- Piecewise uniform size-frequency distributions (`piecewise_uniform`): counts per diameter band, given absolutely or as shares of a total.
|
|
35
|
+
- Piecewise value distributions, uniform within bins drawn by weight, and `freshness` crater ages that draw each crater's freshness from a value distribution.
|
|
36
|
+
- Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
|
|
37
|
+
- Craters on slopes: floors offset downslope and rims and ejecta lowered upslope (Plescia et al. 2019), and faster wear toward a critical gradient (Roering et al. 1999).
|
|
38
|
+
- Manual craters with an explicit rim-to-floor depth and rim height in place of what the degradation model and age give; diffusion profiles solve for the age that reaches the depth.
|
|
39
|
+
- Thomas cluster process for boulder clusters, with Poisson-scattered centers whose clusters add where they overlap.
|
|
40
|
+
- Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
|
|
41
|
+
- Manual boulders that fix any of their height, burial, yaw, lean, tilt, rest, wear and shape seed; unset fields are drawn as for generated boulders, and fixed ones are neither re-settled nor broken.
|
|
42
|
+
- Manual-only layers: boulder layers with `generate_random` off place only their `manual` boulders, and `CraterLayer::Manual` and `BoulderLayer::Manual` (Python `CraterLayer.manual`, `BoulderLayer.manual`) make layers of only the given craters or boulders.
|
|
43
|
+
- Density maps from GeoTIFFs or constants: a scale, a count in a diameter range, or an areal fraction such as rock abundance, which set crater and boulder densities point by point.
|
|
44
|
+
- Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
|
|
45
|
+
- Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
|
|
46
|
+
- Rock albedo (`rocks`): boulders brighter than the regolith (Holt 1981; Marshal et al. 2023), and a speckle of the share of each sample covered by boulders too small to resolve.
|
|
47
|
+
- Slope albedo (`slopes`): steep ground kept immature by mass wasting, its optical maturity rising with slope beyond 20 degrees (Ikeda et al. 2022; Lucey et al. 2014).
|
|
48
|
+
- Crater shaping and datum fitting on the GPU on spheres, ellipsoids and shape models, not only on planes.
|
|
49
|
+
- `fade_px` and `fade_shape` on crater `apply` and boulder layers: the resolution fade as its start and end output samples and its curve.
|
|
50
|
+
- Configurations are checked against every field's documented range, and errors name the exact field, such as `layers[2].reach`.
|
|
51
|
+
- Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
|
|
52
|
+
- Python options classes document every field with its description and unit, and gain `validate()` and a readable `repr`.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- Breaking: the configuration's `base` is now `source`, and the region layer is now `masked`; old keys and types are rejected.
|
|
57
|
+
- Breaking: raster sources upsample instead of resampling: a raster source's grid is always its file's, and evaluating it over a finer grid gives finer cells; `RasterSourceOptions` and `GeoTiffSourceOptions` take an `upsampler` and an `effectivePixelSize`.
|
|
58
|
+
- Breaking: outputs give their area as `pixel_size_m` and `extent_m` in place of `region` (`width`, `height`, `pixel_size`, `centre_x`, `centre_y`) and of `spacing` on crater lists, boulder lists and boulder models; both are required without a raster or chain source.
|
|
59
|
+
- Breaking: on a raster or chain source, craters, secondaries, dunes and bedforms leave out by default what is at least 4 source cells across (`source_resolves_px`); set it to `null` for the 0.1.0 output.
|
|
60
|
+
- Breaking: every angle key in configurations and the Python options classes is in degrees and ends in `_deg`, azimuths counter-clockwise from +x (local east), and the rest of the Python API follows with `_deg` names and arguments; the C++ library keeps radians.
|
|
61
|
+
- Breaking: crater and boulder size keys carry their units (`_m`, `_px`), in configurations and the Python options classes alike, and crater layers' `generate` is now `generate_random`; the old keys are rejected.
|
|
62
|
+
- Breaking: core types and functions are renamed with no aliases, `Terrain` to `TerrainGenerator`, `GenerateTerrain` to `GenerateFromConfig`, `TerrainConfig` to `TerrainGenConfig`, `HeightMesh` to `BuildMesh`, `RegionLayer` to `MaskedLayer` and the rest in the table below, and Python names follow C++ names one to one.
|
|
63
|
+
- Breaking: sources take the sample spacing: `Source::Fill(heights, spacing)` and `Source::HeightAt(x, y, spacing)`, and Python `Source` subclasses define `height_at(x, y, spacing)` and `fill(heights, spacing)`; a source without bounds gives a grid without cells (`BoundedGrid`), and `Evaluate(generator)` needs a grid for it.
|
|
64
|
+
- The library, Python bindings, tests and examples are C++17 (0.1.0 needed C++20); public headers take `Span` in place of `std::span`.
|
|
65
|
+
- Defaults give a plausible lunar terrain at 1 m per pixel in which every height layer shows: craters from a production surface capped below the Trask equilibrium with steady-state ages, diffusion and irregular outlines, Martin, Parkes and Dunstan profiles, nominal NASA SP-8023 intercrater boulders (0.4% cover by rocks of 1 m and more), noise relief scaled to its wavelength, and visible roughness, bedforms and dunes.
|
|
66
|
+
- A boulder `coverage`, `qa`, `qb` or `ejecta.coverage` that no Golombek-Rapp sizes use is an error that names `"sizes": {"type": "golombek_rapp"}`.
|
|
67
|
+
- Boulder lists and models hold every boulder of the layer's diameter range; only the heightmap leaves out boulders too small to resolve.
|
|
68
|
+
- Boulder ejecta come from every crater layer before the boulder layer, not only the last one.
|
|
69
|
+
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
70
|
+
- Density maps that count every feature take out the secondaries and blocks thrown from a layer's craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
71
|
+
- The `matched` diffusivity wears each crater to Fassett et al.'s visibility cutoff at the end of its equilibrium lifetime, for the layer's own profile.
|
|
72
|
+
- Crater shaping has one implementation, the kernel, on every surface; craters on bodies and custom profiles may differ from 0.1.0 in the last digits.
|
|
73
|
+
- Random streams and hashes are unified, so boulder, albedo, dune, bedform and pavement outputs for a given seed differ from 0.1.0; their statistics are unchanged.
|
|
74
|
+
- Every evaluation defaults to all threads, including `HeightAt` and `HeightsAt`.
|
|
75
|
+
- The `materials` module is folded into `pipeline` (material maps, `terraingen/pipeline/materials.h`) and `albedo` (Hapke photometry, `terraingen/albedo/photometry.h`), and `NoiseLayersAt` moves to `terraingen/sources/synthetic_terrain.h`.
|
|
76
|
+
- Python: `ExposureField.exposure` takes `(x, y, spacing=0.0, generator=None, layers=0)` like the other ground queries, unbounded options read as `None` instead of infinity, `write_outputs` returns paths and a subclass missing a required method raises `TypeError`.
|
|
77
|
+
- Written configurations leave out lists that are empty by default.
|
|
78
|
+
- Faster craters and boulders: ground reads for crater slopes and datums and beneath boulders are batched and spatially ordered, outputs over one area share the boulders placed for the first, boulder models are placed in parallel and ejecta craters found through a spatial index; the hero demo went from 433 s to about 10 s.
|
|
79
|
+
- Logs: generation logs each grid as it is evaluated with the time of every layer, the albedo and the materials and ends with each step's total and share; crater and boulder summaries log at debug level, boulders under boulders rather than craters, and `terraingen` ends with one line counting the files written.
|
|
80
|
+
|
|
81
|
+
### Removed
|
|
82
|
+
|
|
83
|
+
- Tile schemes, tiles and the tile cache (`TileScheme`, `TileKey`, `EvaluateTile`, `EvaluateTiles`, `TileCache`, in C++ and Python): level of detail belongs to the renderer, and any grid evaluated alone already equals the same cells of a larger one; the point query examples move to a `queries` category.
|
|
84
|
+
- Resampling and low-passing raster sources: `pixelSize`, `resampling` and `lowPass` on `GeoTiffSourceOptions` and the config keys `pixel_size`, `resampling` and `low_pass` on raster sources; upsampling over a finer grid replaces them.
|
|
85
|
+
- `DetailLayer` and the `dem_detail` layer, which only restored the detail a low-passed source removed.
|
|
86
|
+
- `GridRegionSpec`, `config::RegionGrid` and `config::FeatureOutput`; an output's area is an `OutputAreaSpec`.
|
|
87
|
+
- Python `crater_blend_weight` (use `CraterBlend.weight`), `CraterAgeModel.lifetime_gyr` (use `lifetime_at`) and the flat selection aliases on crater irregularity, crater albedo and secondary options (use `selection`).
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
92
|
+
- Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
|
|
93
|
+
- Secondary craters run on the GPU backend the terrain asks for instead of always on the CPU.
|
|
94
|
+
- A crater layer after a boulder layer no longer refits crater datums for every batch of ground reads.
|
|
95
|
+
- Tilted boulders are no longer cut off at grid edges and in point queries.
|
|
96
|
+
- Zero-area output areas and crater sizes below the models' range are rejected with a clear error instead of failing during generation.
|
|
97
|
+
- The library builds without warnings under Clang and MSVC.
|
|
98
|
+
|
|
99
|
+
### Migrating from 0.1.0
|
|
100
|
+
|
|
101
|
+
Old keys and names are rejected rather than aliased. Angle keys are in degrees; sizes in meters unless they end in `_px`.
|
|
102
|
+
|
|
103
|
+
**Configuration, top level and sources**
|
|
104
|
+
|
|
105
|
+
| 0.1.0 | 0.2.0 |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `base` | `source` (types `raster`, `chain`, `synthetic`) |
|
|
108
|
+
| `base.pixel_size`, `base.resampling` | `source.upsampling`; set the output's `pixel_size_m` for finer cells |
|
|
109
|
+
| `base.low_pass` | removed; `effective_pixel_size_m` for a DEM smoothed before it was saved |
|
|
110
|
+
| layer `dem_detail` | removed; use `source.upsampling` or a `spectral_continuation` layer |
|
|
111
|
+
|
|
112
|
+
**Configuration, outputs**
|
|
113
|
+
|
|
114
|
+
| 0.1.0 | 0.2.0 |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| `region.pixel_size` | `pixel_size_m` |
|
|
117
|
+
| `region.width`, `height`, `centre_x`, `centre_y` | `extent_m: {"center": [x, y], "size": [width * pixel_size, height * pixel_size]}` (`extent_deg` on a body) |
|
|
118
|
+
| `spacing` on `crater_list`, `boulder_list`, `boulder_models` | `pixel_size_m` |
|
|
119
|
+
| `path` required | `path` optional |
|
|
120
|
+
| `crease_angle` (`boulder_models`) | `crease_angle_deg` |
|
|
121
|
+
|
|
122
|
+
**Configuration, layers**
|
|
123
|
+
|
|
124
|
+
| 0.1.0 | 0.2.0 |
|
|
125
|
+
| --- | --- |
|
|
126
|
+
| layer `region` | layer `masked` |
|
|
127
|
+
| craters `generate` | `generate_random` |
|
|
128
|
+
| craters `min_diameter`, `max_diameter` | `min_diameter_m`, `max_diameter_m` |
|
|
129
|
+
| craters `apply.fade` {`start_samples`, `end_samples`, `shape`} | `apply.fade_px` [start, end], `apply.fade_shape` |
|
|
130
|
+
| crater `irregularity.heading`, `heading_spread` | `heading_deg`, `heading_spread_deg` |
|
|
131
|
+
| secondaries `min_diameter`, `max_diameter`, `min_primary_diameter`, `max_primary_diameter` | the same with `_m` |
|
|
132
|
+
| secondaries `width_degrees`, `min_half_angle_degrees` | `width_deg`, `min_half_angle_deg` |
|
|
133
|
+
| boulders `min_diameter`, `max_diameter` | `min_diameter_m`, `max_diameter_m` |
|
|
134
|
+
| boulders `fade` {`start_samples`, `end_samples`, `shape`} | `fade_px` [start, end], `fade_shape` |
|
|
135
|
+
| boulders `exposure_spacing` | `ground_spacing_m` |
|
|
136
|
+
| boulders `max_lean`, `max_tilt` | `max_lean_deg`, `max_tilt_deg` |
|
|
137
|
+
| boulders `patches.size`, `clusters.spacing`, `clusters.radius` | `patches.size_m`, `clusters.spacing_m`, `clusters.radius_m` |
|
|
138
|
+
| boulders `ejecta.min_crater_diameter`, `ejecta.regolith_thickness` | `ejecta.min_crater_diameter_m`, `ejecta.regolith_thickness_m` |
|
|
139
|
+
| boulders `fragmentation.min_diameter`, `relief_range.min_diameter`, `relief_range.max_diameter` | the same with `_m` |
|
|
140
|
+
| boulders `models.min_diameter`, `models.max_diameter`, `models.min_samples`, `models.max_samples` | `models.min_diameter_m`, `models.max_diameter_m`, `models.min_px`, `models.max_px` |
|
|
141
|
+
| manual boulders `yaw`, `lean`, `tilt`, `tilt_azimuth` | `yaw_deg`, `lean_deg`, `tilt_deg`, `tilt_azimuth_deg` |
|
|
142
|
+
| ventifacts `wind_azimuth`, `second_wind_azimuth`, `min_angle`, `max_angle` | the same with `_deg` |
|
|
143
|
+
| dunes `wind_azimuth`, `azimuth_spread`, `slip_face_angle`, `stoss_slope`, `flank_slope` | the same with `_deg` |
|
|
144
|
+
| bedforms `wind_azimuth`, `azimuth_spread` | `wind_azimuth_deg`, `azimuth_spread_deg` |
|
|
145
|
+
| strata `dip`, `dip_azimuth` | `dip_deg`, `dip_azimuth_deg` |
|
|
146
|
+
| pavement `max_tilt` | `max_tilt_deg` |
|
|
147
|
+
| sand shadow `wind_azimuth`, `flank_angle` | `wind_azimuth_deg`, `flank_angle_deg` |
|
|
148
|
+
| albedo `hue`, `hue_noise`, `heading` | `hue_deg`, `hue_noise_deg`, `heading_deg` |
|
|
149
|
+
| albedo `*_degrees` (`width_degrees`, `streak_width_degrees`, `jet_angle_degrees`, `steep_slope_degrees` and the rest) | `*_deg` |
|
|
150
|
+
| materials `roughness` | `roughness_deg` |
|
|
151
|
+
|
|
152
|
+
**C++ API**
|
|
153
|
+
|
|
154
|
+
| 0.1.0 | 0.2.0 |
|
|
155
|
+
| --- | --- |
|
|
156
|
+
| `Terrain` (`pipeline/terrain.h`) | `TerrainGenerator` (`pipeline/generator.h`) |
|
|
157
|
+
| `EvaluateAt`, `EvaluatePoints` | `HeightAt`, `HeightsAt` |
|
|
158
|
+
| `ValidateTerrain`, `BuildTerrain` | `ValidateGenerator`, `BuildGenerator` |
|
|
159
|
+
| `GenerateTerrain`, `GeneratedTerrain` (`.terrain`) | `GenerateFromConfig`, `GeneratedOutputs` (`.generator`) |
|
|
160
|
+
| `TerrainConfig` | `TerrainGenConfig` |
|
|
161
|
+
| `ConfigSummary::base` | `ConfigSummary::source` |
|
|
162
|
+
| `HeightMesh`, `HeightMeshOptions` (`pipeline/height_mesh.h`) | `BuildMesh`, `BuildMeshOptions` (`pipeline/mesh_build.h`) |
|
|
163
|
+
| `RegionLayer` (`layers/region.h`), `RegionShape::centre` | `MaskedLayer` (`layers/masked.h`), `RegionShape::center` |
|
|
164
|
+
| `Source::Fill(heights)`, `Source::HeightAt(x, y)` | `Source::Fill(heights, spacing)`, `Source::HeightAt(x, y, spacing)` |
|
|
165
|
+
| `GeoTiffSourceOptions::pixelSize`, `resampling`, `lowPass` | `upsampler`, `effectivePixelSize`; evaluate over a finer grid |
|
|
166
|
+
| `CraterLayerOptions::generate` | `CraterLayerOptions::generateRandom` |
|
|
167
|
+
| `BoulderLayerOptions::exposureSpacing` | `BoulderLayerOptions::groundSpacing` |
|
|
168
|
+
| `DetailLayer`, `TileScheme`, `TileKey`, `TileCache`, `EvaluateTile`, `EvaluateTiles` | removed |
|
|
169
|
+
| `GridRegionSpec`, `config::RegionGrid`, `config::FeatureOutput` | `OutputAreaSpec`, `ExtentSpec`, `config::SnappedGrid` |
|
|
170
|
+
| `terraingen/materials/` | `terraingen/pipeline/materials.h`, `terraingen/albedo/photometry.h` |
|
|
171
|
+
| `NoiseLayersAt` in `layers/noise_relief.h` | `sources/synthetic_terrain.h` |
|
|
172
|
+
| `TERRAINGEN_API_VERSION` 1 | 2 |
|
|
173
|
+
|
|
174
|
+
**Python API**
|
|
175
|
+
|
|
176
|
+
| 0.1.0 | 0.2.0 |
|
|
177
|
+
| --- | --- |
|
|
178
|
+
| `Terrain` | `TerrainGenerator` |
|
|
179
|
+
| `evaluate_at`, `evaluate_points` | `height_at`, `heights_at` |
|
|
180
|
+
| `build_terrain`, `generate_terrain`, `GeneratedTerrain` | `build_generator`, `generate_from_config`, `GeneratedOutputs` |
|
|
181
|
+
| `Config`, `Config.from_json`, `Config.load`, `Config.to_json` | `TerrainGenConfig`, `parse_config`, `load_config`, `config_to_json` |
|
|
182
|
+
| `Config.base_grid` | `TerrainGenConfig.source_grid` |
|
|
183
|
+
| `height_mesh` | `build_mesh` |
|
|
184
|
+
| `RegionLayer` | `MaskedLayer` |
|
|
185
|
+
| keyword `terrain=` | `generator=` (and `generated=` for `write_outputs`) |
|
|
186
|
+
| `Source.height_at(x, y)`, `Source.fill(heights)` | `height_at(x, y, spacing)`, `fill(heights, spacing)` |
|
|
187
|
+
| `GeoTiffSource(pixel_size=, resampling=, low_pass=)` | `GeoTiffSource(upsampler=, effective_pixel_size=, crop=)` |
|
|
188
|
+
| `version`, `api_version`, `build_info` | `get_version`, `get_api_version`, `get_build_info` |
|
|
189
|
+
| `boulder_fillet_height`, `perlin_noise3` | `fillet_height`, `perlin_noise3_precise` |
|
|
190
|
+
| `TriangleMesh.subdivided` | `TriangleMesh.subdivide` |
|
|
191
|
+
| `Raster.nodata`, `GeoTiffInfo.nodata` | `Raster.no_data`, `GeoTiffInfo.no_data` |
|
|
192
|
+
| `ValueDistributionKind` | `ValueDistribution.Kind` |
|
|
193
|
+
| `CraterGenerationOptions.min_diameter`, `max_diameter` | `d_min`, `d_max` |
|
|
194
|
+
| `CraterFeatures.write` | `CraterFeatures.write_list` |
|
|
195
|
+
| `cell_of`, `point_of`, `level_for`, `outline_of` | `cell_at`, `coordinates`, `resolving_level`, `irregular_outline` |
|
|
196
|
+
| `min_diameter_for_count`, `singer_range_for_size` | `count_limit_diameter`, `singer_max_range` |
|
|
197
|
+
| `SplotchOptions`, `SlopeMaturityOptions` | `SplotchAlbedoOptions`, `SlopeAlbedoOptions` |
|
|
198
|
+
| angles in radians (`SyntheticAlbedo(hue=)`, `hsv_to_rgb(hue)`, `RigidTransform.rotation_x(angle)`, `Boulder.yaw`, ...) | degrees with `_deg` names (`hue_deg=`, `angle_deg`, `Boulder.yaw_deg`, ...) |
|
|
199
|
+
| `crater_blend_weight`, `CraterAgeModel.lifetime_gyr` | `CraterBlend.weight`, `lifetime_at` |
|
|
200
|
+
| `TileScheme`, `TileKey`, `TileCache`, `evaluate_tile`, `evaluate_tiles` | removed |
|
|
201
|
+
|
|
202
|
+
## [0.1.0] - 2026-10-18
|
|
203
|
+
|
|
204
|
+
Initial release.
|
|
205
|
+
|
|
206
|
+
### Added
|
|
207
|
+
|
|
208
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
209
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
210
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
211
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
212
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
213
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
214
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
215
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
216
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
217
|
+
- Examples in C++, Python and JSON.
|
|
218
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
219
|
+
|
|
220
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.2.0...HEAD
|
|
221
|
+
[0.2.0]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...v0.2.0
|
|
222
|
+
[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.
|
|
11
|
+
set(TERRAINGEN_FULL_VERSION "0.2.0.dev117")
|
|
12
12
|
string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" TERRAINGEN_VERSION "${TERRAINGEN_FULL_VERSION}")
|
|
13
13
|
|
|
14
14
|
project(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: terraingenpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0.dev117
|
|
4
4
|
Summary: Scientific terrain generation for planetary surfaces
|
|
5
5
|
Keywords: terrain,moon,mars,craters,planetary science,simulation
|
|
6
6
|
Author: Alex Maietta
|
|
@@ -82,18 +82,18 @@ TerrainGen can:
|
|
|
82
82
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
83
83
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
84
84
|
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
85
|
-
- Generate deterministic results for the same seed on any grid,
|
|
85
|
+
- Generate deterministic results for the same seed on any grid, point query or thread count.
|
|
86
86
|
- Integrate into simulations and other external workflows.
|
|
87
87
|
|
|
88
88
|
We also provide:
|
|
89
89
|
|
|
90
|
-
- A
|
|
90
|
+
- A C++17 library with Python bindings and minimal dependencies.
|
|
91
91
|
- Smart and tested defaults for various surface features.
|
|
92
92
|
- A command-line interface that generates terrain from JSON configuration files.
|
|
93
93
|
- A GUI for editing configurations and viewing the results in 3D.
|
|
94
94
|
- Examples in C++, Python and JSON.
|
|
95
95
|
- A standalone demo that streams TerrainGen detail into a planetary-scale renderer on the GPU while navigating around the Moon.
|
|
96
|
-
- Example integrations with third-party tools such as Project Chrono, IsaacLab, and Newton.
|
|
96
|
+
- Example integrations with third-party tools such as Project Chrono, NASA Trick, IsaacLab, and Newton.
|
|
97
97
|
|
|
98
98
|
For more information on the concepts behind TerrainGen and the API, see our latest [documentation](https://alexmaietta.github.io/terraingen/).
|
|
99
99
|
|
|
@@ -136,7 +136,7 @@ To build the Python package from source, run `pip install .` instead.
|
|
|
136
136
|
docker run --rm ghcr.io/alexmaietta/terraingen:latest terraingen --help
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
The `latest` tag is the newest release, and each release is also tagged with its version without the `v`, such as `0.
|
|
139
|
+
The `latest` tag is the newest release, and each release is also tagged with its version without the `v`, such as `0.2.0` and `0.2`. The `dev` tag follows `main`.
|
|
140
140
|
|
|
141
141
|
## Getting Started
|
|
142
142
|
|
|
@@ -190,7 +190,7 @@ int main() {
|
|
|
190
190
|
|
|
191
191
|
### Examples
|
|
192
192
|
|
|
193
|
-
[examples/](examples/) has the same terrains as JSON configurations, C++ programs and Python scripts, covering basic terrains, craters, boulders, albedo, planets, DEM detail
|
|
193
|
+
[examples/](examples/) has the same terrains as JSON configurations, C++ programs and Python scripts, covering basic terrains, craters, boulders, albedo, planets, and DEM detail:
|
|
194
194
|
|
|
195
195
|
```sh
|
|
196
196
|
terraingen examples/config/craters/example_craters_simple.json
|
|
@@ -226,7 +226,7 @@ If you use TerrainGen for published research, please cite:
|
|
|
226
226
|
author = {Maietta, Alex},
|
|
227
227
|
title = {{TerrainGen}: An open-source scientific terrain generation suite for planetary surfaces},
|
|
228
228
|
url = {https://github.com/alexmaietta/terraingen},
|
|
229
|
-
version = {0.
|
|
229
|
+
version = {0.2.0},
|
|
230
230
|
license = {BSD-3-Clause},
|
|
231
231
|
year = {2026}
|
|
232
232
|
}
|
|
@@ -26,18 +26,18 @@ TerrainGen can:
|
|
|
26
26
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
27
27
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
28
28
|
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
29
|
-
- Generate deterministic results for the same seed on any grid,
|
|
29
|
+
- Generate deterministic results for the same seed on any grid, point query or thread count.
|
|
30
30
|
- Integrate into simulations and other external workflows.
|
|
31
31
|
|
|
32
32
|
We also provide:
|
|
33
33
|
|
|
34
|
-
- A
|
|
34
|
+
- A C++17 library with Python bindings and minimal dependencies.
|
|
35
35
|
- Smart and tested defaults for various surface features.
|
|
36
36
|
- A command-line interface that generates terrain from JSON configuration files.
|
|
37
37
|
- A GUI for editing configurations and viewing the results in 3D.
|
|
38
38
|
- Examples in C++, Python and JSON.
|
|
39
39
|
- A standalone demo that streams TerrainGen detail into a planetary-scale renderer on the GPU while navigating around the Moon.
|
|
40
|
-
- Example integrations with third-party tools such as Project Chrono, IsaacLab, and Newton.
|
|
40
|
+
- Example integrations with third-party tools such as Project Chrono, NASA Trick, IsaacLab, and Newton.
|
|
41
41
|
|
|
42
42
|
For more information on the concepts behind TerrainGen and the API, see our latest [documentation](https://alexmaietta.github.io/terraingen/).
|
|
43
43
|
|
|
@@ -80,7 +80,7 @@ To build the Python package from source, run `pip install .` instead.
|
|
|
80
80
|
docker run --rm ghcr.io/alexmaietta/terraingen:latest terraingen --help
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
The `latest` tag is the newest release, and each release is also tagged with its version without the `v`, such as `0.
|
|
83
|
+
The `latest` tag is the newest release, and each release is also tagged with its version without the `v`, such as `0.2.0` and `0.2`. The `dev` tag follows `main`.
|
|
84
84
|
|
|
85
85
|
## Getting Started
|
|
86
86
|
|
|
@@ -134,7 +134,7 @@ int main() {
|
|
|
134
134
|
|
|
135
135
|
### Examples
|
|
136
136
|
|
|
137
|
-
[examples/](examples/) has the same terrains as JSON configurations, C++ programs and Python scripts, covering basic terrains, craters, boulders, albedo, planets, DEM detail
|
|
137
|
+
[examples/](examples/) has the same terrains as JSON configurations, C++ programs and Python scripts, covering basic terrains, craters, boulders, albedo, planets, and DEM detail:
|
|
138
138
|
|
|
139
139
|
```sh
|
|
140
140
|
terraingen examples/config/craters/example_craters_simple.json
|
|
@@ -170,7 +170,7 @@ If you use TerrainGen for published research, please cite:
|
|
|
170
170
|
author = {Maietta, Alex},
|
|
171
171
|
title = {{TerrainGen}: An open-source scientific terrain generation suite for planetary surfaces},
|
|
172
172
|
url = {https://github.com/alexmaietta/terraingen},
|
|
173
|
-
version = {0.
|
|
173
|
+
version = {0.2.0},
|
|
174
174
|
license = {BSD-3-Clause},
|
|
175
175
|
year = {2026}
|
|
176
176
|
}
|
|
@@ -25,7 +25,7 @@ CHOICES = {
|
|
|
25
25
|
"layers[craters].profile": ("Crater profiles", "models/profiles"),
|
|
26
26
|
"layers[craters].degradation": ("Crater degradation", "models/degradation"),
|
|
27
27
|
"layers[boulders].sizes": ("Boulder sizes", "models/boulder-sizes"),
|
|
28
|
-
"layers[
|
|
28
|
+
"layers[masked].shape": ("Mask shapes", "models/mask-shapes"),
|
|
29
29
|
"outputs": ("Outputs", "outputs"),
|
|
30
30
|
"albedo.source": ("Albedo sources", "albedo-sources"),
|
|
31
31
|
"albedo.layers": ("Albedo layers", "albedo-layers"),
|
|
@@ -45,7 +45,7 @@ SECTIONS = [
|
|
|
45
45
|
"layers[craters].profile",
|
|
46
46
|
"layers[craters].degradation",
|
|
47
47
|
"layers[boulders].sizes",
|
|
48
|
-
"layers[
|
|
48
|
+
"layers[masked].shape",
|
|
49
49
|
],
|
|
50
50
|
),
|
|
51
51
|
("Albedo", ["albedo.source", "albedo.layers"]),
|
|
@@ -279,7 +279,7 @@ class Reference:
|
|
|
279
279
|
ref = self.ref_of("layers")
|
|
280
280
|
choice = self.definitions[ref]
|
|
281
281
|
names = self.names[ref]
|
|
282
|
-
index = ["# Layers", "", "Relief and features added to the
|
|
282
|
+
index = ["# Layers", "", "Relief and features added to the source, applied in order.", ""]
|
|
283
283
|
index += ["| Type | What it is |", "| --- | --- |"]
|
|
284
284
|
pages = []
|
|
285
285
|
for alternative in choice["alternatives"]:
|
|
@@ -11,7 +11,7 @@ namespace terraingen {
|
|
|
11
11
|
/// The version with any pre-release part, such as 0.1.0.dev42, as the Python package carries it.
|
|
12
12
|
#define TERRAINGEN_FULL_VERSION_STRING "@TERRAINGEN_FULL_VERSION@"
|
|
13
13
|
|
|
14
|
-
#define TERRAINGEN_API_VERSION
|
|
14
|
+
#define TERRAINGEN_API_VERSION 2
|
|
15
15
|
|
|
16
16
|
/// A semantic version number.
|
|
17
17
|
struct Version {
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/tests/integration/package/CMakeLists.txt
RENAMED
|
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22)
|
|
|
2
2
|
|
|
3
3
|
project(TerrainGenPackageTest LANGUAGES CXX)
|
|
4
4
|
|
|
5
|
-
find_package(terraingen 0.
|
|
5
|
+
find_package(terraingen 0.2 REQUIRED)
|
|
6
6
|
|
|
7
7
|
add_executable(package_test main.cpp)
|
|
8
8
|
target_link_libraries(package_test PRIVATE terraingen::terraingen)
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
|
|
12
|
-
- Piecewise uniform size-frequency distributions: counts per diameter band, given absolutely or as shares of a total.
|
|
13
|
-
- Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
|
|
14
|
-
- Thomas cluster process for boulder clusters, with Poisson-scattered centres whose clusters add where they overlap.
|
|
15
|
-
- Craters on slopes: floors offset downslope and rims and ejecta lowered upslope (Plescia et al. 2019), and faster wear toward a critical gradient (Roering et al. 1999).
|
|
16
|
-
- Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
|
|
17
|
-
- Density maps from GeoTIFFs or constants: a scale, a count in a diameter range, or an areal fraction such as rock abundance, which set crater and boulder densities point by point.
|
|
18
|
-
- Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
|
|
19
|
-
- Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
|
|
20
|
-
- Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
|
|
21
|
-
- Rock albedo: boulders brighter than the regolith (Holt 1981; Marshal et al. 2023), and a speckle of the share of each sample covered by boulders too small to resolve, with the scatter of randomly placed rocks.
|
|
22
|
-
- Slope albedo: steep ground kept immature by mass wasting, its optical maturity rising with slope beyond 20 degrees (Ikeda et al. 2022; Lucey et al. 2014).
|
|
23
|
-
- Crater shaping and datum fitting on the GPU on spheres, ellipsoids and shape models, not only on planes.
|
|
24
|
-
- Configurations are checked against every field's documented range, and errors name the exact field, such as `layers[2].reach`.
|
|
25
|
-
- Python options classes document every field with its description and unit, and gain `validate()` and a readable `repr`.
|
|
26
|
-
- `RasterSource`, heights from a raster in memory, shared rather than copied and upsampled as a GeoTIFF source is; `GeoTiffSource` is now a `RasterSource` of its band.
|
|
27
|
-
- Windowed GeoTIFF reads that decode only the strips or tiles a window meets, and a `crop` for GeoTIFF sources that reads only the window it needs while giving the same heights there as the whole file.
|
|
28
|
-
- Upsampling on sources (`Upsampler`, config `upsampling`): how a source's posts become heights between them and at any finer sample spacing, deterministically, so points, tiles and grids at one spacing agree; kernels `nearest`, `bilinear`, `cubic` (the default, the same bits as before), `catmull_rom`, `lanczos3` and `cubic_bspline`, and `diamond_square`.
|
|
29
|
-
- `RegisterUpsampler` (Python `register_upsampler`) names upsampler types of your own, C++ or Python subclasses of `Upsampler`, for configurations to use with their settings.
|
|
30
|
-
- Terrain reports (`ReportGrid`, `ReportToJson`, `TerrainReport`, `LayerTimer`; Python `report_grid`, `report_to_json`, `TerrainReport.to_dict`): height and slope statistics of an evaluated grid in the surface's meters, craters per power-of-2 diameter bin against a target distribution's expected counts, boulder counts and cover, and per-layer timings, as JSON, which the config's `report` output produces.
|
|
31
|
-
- `SyntheticSource` (config source `synthetic`): heights generated from a noise stack plus `elevation_m` over an unbounded plane or the whole body, evaluated at every point, or sampled at posts `pixel_size_m` apart and upsampled like a DEM; an empty stack is flat.
|
|
32
|
-
- `effective_pixel_size_m` on raster sources (`effectivePixelSize`), the cell size a DEM upsampled or smoothed before it was saved truly resolves, which `ResolutionAt` and `source_resolves_px` use.
|
|
33
|
-
- Lanczos (three lobes), Catmull-Rom and cubic B-spline kernels for `Resample`, `SampleRaster` and `ResampleMethod`.
|
|
34
|
-
- `Source::ResolutionAt`, the cell size of the data behind each height, and `UnresolvedCraterLimit`, a completeness limit that leaves the craters a DEM already resolves to it and generates only smaller ones; `MinimumField` combines it with a catalog's limit.
|
|
35
|
-
- Diamond-square upsampling (`DiamondSquareUpsampler`, `"upsampling": {"type": "diamond_square"}`): random midpoint displacement of a source's posts to finer spacings, as PANGU expands DEMs (Martin et al. 2014), keeping every coarser node so nested grids share their cells, with bilinear or Catmull-Rom (`interp`) refinement and the scale and fractal dimension estimated from the posts when not given.
|
|
36
|
-
- Spectral continuation layer: detail finer than a DEM that continues its fitted power-law spectrum (radially averaged, Hann-windowed PSD) to shorter wavelengths as sparse Gabor noise, tapered in at the DEM's Nyquist wavelength so resolved scales gain nothing; an alternative to diamond-square upsampling without lattice artifacts, with grids, tiles and points in agreement.
|
|
37
|
-
- Roughness and noise layers that estimate their settings from the base with `estimate_from_base`: the Hurst exponent and RMS height difference of its variogram at its native cells, extrapolated to the roughness baseline or matched at each noise layer's wavelength; explicit values override the estimates.
|
|
38
|
-
- Manual craters with an explicit rim-to-floor depth and rim height, in place of what the degradation model and age give; diffusion profiles solve for the age that reaches the depth.
|
|
39
|
-
- Manual boulders that fix any of their height, burial, yaw, lean, tilt, rest, wear and shape seed; unset fields are drawn as for generated boulders, and fixed ones are neither re-settled nor broken.
|
|
40
|
-
- Terrain meshes take `cutouts`, a `skirt` and a frame `site`.
|
|
41
|
-
- Output type `report` (`ReportOutput`) with an optional `path`: `GenerateFromConfig` returns the report (`GeneratedOutputs::report`, Python `GeneratedOutputs.report`) with a `GridReport` per grid with heights, crater bins against the first crater layer's density and boulder counts where a list output placed them, per-layer timings, backend, threads, layer seeds and version, and `WriteOutputs` writes it as JSON.
|
|
42
|
-
- `GetMeshSize` and `FillMesh` (Python `get_mesh_size`, `fill_mesh`) size and write a height mesh into caller buffers laid out as Chrono's ChVector3d and ChVector3i arrays or NumPy (N, 3) float64 and (M, 3) int32 arrays, with no copy; `FillHeights` (Python `fill_heights`) evaluates a terrain into a caller buffer; `TriangleMesh.positions` and `TriangleMesh.triangles` are NumPy views of a mesh without a copy.
|
|
43
|
-
- Configuration keys `crop` (`min_x`, `min_y`, `max_x`, `max_y` in CRS units) on raster sources to read only a window of a DEM.
|
|
44
|
-
- Manual-only boulder layers: `generate_random` off (`BoulderLayerOptions::generateRandom`) places only the `manual` boulders, with no random boulders or crater blocks, draws no candidates and needs no valid sizes or coverage; `CraterLayer::Manual` and `BoulderLayer::Manual` (Python `CraterLayer.manual`, `BoulderLayer.manual`) make layers of only the given craters or boulders.
|
|
45
|
-
- `source_resolves_px` on craters, secondaries, boulders, noise, dunes and bedforms: features at least that many source cells across, by diameter, wavelength or dune width, are already in the source data, so only smaller ones are added at each point, each raster of a chain giving its own limit and none where no raster has data; ignored on synthetic sources, `null` adds them all. It defaults to 4 on craters, secondaries, dunes and bedforms and to none on boulders and noise.
|
|
46
|
-
- `SourceResolvedLimit` and `LayerResolvedLimit` (Python `source_resolved_limit`), the per-point feature size a source already holds, and `sourceResolvesPixels` on `CraterLayerOptions`, `SecondaryCraterOptions`, `BoulderLayerOptions`, `DuneOptions` and `BedformOptions` (Python `source_resolves_px`), applied when the layer is given the source: `CraterLayer`, `SecondaryCraterLayer`, `BoulderLayer`, `DuneLayer`, `BedformLayer` and `NoiseRelief` take an optional `source` (Python `source=`), and `NoiseRelief` its `sourceResolvesPixels`.
|
|
47
|
-
- `fade_px` and `fade_shape` on crater `apply` and boulder layers (Python `fade_px`, `fade_shape`): the resolution fade as a list of its start and end output samples and its curve.
|
|
48
|
-
|
|
49
|
-
### Changed
|
|
50
|
-
|
|
51
|
-
- Breaking: every angle key in configurations and the Python options classes is now in degrees and ends in `_deg` (`wind_azimuth_deg`, `slip_face_angle_deg`, `heading_deg`, `crease_angle_deg`), azimuths counter-clockwise from +x (local east); the old keys are rejected. The rest of the Python API follows: `SyntheticAlbedo(hue_deg=, hue_noise_deg=)`, `hsv_to_rgb(hue_deg)`, `write_models(crease_angle_deg=)`, `TriangleMesh.with_creases(crease_angle_deg)`, `RigidTransform.rotation_x/y/z(angle_deg)`, `CubeSphereCells.direction(face, alpha_deg, beta_deg)`, `SlopeAlbedo.maturity_at(slope_deg)`, `Boulder` `yaw_deg`, `lean_deg`, `tilt_deg` and `tilt_azimuth_deg` (also the boulder table columns and the columns of boulder lists written as CSV or JSON), `BoulderFacet` `azimuth_deg` and `angle_deg`, `CraterImpact` `angle_deg` and `heading_deg`, `CraterOutline.heading_deg` and `RayDirection.azimuth_deg`; the C++ library keeps radians.
|
|
52
|
-
- Defaults give a plausible lunar terrain at 1 m per pixel in which every height layer shows: craters from a production surface capped below the Trask equilibrium with steady-state ages, diffusion and irregular outlines; Surveyor boulders; noise relief scaled to its wavelength; and visible roughness, bedforms and dunes.
|
|
53
|
-
- Boulder layers default to the nominal NASA SP-8023 intercrater sizes rather than Golombek-Rapp; a `coverage`, `qa`, `qb` or `ejecta.coverage` that no Golombek-Rapp sizes use is now an error that names `"sizes": {"type": "golombek_rapp"}`.
|
|
54
|
-
- Boulder lists and models hold every boulder of the layer's diameter range; only the heightmap leaves out boulders too small to resolve.
|
|
55
|
-
- Boulder ejecta come from every crater layer before the boulder layer, not only the last one.
|
|
56
|
-
- The boulder layer's `exposure_spacing` key is now `ground_spacing` (Python `ground_spacing`), the spacing of every ground read the layer makes.
|
|
57
|
-
- Crater shaping has one implementation, the kernel, on every surface; craters on bodies and custom profiles may differ from before in the last digits.
|
|
58
|
-
- Random streams and hashes are unified, so boulder, albedo, dune, bedform and pavement outputs for a given seed differ from earlier versions; their statistics are unchanged.
|
|
59
|
-
- Every evaluation defaults to all threads, including `EvaluateAt`, `EvaluateTile` and Python `evaluate_tile`.
|
|
60
|
-
- The `materials` module is folded into `pipeline` (material maps) and `albedo` (Hapke photometry); include `terraingen/pipeline/materials.h` and `terraingen/albedo/photometry.h`.
|
|
61
|
-
- Python: `ExposureField.exposure` takes `(x, y, spacing=0.0, terrain=None, layers=0)` like the other ground queries, unbounded options read as `None` instead of infinity, `write_outputs` returns paths, a subclass missing a required method raises `TypeError`, and `CraterFeatures.write` is `write_list`.
|
|
62
|
-
- Python names: `cell_of` is `cell_at`, `point_of` is `coordinates`, `level_for` is `resolving_level`, `outline_of` is `irregular_outline`, `min_diameter_for_count` is `count_limit_diameter`, `singer_range_for_size` is `singer_max_range`, `SplotchOptions` is `SplotchAlbedoOptions` and `SlopeMaturityOptions` is `SlopeAlbedoOptions`.
|
|
63
|
-
- The CI coverage job builds at `-O1` without atomic counters, so it caches and runs several times faster.
|
|
64
|
-
|
|
65
|
-
- Density maps that count every feature take out the secondaries thrown from a layer's craters and the blocks thrown out around craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
66
|
-
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
67
|
-
- Boulder generation logs under boulders rather than craters.
|
|
68
|
-
- Crater and boulder generation summaries log at debug level; `terraingen` ends with one line counting the files written instead of listing each, and feature outputs log how long they took.
|
|
69
|
-
- Generation logs each grid as it is evaluated, with the time of every layer, the albedo and the materials, and ends with each step's total and share.
|
|
70
|
-
- Faster boulders: the ground beneath them is read in one batch, outputs over one region share the boulders placed for the first, models are placed in parallel, ejecta craters are found through a spatial index and shapes skip the roughness of fracture planes that cannot reach a vertex. The hero demo runs in about 10 s instead of 276 s.
|
|
71
|
-
- Martin, Parkes and Dunstan is the default crater profile.
|
|
72
|
-
- Breaking: crater layers' `generate` is now `generate_random` (`CraterLayerOptions::generateRandom`, Python `generate_random`): it draws random craters from the size distribution, and manual craters are placed either way; the old key is rejected.
|
|
73
|
-
- Breaking: `HeightMesh` and `HeightMeshOptions` are now `BuildMesh` and `BuildMeshOptions`, and Python `height_mesh` is now `build_mesh`; a height mesh holds at most INT32_MAX vertices.
|
|
74
|
-
- Breaking: the configuration's `base` is now `source` (the old key is rejected), with types `raster`, `chain` and `synthetic`; without one the terrain starts from a flat synthetic source at 0 m. Python `Config.base_grid` is `source_grid`, and `ConfigSummary::base` is `source`; `DescribeSource` gives no grid for a source without bounds.
|
|
75
|
-
- Breaking: sources take the sample spacing, in their own units: `Source::Fill(heights, spacing)` and `Source::HeightAt(x, y, spacing)`, and Python `Source` subclasses define `height_at(x, y, spacing)` and `fill(heights, spacing)`; `Fill(heights)` keeps the grid's cell size. A source without bounds gives a grid without cells (`BoundedGrid`), and `Evaluate(terrain)` needs a grid for it.
|
|
76
|
-
- Breaking: raster sources upsample instead of resampling: `RasterSourceOptions` and `GeoTiffSourceOptions` take an `upsampler` and an `effectivePixelSize` (Python `upsampler=`, `effective_pixel_size=`), the GeoTIFF `region` is `crop`, and a raster source's grid is always its file's; evaluate it over a finer grid for finer cells.
|
|
77
|
-
- Breaking: outputs give their area as `pixel_size_m` and `extent_m` (`extent_deg` on a body), `{"center": [x, y], "size": [w, h]}` or `{"min": [x, y], "max": [x, y]}`, in place of `region` (and of `spacing` on crater lists, boulder lists and boulder models); the grid starts at the extent's min corner, is snapped outward to whole cells and sampled at cell centers. Both default to a raster or chain source's extent and cell size, and are required without one (`OutputAreaSpec`, `ExtentSpec`, `config::SnappedGrid`).
|
|
78
|
-
- Breaking: `terrain_mesh` outputs take `skirt_m`, `site_deg` as [lon, lat] and `cutouts` as `{"min": [x, y], "max": [x, y]}` boxes, for `skirt`, `site_x`/`site_y` and `min_x`/`max_x` boxes.
|
|
79
|
-
- Breaking: every output's `path` is optional; without one the result is returned and nothing is written. `GenerateFromConfig` (Python `generate_from_config`) returns everything the outputs ask for, each computed once: `GeneratedGrid` holds the `grid`, heights, albedo, materials, photometry, placed craters and boulders and the terrain mesh, `GeneratedOutputs` the body mesh or ICQ model, `Grid()` and `Find()`; `WriteOutputs` (Python `write_outputs`) only writes it. Python `GeneratedGrid` values are views without a copy.
|
|
80
|
-
- Breaking: renames, with no aliases: `Terrain` is `TerrainGenerator` (`pipeline/generator.h`), `EvaluateAt` and `EvaluatePoints` are `HeightAt` and `HeightsAt`, `ValidateTerrain` is `ValidateGenerator`, `BuildTerrain` is `BuildGenerator`, `GenerateTerrain` is `GenerateFromConfig` returning `GeneratedOutputs` (its `terrain` is `generator`), `TerrainConfig` is `TerrainGenConfig`, and `pipeline/height_mesh.h` is `pipeline/mesh_build.h`. Python follows C++ names one to one: `TerrainGenerator`, `TerrainGenConfig`, `GeneratedOutputs`, `height_at`, `heights_at`, `build_generator`, `generate_from_config`, `parse_config`, `load_config` and `config_to_json` (for `Config.from_json`, `Config.load` and `to_json`), `get_version`, `get_api_version`, `get_build_info`, `fillet_height`, `perlin_noise3_precise`, `TriangleMesh.subdivide`, `Raster.no_data`, `GeoTiffInfo.no_data`, `ValueDistribution.Kind`, `CraterGenerationOptions.d_min` and `d_max`, and keywords `generator=` (for `terrain=`), `generated=`, `heights=` (`fill_heights`), `random=` (samplers), `d_min=`/`d_max=`, `requested=`, `sink=`, `inner=`, `no_data=`, `lon_deg=`/`lat_deg=`.
|
|
81
|
-
- `NoiseLayersAt` moves to `terraingen/sources/synthetic_terrain.h`, and `HasData`, `Variogram` and `FitDeviogram` to `terraingen/raster/variogram.h`.
|
|
82
|
-
- Breaking: on a raster or chain source, craters, secondaries, dunes and bedforms leave out by default what is at least 4 source cells across (`source_resolves_px`); set it to `null` for the old output.
|
|
83
|
-
- Breaking: crater and boulder size keys carry their units, in configurations and the Python options classes alike; the old keys are rejected. Craters: `min_diameter` is `min_diameter_m`, `max_diameter` is `max_diameter_m`, and `apply.fade` (`start_samples`, `end_samples`, `shape`) is `apply.fade_px` with `apply.fade_shape`. Secondaries: `min_diameter_m`, `max_diameter_m`, `min_primary_diameter_m`, `max_primary_diameter_m`. Density maps: `min_diameter_m`, `max_diameter_m`. Boulders: `min_diameter_m`, `max_diameter_m`, `fade_px` with `fade_shape` (for `fade`), `ground_spacing_m`, `bedrock_mean_size_m`, `roll_distance_m`, `patches.size_m`, `clusters.spacing_m`, `clusters.radius_m`, `ejecta.min_crater_diameter_m`, `ejecta.regolith_thickness_m`, `fragmentation.min_diameter_m`, `models.min_diameter_m`, `models.max_diameter_m`, `models.min_px` (for `min_samples`), `models.max_px` (for `max_samples`), `relief_range.min_diameter_m`, `relief_range.max_diameter_m` and `slope_map.reference_diameter_m`.
|
|
84
|
-
- Breaking: the `region` layer is now `masked` (the old type is rejected), and `RegionLayer` is `MaskedLayer` (`terraingen/layers/masked.h`, Python `MaskedLayer`); `RegionShape::centre` is `center`.
|
|
85
|
-
|
|
86
|
-
### Fixed
|
|
87
|
-
|
|
88
|
-
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
89
|
-
- Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
|
|
90
|
-
- Crater layers over other layers read the ground beneath their slopes and datums in batches rather than point by point, and point batches are evaluated in spatial order: the hero demo went from 433 s to 11 s with the same output.
|
|
91
|
-
- Secondary craters run on the GPU backend the terrain asks for instead of always on the CPU.
|
|
92
|
-
- A crater layer after a boulder layer no longer refits crater datums for every batch of ground reads.
|
|
93
|
-
- Tilted boulders are no longer cut off at tile edges and point queries.
|
|
94
|
-
- Crater and boulder lists honour a spacing finer than the grid.
|
|
95
|
-
- Zero-area regions and crater sizes below the models' range are rejected with a clear error instead of failing during generation.
|
|
96
|
-
|
|
97
|
-
### Removed
|
|
98
|
-
|
|
99
|
-
- `GridRegionSpec`, `config::RegionGrid` and `config::FeatureOutput`; an output's area is an `OutputAreaSpec` and `config::OutputSpacing` takes the source's grid and the surface.
|
|
100
|
-
- Tile schemes, tiles and the tile cache (`TileScheme`, `TileKey`, `EvaluateTile`, `EvaluateTiles`, `TileCache`, in C++ and Python): level of detail belongs to the renderer, and any grid evaluated alone already equals the same cells of a larger one. The tile examples go too; the point query examples move to a `queries` category.
|
|
101
|
-
- Resampling raster sources to a pixel size and low-passing them: `pixelSize`, `resampling` and `lowPass` on `RasterSourceOptions` and `GeoTiffSourceOptions`, and the config keys `pixel_size`, `resampling` and `low_pass` on raster sources; upsampling over a finer grid replaces them.
|
|
102
|
-
- `DetailLayer` and the `dem_detail` layer, which only restored the detail a low-passed source removed.
|
|
103
|
-
- The crater layer key `unresolved_pixels_across` (`CraterLayerSpec::unresolvedPixelsAcross`): `source_resolves_px` replaces it.
|
|
104
|
-
- Python `crater_blend_weight` (use `CraterBlend.weight`), `CraterAgeModel.lifetime_gyr` (use `lifetime_at`) and the flat selection aliases on crater irregularity, crater albedo and secondary options (use `selection`).
|
|
105
|
-
|
|
106
|
-
## [0.1.0] - 2026-10-18
|
|
107
|
-
|
|
108
|
-
Initial release.
|
|
109
|
-
|
|
110
|
-
### Added
|
|
111
|
-
|
|
112
|
-
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
113
|
-
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
114
|
-
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
115
|
-
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
116
|
-
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
117
|
-
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
118
|
-
- Deterministic output for a seed on any grid, tile or thread count.
|
|
119
|
-
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
120
|
-
- `terraingen` command-line interface driven by JSON configurations.
|
|
121
|
-
- Examples in C++, Python and JSON.
|
|
122
|
-
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
123
|
-
|
|
124
|
-
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
|
|
125
|
-
[0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/ISSUE_TEMPLATE/bug_report.yml
RENAMED
|
File without changes
|
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/ISSUE_TEMPLATE/feature_request.yml
RENAMED
|
File without changes
|
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/.github/scripts/install-lavapipe-windows.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_nor_gl_4k.exr
RENAMED
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/moon_01_rough_4k.exr
RENAMED
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_ao_2k.png
RENAMED
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_arm_2k.png
RENAMED
|
File without changes
|
{terraingenpy-0.1.1.dev115 → terraingenpy-0.2.0.dev117}/assets/textures/seaside_rock_diff_2k.png
RENAMED
|
File without changes
|