terraingenpy 0.1.1.dev95__tar.gz → 0.1.1.dev115__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1255) hide show
  1. terraingenpy-0.1.1.dev115/.github/workflows/ci.yml +514 -0
  2. terraingenpy-0.1.1.dev115/CHANGELOG.md +125 -0
  3. terraingenpy-0.1.1.dev115/CMakeLists.txt +150 -0
  4. terraingenpy-0.1.1.dev115/PKG-INFO +250 -0
  5. terraingenpy-0.1.1.dev115/README.md +194 -0
  6. terraingenpy-0.1.1.dev115/docs/scripts/generate_schema.py +421 -0
  7. terraingenpy-0.1.1.dev115/examples/README.md +79 -0
  8. terraingenpy-0.1.1.dev115/examples/config/ages/example_ages_fresh.json +75 -0
  9. terraingenpy-0.1.1.dev115/examples/config/ages/example_ages_freshness.json +83 -0
  10. terraingenpy-0.1.1.dev115/examples/config/ages/example_ages_steady_state.json +79 -0
  11. terraingenpy-0.1.1.dev115/examples/config/ages/example_ages_uniform.json +76 -0
  12. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_blast_zone.json +113 -0
  13. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_crater_rays.json +103 -0
  14. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_fresh_crater.json +157 -0
  15. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_moon_site.json +113 -0
  16. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_new_crater.json +145 -0
  17. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_oblique_rays.json +117 -0
  18. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_rgb.json +73 -0
  19. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_rocks_and_slopes.json +91 -0
  20. terraingenpy-0.1.1.dev115/examples/config/albedo/example_albedo_synthetic.json +62 -0
  21. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_buried.json +75 -0
  22. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_ejecta.json +75 -0
  23. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_exposure.json +63 -0
  24. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_fragments.json +89 -0
  25. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_layer.json +85 -0
  26. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_manual.json +94 -0
  27. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_max_slope.json +59 -0
  28. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_models.json +76 -0
  29. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_patches.json +62 -0
  30. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_rock_abundance.json +80 -0
  31. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_rolling.json +60 -0
  32. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_scene.json +91 -0
  33. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_shapes.json +82 -0
  34. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_slope_map.json +68 -0
  35. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_sp8023.json +58 -0
  36. terraingenpy-0.1.1.dev115/examples/config/boulders/example_boulders_thomas_clusters.json +65 -0
  37. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_catalog_and_map.json +82 -0
  38. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_datum.json +64 -0
  39. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_degradation_diffusion.json +67 -0
  40. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_degradation_none.json +63 -0
  41. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_interior_replacement.json +68 -0
  42. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_irregular.json +72 -0
  43. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_manual.json +78 -0
  44. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_manual_depth.json +74 -0
  45. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_max_craters.json +76 -0
  46. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_profile_complex.json +82 -0
  47. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +63 -0
  48. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_rim_smoothing_soft.json +69 -0
  49. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_secondaries.json +55 -0
  50. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_secondary_rays.json +81 -0
  51. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_simple.json +79 -0
  52. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_slopes.json +49 -0
  53. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_smoothed_rims.json +65 -0
  54. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_spacing.json +79 -0
  55. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_texture.json +71 -0
  56. terraingenpy-0.1.1.dev115/examples/config/craters/example_craters_wall_marks.json +65 -0
  57. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_moore_rough_mare.json +58 -0
  58. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_piecewise_power_law.json +69 -0
  59. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_piecewise_uniform.json +77 -0
  60. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_power_law.json +59 -0
  61. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_tabulated.json +75 -0
  62. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_trask_equilibrium.json +57 -0
  63. terraingenpy-0.1.1.dev115/examples/config/distributions/example_distributions_viper.json +57 -0
  64. terraingenpy-0.1.1.dev115/examples/config/layers/example_layers_regions.json +124 -0
  65. terraingenpy-0.1.1.dev115/examples/config/layers/example_layers_roughness.json +40 -0
  66. terraingenpy-0.1.1.dev115/examples/config/layers/example_layers_scale_and_clamp.json +43 -0
  67. terraingenpy-0.1.1.dev115/examples/config/layers/example_layers_spectral_continuation.json +41 -0
  68. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_asteroid_body_mesh.json +48 -0
  69. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_bedforms.json +59 -0
  70. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_craters.json +72 -0
  71. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_dunes.json +81 -0
  72. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_exposure.json +74 -0
  73. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_pavement.json +90 -0
  74. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_sand_fill.json +86 -0
  75. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_sand_shadows.json +83 -0
  76. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_strata.json +83 -0
  77. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mars_ventifacts.json +85 -0
  78. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_mercury_site.json +56 -0
  79. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_moon_body_mesh.json +57 -0
  80. terraingenpy-0.1.1.dev115/examples/config/planets/example_planets_moon_site.json +85 -0
  81. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_billow.json +34 -0
  82. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_cellular.json +34 -0
  83. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_domain_warp.json +35 -0
  84. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_fbm.json +33 -0
  85. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_layered.json +49 -0
  86. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_ridged.json +34 -0
  87. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_roughness.json +34 -0
  88. terraingenpy-0.1.1.dev115/examples/config/terrain/example_terrain_voronoi.json +41 -0
  89. terraingenpy-0.1.1.dev115/examples/cpp/ages/example_ages_models.cpp +164 -0
  90. terraingenpy-0.1.1.dev115/examples/cpp/albedo/example_albedo_crater_rays.cpp +109 -0
  91. terraingenpy-0.1.1.dev115/examples/cpp/boulders/example_boulders_ejecta.cpp +128 -0
  92. terraingenpy-0.1.1.dev115/examples/cpp/boulders/example_boulders_layer.cpp +111 -0
  93. terraingenpy-0.1.1.dev115/examples/cpp/boulders/example_boulders_manual.cpp +165 -0
  94. terraingenpy-0.1.1.dev115/examples/cpp/common/example.cpp +293 -0
  95. terraingenpy-0.1.1.dev115/examples/cpp/config/example_config_load.cpp +66 -0
  96. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_degradation.cpp +137 -0
  97. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_manual.cpp +106 -0
  98. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_manual_depth.cpp +118 -0
  99. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_profiles.cpp +159 -0
  100. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_secondaries.cpp +112 -0
  101. terraingenpy-0.1.1.dev115/examples/cpp/craters/example_craters_simple.cpp +98 -0
  102. terraingenpy-0.1.1.dev115/examples/cpp/layers/example_layers_custom.cpp +168 -0
  103. terraingenpy-0.1.1.dev115/examples/cpp/layers/example_layers_regions.cpp +119 -0
  104. terraingenpy-0.1.1.dev115/examples/cpp/planets/example_planets_moon.cpp +145 -0
  105. terraingenpy-0.1.1.dev115/examples/cpp/queries/example_queries_rover_contacts.cpp +162 -0
  106. terraingenpy-0.1.1.dev115/examples/cpp/sources/example_sources_raster_detail.cpp +127 -0
  107. terraingenpy-0.1.1.dev115/examples/cpp/sources/example_sources_raster_roughness.cpp +104 -0
  108. terraingenpy-0.1.1.dev115/examples/cpp/terrain/example_terrain_fbm.cpp +75 -0
  109. terraingenpy-0.1.1.dev115/examples/cpp/terrain/example_terrain_layered.cpp +95 -0
  110. terraingenpy-0.1.1.dev115/examples/python/_harness.py +233 -0
  111. terraingenpy-0.1.1.dev115/examples/python/ages/example_ages_models.py +94 -0
  112. terraingenpy-0.1.1.dev115/examples/python/albedo/example_albedo_crater_rays.py +87 -0
  113. terraingenpy-0.1.1.dev115/examples/python/albedo/example_albedo_moon_site.py +95 -0
  114. terraingenpy-0.1.1.dev115/examples/python/albedo/example_albedo_options.py +151 -0
  115. terraingenpy-0.1.1.dev115/examples/python/boulders/example_boulders_exposure.py +78 -0
  116. terraingenpy-0.1.1.dev115/examples/python/boulders/example_boulders_layer.py +97 -0
  117. terraingenpy-0.1.1.dev115/examples/python/boulders/example_boulders_manual.py +121 -0
  118. terraingenpy-0.1.1.dev115/examples/python/boulders/example_boulders_positioning.py +102 -0
  119. terraingenpy-0.1.1.dev115/examples/python/boulders/example_boulders_size_models.py +88 -0
  120. terraingenpy-0.1.1.dev115/examples/python/config/example_config_load.py +65 -0
  121. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_age_sweep.py +85 -0
  122. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_apply_options.py +94 -0
  123. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_degradation.py +89 -0
  124. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_irregularity.py +97 -0
  125. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_manual.py +73 -0
  126. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_manual_depth.py +100 -0
  127. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_positioning.py +98 -0
  128. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_profiles.py +135 -0
  129. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_rim_smoothing.py +78 -0
  130. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_secondaries.py +91 -0
  131. terraingenpy-0.1.1.dev115/examples/python/craters/example_craters_simple.py +73 -0
  132. terraingenpy-0.1.1.dev115/examples/python/distributions/example_distributions_custom.py +85 -0
  133. terraingenpy-0.1.1.dev115/examples/python/layers/example_layers_custom.py +149 -0
  134. terraingenpy-0.1.1.dev115/examples/python/layers/example_layers_regions.py +99 -0
  135. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_body_mesh.py +98 -0
  136. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_mars.py +82 -0
  137. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_mars_dunes.py +63 -0
  138. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_mars_exposure.py +103 -0
  139. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_mercury.py +83 -0
  140. terraingenpy-0.1.1.dev115/examples/python/planets/example_planets_moon_site.py +102 -0
  141. terraingenpy-0.1.1.dev115/examples/python/queries/example_queries_points.py +90 -0
  142. terraingenpy-0.1.1.dev115/examples/python/queries/example_queries_rover_contacts.py +121 -0
  143. terraingenpy-0.1.1.dev115/examples/python/sources/example_sources_chain.py +80 -0
  144. terraingenpy-0.1.1.dev115/examples/python/sources/example_sources_raster_detail.py +131 -0
  145. terraingenpy-0.1.1.dev115/examples/python/terrain/example_terrain_fbm.py +62 -0
  146. terraingenpy-0.1.1.dev115/examples/python/terrain/example_terrain_fractal_types.py +61 -0
  147. terraingenpy-0.1.1.dev115/examples/python/terrain/example_terrain_hurst_sweep.py +62 -0
  148. terraingenpy-0.1.1.dev115/examples/python/terrain/example_terrain_layered.py +75 -0
  149. terraingenpy-0.1.1.dev115/terraingen/albedo/bands.cpp +66 -0
  150. terraingenpy-0.1.1.dev115/terraingen/app/cli.cpp +347 -0
  151. terraingenpy-0.1.1.dev115/terraingen/app/gui/config_editor.cpp +921 -0
  152. terraingenpy-0.1.1.dev115/terraingen/app/gui/config_editor.h +128 -0
  153. terraingenpy-0.1.1.dev115/terraingen/app/gui/gui_app.cpp +509 -0
  154. terraingenpy-0.1.1.dev115/terraingen/config/CMakeLists.txt +26 -0
  155. terraingenpy-0.1.1.dev115/terraingen/config/build.cpp +1008 -0
  156. terraingenpy-0.1.1.dev115/terraingen/config/build.h +173 -0
  157. terraingenpy-0.1.1.dev115/terraingen/config/config.cpp +130 -0
  158. terraingenpy-0.1.1.dev115/terraingen/config/config.h +1385 -0
  159. terraingenpy-0.1.1.dev115/terraingen/config/fields/boulders.h +583 -0
  160. terraingenpy-0.1.1.dev115/terraingen/config/fields/common.h +343 -0
  161. terraingenpy-0.1.1.dev115/terraingen/config/fields/craters.h +448 -0
  162. terraingenpy-0.1.1.dev115/terraingen/config/fields/enums.h +402 -0
  163. terraingenpy-0.1.1.dev115/terraingen/config/fields/fields.h +44 -0
  164. terraingenpy-0.1.1.dev115/terraingen/config/fields/json_io.h +391 -0
  165. terraingenpy-0.1.1.dev115/terraingen/config/fields/layers.h +610 -0
  166. terraingenpy-0.1.1.dev115/terraingen/config/fields/maps.h +62 -0
  167. terraingenpy-0.1.1.dev115/terraingen/config/fields/outputs.h +205 -0
  168. terraingenpy-0.1.1.dev115/terraingen/config/fields/ranges.h +141 -0
  169. terraingenpy-0.1.1.dev115/terraingen/config/fields/sources.h +175 -0
  170. terraingenpy-0.1.1.dev115/terraingen/config/generate.cpp +590 -0
  171. terraingenpy-0.1.1.dev115/terraingen/config/generate.h +136 -0
  172. terraingenpy-0.1.1.dev115/terraingen/config/json.cpp +252 -0
  173. terraingenpy-0.1.1.dev115/terraingen/config/json.h +88 -0
  174. terraingenpy-0.1.1.dev115/terraingen/config/ranges.cpp +89 -0
  175. terraingenpy-0.1.1.dev115/terraingen/config/report.cpp +284 -0
  176. terraingenpy-0.1.1.dev115/terraingen/config/report.h +114 -0
  177. terraingenpy-0.1.1.dev115/terraingen/config/schema.cpp +274 -0
  178. terraingenpy-0.1.1.dev115/terraingen/config/validate.cpp +1060 -0
  179. terraingenpy-0.1.1.dev115/terraingen/config/validate.h +57 -0
  180. terraingenpy-0.1.1.dev115/terraingen/layers/CMakeLists.txt +80 -0
  181. terraingenpy-0.1.1.dev115/terraingen/layers/bedforms.cpp +204 -0
  182. terraingenpy-0.1.1.dev115/terraingen/layers/bedforms.h +129 -0
  183. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/abundance.cpp +391 -0
  184. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_abundance.cpp +180 -0
  185. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_abundance.h +83 -0
  186. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_layer.cpp +1028 -0
  187. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_layer.h +409 -0
  188. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_options.cpp +304 -0
  189. terraingenpy-0.1.1.dev115/terraingen/layers/boulders/boulder_options.h +533 -0
  190. terraingenpy-0.1.1.dev115/terraingen/layers/craters/crater_layer.cpp +230 -0
  191. terraingenpy-0.1.1.dev115/terraingen/layers/craters/crater_layer.h +159 -0
  192. terraingenpy-0.1.1.dev115/terraingen/layers/craters/degradation/diffusion.cpp +330 -0
  193. terraingenpy-0.1.1.dev115/terraingen/layers/craters/generation/resolved_limit.cpp +19 -0
  194. terraingenpy-0.1.1.dev115/terraingen/layers/craters/generation/resolved_limit.h +31 -0
  195. terraingenpy-0.1.1.dev115/terraingen/layers/craters/secondaries.cpp +402 -0
  196. terraingenpy-0.1.1.dev115/terraingen/layers/craters/secondaries.h +94 -0
  197. terraingenpy-0.1.1.dev115/terraingen/layers/craters/secondary_model.cpp +258 -0
  198. terraingenpy-0.1.1.dev115/terraingen/layers/craters/secondary_model.h +248 -0
  199. terraingenpy-0.1.1.dev115/terraingen/layers/craters/shaping/apply.cpp +1173 -0
  200. terraingenpy-0.1.1.dev115/terraingen/layers/craters/shaping/attributes.cpp +23 -0
  201. terraingenpy-0.1.1.dev115/terraingen/layers/craters/shaping/datum.cpp +94 -0
  202. terraingenpy-0.1.1.dev115/terraingen/layers/craters/shaping/explicit_state.cpp +145 -0
  203. terraingenpy-0.1.1.dev115/terraingen/layers/dunes.cpp +641 -0
  204. terraingenpy-0.1.1.dev115/terraingen/layers/dunes.h +279 -0
  205. terraingenpy-0.1.1.dev115/terraingen/layers/masked.cpp +240 -0
  206. terraingenpy-0.1.1.dev115/terraingen/layers/masked.h +117 -0
  207. terraingenpy-0.1.1.dev115/terraingen/layers/noise_relief.cpp +66 -0
  208. terraingenpy-0.1.1.dev115/terraingen/layers/noise_relief.h +64 -0
  209. terraingenpy-0.1.1.dev115/terraingen/layers/roughness.cpp +194 -0
  210. terraingenpy-0.1.1.dev115/terraingen/layers/roughness_estimate.cpp +135 -0
  211. terraingenpy-0.1.1.dev115/terraingen/layers/roughness_estimate.h +62 -0
  212. terraingenpy-0.1.1.dev115/terraingen/layers/source_resolved.cpp +60 -0
  213. terraingenpy-0.1.1.dev115/terraingen/layers/source_resolved.h +46 -0
  214. terraingenpy-0.1.1.dev115/terraingen/layers/spectral_continuation.cpp +524 -0
  215. terraingenpy-0.1.1.dev115/terraingen/layers/spectral_continuation.h +171 -0
  216. terraingenpy-0.1.1.dev115/terraingen/layers/transforms.cpp +55 -0
  217. terraingenpy-0.1.1.dev115/terraingen/mesh/io/gltf.cpp +303 -0
  218. terraingenpy-0.1.1.dev115/terraingen/mesh/io/obj.cpp +115 -0
  219. terraingenpy-0.1.1.dev115/terraingen/mesh/io/stl.cpp +135 -0
  220. terraingenpy-0.1.1.dev115/terraingen/mesh/shape_model.cpp +183 -0
  221. terraingenpy-0.1.1.dev115/terraingen/noise/validate.cpp +38 -0
  222. terraingenpy-0.1.1.dev115/terraingen/pipeline/CMakeLists.txt +14 -0
  223. terraingenpy-0.1.1.dev115/terraingen/pipeline/body_mesh.cpp +116 -0
  224. terraingenpy-0.1.1.dev115/terraingen/pipeline/body_mesh.h +37 -0
  225. terraingenpy-0.1.1.dev115/terraingen/pipeline/features.cpp +21 -0
  226. terraingenpy-0.1.1.dev115/terraingen/pipeline/features.h +23 -0
  227. terraingenpy-0.1.1.dev115/terraingen/pipeline/generator.cpp +220 -0
  228. terraingenpy-0.1.1.dev115/terraingen/pipeline/generator.h +160 -0
  229. terraingenpy-0.1.1.dev115/terraingen/pipeline/materials.cpp +123 -0
  230. terraingenpy-0.1.1.dev115/terraingen/pipeline/materials.h +56 -0
  231. terraingenpy-0.1.1.dev115/terraingen/pipeline/mesh_build.cpp +254 -0
  232. terraingenpy-0.1.1.dev115/terraingen/pipeline/mesh_build.h +71 -0
  233. terraingenpy-0.1.1.dev115/terraingen/python/CMakeLists.txt +62 -0
  234. terraingenpy-0.1.1.dev115/terraingen/python/src/albedo.cpp +474 -0
  235. terraingenpy-0.1.1.dev115/terraingen/python/src/arrays.h +75 -0
  236. terraingenpy-0.1.1.dev115/terraingen/python/src/bindings.h +26 -0
  237. terraingenpy-0.1.1.dev115/terraingen/python/src/boulders.cpp +455 -0
  238. terraingenpy-0.1.1.dev115/terraingen/python/src/craters.cpp +572 -0
  239. terraingenpy-0.1.1.dev115/terraingen/python/src/distribution.cpp +377 -0
  240. terraingenpy-0.1.1.dev115/terraingen/python/src/gpu.cpp +46 -0
  241. terraingenpy-0.1.1.dev115/terraingen/python/src/layers.cpp +513 -0
  242. terraingenpy-0.1.1.dev115/terraingen/python/src/materials.cpp +106 -0
  243. terraingenpy-0.1.1.dev115/terraingen/python/src/mesh.cpp +265 -0
  244. terraingenpy-0.1.1.dev115/terraingen/python/src/module.cpp +26 -0
  245. terraingenpy-0.1.1.dev115/terraingen/python/src/noise.cpp +370 -0
  246. terraingenpy-0.1.1.dev115/terraingen/python/src/objects.h +123 -0
  247. terraingenpy-0.1.1.dev115/terraingen/python/src/options.h +307 -0
  248. terraingenpy-0.1.1.dev115/terraingen/python/src/pipeline.cpp +578 -0
  249. terraingenpy-0.1.1.dev115/terraingen/python/src/random.cpp +138 -0
  250. terraingenpy-0.1.1.dev115/terraingen/python/src/raster.cpp +289 -0
  251. terraingenpy-0.1.1.dev115/terraingen/python/src/report.cpp +103 -0
  252. terraingenpy-0.1.1.dev115/terraingen/python/src/sources.cpp +461 -0
  253. terraingenpy-0.1.1.dev115/terraingen/python/src/util.cpp +243 -0
  254. terraingenpy-0.1.1.dev115/terraingen/python/terraingen/render.py +237 -0
  255. terraingenpy-0.1.1.dev115/terraingen/random/streams.h +147 -0
  256. terraingenpy-0.1.1.dev115/terraingen/raster/CMakeLists.txt +20 -0
  257. terraingenpy-0.1.1.dev115/terraingen/raster/resample.cpp +235 -0
  258. terraingenpy-0.1.1.dev115/terraingen/raster/resample.h +169 -0
  259. terraingenpy-0.1.1.dev115/terraingen/raster/variogram.cpp +71 -0
  260. terraingenpy-0.1.1.dev115/terraingen/raster/variogram.h +30 -0
  261. terraingenpy-0.1.1.dev115/terraingen/sources/CMakeLists.txt +17 -0
  262. terraingenpy-0.1.1.dev115/terraingen/sources/diamond_square.cpp +421 -0
  263. terraingenpy-0.1.1.dev115/terraingen/sources/diamond_square.h +172 -0
  264. terraingenpy-0.1.1.dev115/terraingen/sources/field.cpp +125 -0
  265. terraingenpy-0.1.1.dev115/terraingen/sources/field.h +141 -0
  266. terraingenpy-0.1.1.dev115/terraingen/sources/flat_source.cpp +30 -0
  267. terraingenpy-0.1.1.dev115/terraingen/sources/flat_source.h +58 -0
  268. terraingenpy-0.1.1.dev115/terraingen/sources/geotiff_source.cpp +109 -0
  269. terraingenpy-0.1.1.dev115/terraingen/sources/geotiff_source.h +115 -0
  270. terraingenpy-0.1.1.dev115/terraingen/sources/raster_source.cpp +186 -0
  271. terraingenpy-0.1.1.dev115/terraingen/sources/raster_source.h +186 -0
  272. terraingenpy-0.1.1.dev115/terraingen/sources/source.h +80 -0
  273. terraingenpy-0.1.1.dev115/terraingen/sources/source_chain.cpp +63 -0
  274. terraingenpy-0.1.1.dev115/terraingen/sources/source_chain.h +60 -0
  275. terraingenpy-0.1.1.dev115/terraingen/sources/synthetic_source.cpp +102 -0
  276. terraingenpy-0.1.1.dev115/terraingen/sources/synthetic_source.h +104 -0
  277. terraingenpy-0.1.1.dev115/terraingen/sources/synthetic_terrain.cpp +68 -0
  278. terraingenpy-0.1.1.dev115/terraingen/sources/synthetic_terrain.h +54 -0
  279. terraingenpy-0.1.1.dev115/terraingen/sources/upsampling.cpp +335 -0
  280. terraingenpy-0.1.1.dev115/terraingen/sources/upsampling.h +188 -0
  281. terraingenpy-0.1.1.dev115/terraingen/terraingen.h +142 -0
  282. terraingenpy-0.1.1.dev115/terraingen/util/fft.cpp +75 -0
  283. terraingenpy-0.1.1.dev115/terraingen/util/fft.h +26 -0
  284. terraingenpy-0.1.1.dev115/tests/benchmark/CMakeLists.txt +30 -0
  285. terraingenpy-0.1.1.dev115/tests/benchmark/bench_grids.cpp +87 -0
  286. terraingenpy-0.1.1.dev115/tests/benchmark/bench_point_queries.cpp +115 -0
  287. terraingenpy-0.1.1.dev115/tests/benchmark/bench_python_subclasses.py +144 -0
  288. terraingenpy-0.1.1.dev115/tests/benchmark/fixtures.h +43 -0
  289. terraingenpy-0.1.1.dev115/tests/python/conftest.py +222 -0
  290. terraingenpy-0.1.1.dev115/tests/python/test_albedo.py +303 -0
  291. terraingenpy-0.1.1.dev115/tests/python/test_boulders.py +390 -0
  292. terraingenpy-0.1.1.dev115/tests/python/test_config.py +302 -0
  293. terraingenpy-0.1.1.dev115/tests/python/test_crater_models.py +291 -0
  294. terraingenpy-0.1.1.dev115/tests/python/test_craters.py +543 -0
  295. terraingenpy-0.1.1.dev115/tests/python/test_examples_harness.py +150 -0
  296. terraingenpy-0.1.1.dev115/tests/python/test_gpu.py +66 -0
  297. terraingenpy-0.1.1.dev115/tests/python/test_layers.py +649 -0
  298. terraingenpy-0.1.1.dev115/tests/python/test_meshes.py +205 -0
  299. terraingenpy-0.1.1.dev115/tests/python/test_noise.py +250 -0
  300. terraingenpy-0.1.1.dev115/tests/python/test_pipeline.py +363 -0
  301. terraingenpy-0.1.1.dev115/tests/python/test_raster.py +251 -0
  302. terraingenpy-0.1.1.dev115/tests/python/test_render.py +146 -0
  303. terraingenpy-0.1.1.dev115/tests/python/test_report.py +105 -0
  304. terraingenpy-0.1.1.dev115/tests/python/test_sources.py +312 -0
  305. terraingenpy-0.1.1.dev115/tests/python/test_util.py +212 -0
  306. terraingenpy-0.1.1.dev115/tests/unit/albedo/albedo_test.cpp +429 -0
  307. terraingenpy-0.1.1.dev115/tests/unit/albedo/blast_zones_test.cpp +122 -0
  308. terraingenpy-0.1.1.dev115/tests/unit/albedo/crater_albedo_test.cpp +836 -0
  309. terraingenpy-0.1.1.dev115/tests/unit/albedo/rock_albedo_test.cpp +160 -0
  310. terraingenpy-0.1.1.dev115/tests/unit/albedo/slope_albedo_test.cpp +124 -0
  311. terraingenpy-0.1.1.dev115/tests/unit/app/cli_test.cpp +291 -0
  312. terraingenpy-0.1.1.dev115/tests/unit/app/gui/config_editor_test.cpp +186 -0
  313. terraingenpy-0.1.1.dev115/tests/unit/app/gui/gui_app_test.cpp +175 -0
  314. terraingenpy-0.1.1.dev115/tests/unit/config/CMakeLists.txt +21 -0
  315. terraingenpy-0.1.1.dev115/tests/unit/config/angles_test.cpp +171 -0
  316. terraingenpy-0.1.1.dev115/tests/unit/config/build_test.cpp +1012 -0
  317. terraingenpy-0.1.1.dev115/tests/unit/config/config_test.cpp +117 -0
  318. terraingenpy-0.1.1.dev115/tests/unit/config/configs.h +298 -0
  319. terraingenpy-0.1.1.dev115/tests/unit/config/feature_lists_test.cpp +160 -0
  320. terraingenpy-0.1.1.dev115/tests/unit/config/generate_terrain_test.cpp +964 -0
  321. terraingenpy-0.1.1.dev115/tests/unit/config/json_io_test.cpp +848 -0
  322. terraingenpy-0.1.1.dev115/tests/unit/config/json_parse_errors_test.cpp +165 -0
  323. terraingenpy-0.1.1.dev115/tests/unit/config/json_read_test.cpp +246 -0
  324. terraingenpy-0.1.1.dev115/tests/unit/config/ranges_test.cpp +168 -0
  325. terraingenpy-0.1.1.dev115/tests/unit/config/report_test.cpp +316 -0
  326. terraingenpy-0.1.1.dev115/tests/unit/config/schema_test.cpp +612 -0
  327. terraingenpy-0.1.1.dev115/tests/unit/config/validate_config_test.cpp +1120 -0
  328. terraingenpy-0.1.1.dev115/tests/unit/config/validate_sources_test.cpp +356 -0
  329. terraingenpy-0.1.1.dev115/tests/unit/config/write_outputs_test.cpp +458 -0
  330. terraingenpy-0.1.1.dev115/tests/unit/examples/example_harness_test.cpp +228 -0
  331. terraingenpy-0.1.1.dev115/tests/unit/layers/CMakeLists.txt +61 -0
  332. terraingenpy-0.1.1.dev115/tests/unit/layers/boulders/boulder_layer_test.cpp +1354 -0
  333. terraingenpy-0.1.1.dev115/tests/unit/layers/boulders/manual_boulder_test.cpp +430 -0
  334. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/crater_layer_test.cpp +310 -0
  335. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/degradation/diffusion_test.cpp +230 -0
  336. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/generation/population_test.cpp +683 -0
  337. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/generation/resolved_limit_test.cpp +100 -0
  338. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/secondaries_test.cpp +603 -0
  339. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/shaping/irregularity_test.cpp +363 -0
  340. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/shaping/slope_test.cpp +304 -0
  341. terraingenpy-0.1.1.dev115/tests/unit/layers/craters/sphere_test.cpp +373 -0
  342. terraingenpy-0.1.1.dev115/tests/unit/layers/dunes_test.cpp +466 -0
  343. terraingenpy-0.1.1.dev115/tests/unit/layers/masked_test.cpp +165 -0
  344. terraingenpy-0.1.1.dev115/tests/unit/layers/pavement_test.cpp +193 -0
  345. terraingenpy-0.1.1.dev115/tests/unit/layers/roughness_estimate_test.cpp +214 -0
  346. terraingenpy-0.1.1.dev115/tests/unit/layers/roughness_test.cpp +171 -0
  347. terraingenpy-0.1.1.dev115/tests/unit/layers/sand_shadow_test.cpp +183 -0
  348. terraingenpy-0.1.1.dev115/tests/unit/layers/source_resolved_test.cpp +205 -0
  349. terraingenpy-0.1.1.dev115/tests/unit/layers/spectral_continuation_test.cpp +360 -0
  350. terraingenpy-0.1.1.dev115/tests/unit/layers/sphere_layers_test.cpp +216 -0
  351. terraingenpy-0.1.1.dev115/tests/unit/layers/strata_test.cpp +243 -0
  352. terraingenpy-0.1.1.dev115/tests/unit/mesh/io/icq_test.cpp +231 -0
  353. terraingenpy-0.1.1.dev115/tests/unit/mesh/mesh_test.cpp +162 -0
  354. terraingenpy-0.1.1.dev115/tests/unit/pipeline/CMakeLists.txt +10 -0
  355. terraingenpy-0.1.1.dev115/tests/unit/pipeline/features_test.cpp +229 -0
  356. terraingenpy-0.1.1.dev115/tests/unit/pipeline/generator_test.cpp +502 -0
  357. terraingenpy-0.1.1.dev115/tests/unit/pipeline/materials_test.cpp +161 -0
  358. terraingenpy-0.1.1.dev115/tests/unit/pipeline/mesh_build_test.cpp +229 -0
  359. terraingenpy-0.1.1.dev115/tests/unit/pipeline/terrain_windows_test.cpp +281 -0
  360. terraingenpy-0.1.1.dev115/tests/unit/pipeline/terrains.h +59 -0
  361. terraingenpy-0.1.1.dev115/tests/unit/raster/resample_test.cpp +383 -0
  362. terraingenpy-0.1.1.dev115/tests/unit/sources/CMakeLists.txt +14 -0
  363. terraingenpy-0.1.1.dev115/tests/unit/sources/diamond_square_test.cpp +437 -0
  364. terraingenpy-0.1.1.dev115/tests/unit/sources/flat_source_test.cpp +63 -0
  365. terraingenpy-0.1.1.dev115/tests/unit/sources/geotiff_source_test.cpp +407 -0
  366. terraingenpy-0.1.1.dev115/tests/unit/sources/raster_source_test.cpp +265 -0
  367. terraingenpy-0.1.1.dev115/tests/unit/sources/source_chain_test.cpp +204 -0
  368. terraingenpy-0.1.1.dev115/tests/unit/sources/synthetic_source_test.cpp +148 -0
  369. terraingenpy-0.1.1.dev115/tests/unit/sources/upsampling_test.cpp +235 -0
  370. terraingenpy-0.1.1.dev115/tests/unit/util/fft_test.cpp +85 -0
  371. terraingenpy-0.1.1.dev115/tests/unit/util/surface_test.cpp +681 -0
  372. terraingenpy-0.1.1.dev95/.github/workflows/ci.yml +0 -513
  373. terraingenpy-0.1.1.dev95/CHANGELOG.md +0 -94
  374. terraingenpy-0.1.1.dev95/CMakeLists.txt +0 -150
  375. terraingenpy-0.1.1.dev95/PKG-INFO +0 -250
  376. terraingenpy-0.1.1.dev95/README.md +0 -194
  377. terraingenpy-0.1.1.dev95/docs/scripts/generate_schema.py +0 -419
  378. terraingenpy-0.1.1.dev95/examples/README.md +0 -79
  379. terraingenpy-0.1.1.dev95/examples/config/ages/example_ages_fresh.json +0 -63
  380. terraingenpy-0.1.1.dev95/examples/config/ages/example_ages_freshness.json +0 -71
  381. terraingenpy-0.1.1.dev95/examples/config/ages/example_ages_steady_state.json +0 -67
  382. terraingenpy-0.1.1.dev95/examples/config/ages/example_ages_uniform.json +0 -64
  383. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_blast_zone.json +0 -101
  384. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_crater_rays.json +0 -91
  385. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_fresh_crater.json +0 -145
  386. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_moon_site.json +0 -105
  387. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_new_crater.json +0 -133
  388. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_oblique_rays.json +0 -105
  389. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_rgb.json +0 -61
  390. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_rocks_and_slopes.json +0 -79
  391. terraingenpy-0.1.1.dev95/examples/config/albedo/example_albedo_synthetic.json +0 -50
  392. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_buried.json +0 -63
  393. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_ejecta.json +0 -63
  394. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_exposure.json +0 -51
  395. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_fragments.json +0 -71
  396. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_layer.json +0 -73
  397. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_manual.json +0 -76
  398. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_max_slope.json +0 -47
  399. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_models.json +0 -58
  400. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_patches.json +0 -50
  401. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_rock_abundance.json +0 -68
  402. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_rolling.json +0 -48
  403. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_scene.json +0 -67
  404. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_shapes.json +0 -64
  405. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_slope_map.json +0 -56
  406. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_sp8023.json +0 -46
  407. terraingenpy-0.1.1.dev95/examples/config/boulders/example_boulders_thomas_clusters.json +0 -53
  408. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_catalog_and_map.json +0 -70
  409. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_datum.json +0 -58
  410. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_degradation_diffusion.json +0 -61
  411. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_degradation_none.json +0 -57
  412. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_interior_replacement.json +0 -62
  413. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_irregular.json +0 -66
  414. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_manual.json +0 -66
  415. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_manual_depth.json +0 -62
  416. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_max_craters.json +0 -64
  417. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_profile_complex.json +0 -70
  418. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -57
  419. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -63
  420. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_secondaries.json +0 -43
  421. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_secondary_rays.json +0 -71
  422. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_simple.json +0 -63
  423. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_slopes.json +0 -43
  424. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_smoothed_rims.json +0 -59
  425. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_spacing.json +0 -67
  426. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_texture.json +0 -65
  427. terraingenpy-0.1.1.dev95/examples/config/craters/example_craters_wall_marks.json +0 -59
  428. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -46
  429. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -57
  430. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -65
  431. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_power_law.json +0 -47
  432. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_tabulated.json +0 -63
  433. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -45
  434. terraingenpy-0.1.1.dev95/examples/config/distributions/example_distributions_viper.json +0 -45
  435. terraingenpy-0.1.1.dev95/examples/config/layers/example_layers_regions.json +0 -118
  436. terraingenpy-0.1.1.dev95/examples/config/layers/example_layers_roughness.json +0 -34
  437. terraingenpy-0.1.1.dev95/examples/config/layers/example_layers_scale_and_clamp.json +0 -37
  438. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -48
  439. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_bedforms.json +0 -53
  440. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_craters.json +0 -60
  441. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_dunes.json +0 -71
  442. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_exposure.json +0 -62
  443. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_pavement.json +0 -72
  444. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_sand_fill.json +0 -68
  445. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_sand_shadows.json +0 -65
  446. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_strata.json +0 -65
  447. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mars_ventifacts.json +0 -67
  448. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_mercury_site.json +0 -52
  449. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_moon_body_mesh.json +0 -57
  450. terraingenpy-0.1.1.dev95/examples/config/planets/example_planets_moon_site.json +0 -77
  451. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_billow.json +0 -28
  452. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_cellular.json +0 -28
  453. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_domain_warp.json +0 -29
  454. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_fbm.json +0 -27
  455. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_hierarchy.json +0 -53
  456. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_layered.json +0 -43
  457. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_ridged.json +0 -28
  458. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_roughness.json +0 -28
  459. terraingenpy-0.1.1.dev95/examples/config/terrain/example_terrain_voronoi.json +0 -35
  460. terraingenpy-0.1.1.dev95/examples/cpp/ages/example_ages_models.cpp +0 -164
  461. terraingenpy-0.1.1.dev95/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -109
  462. terraingenpy-0.1.1.dev95/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -128
  463. terraingenpy-0.1.1.dev95/examples/cpp/boulders/example_boulders_layer.cpp +0 -111
  464. terraingenpy-0.1.1.dev95/examples/cpp/boulders/example_boulders_manual.cpp +0 -165
  465. terraingenpy-0.1.1.dev95/examples/cpp/common/example.cpp +0 -293
  466. terraingenpy-0.1.1.dev95/examples/cpp/config/example_config_load.cpp +0 -66
  467. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_degradation.cpp +0 -137
  468. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_manual.cpp +0 -107
  469. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_manual_depth.cpp +0 -118
  470. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_profiles.cpp +0 -159
  471. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_secondaries.cpp +0 -112
  472. terraingenpy-0.1.1.dev95/examples/cpp/craters/example_craters_simple.cpp +0 -98
  473. terraingenpy-0.1.1.dev95/examples/cpp/layers/example_layers_custom.cpp +0 -167
  474. terraingenpy-0.1.1.dev95/examples/cpp/layers/example_layers_regions.cpp +0 -119
  475. terraingenpy-0.1.1.dev95/examples/cpp/planets/example_planets_moon.cpp +0 -145
  476. terraingenpy-0.1.1.dev95/examples/cpp/sources/example_sources_raster_detail.cpp +0 -129
  477. terraingenpy-0.1.1.dev95/examples/cpp/terrain/example_terrain_fbm.cpp +0 -75
  478. terraingenpy-0.1.1.dev95/examples/cpp/terrain/example_terrain_layered.cpp +0 -95
  479. terraingenpy-0.1.1.dev95/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -189
  480. terraingenpy-0.1.1.dev95/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -155
  481. terraingenpy-0.1.1.dev95/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -162
  482. terraingenpy-0.1.1.dev95/examples/python/_harness.py +0 -233
  483. terraingenpy-0.1.1.dev95/examples/python/ages/example_ages_models.py +0 -94
  484. terraingenpy-0.1.1.dev95/examples/python/albedo/example_albedo_crater_rays.py +0 -89
  485. terraingenpy-0.1.1.dev95/examples/python/albedo/example_albedo_moon_site.py +0 -97
  486. terraingenpy-0.1.1.dev95/examples/python/albedo/example_albedo_options.py +0 -151
  487. terraingenpy-0.1.1.dev95/examples/python/boulders/example_boulders_exposure.py +0 -78
  488. terraingenpy-0.1.1.dev95/examples/python/boulders/example_boulders_layer.py +0 -97
  489. terraingenpy-0.1.1.dev95/examples/python/boulders/example_boulders_manual.py +0 -121
  490. terraingenpy-0.1.1.dev95/examples/python/boulders/example_boulders_positioning.py +0 -100
  491. terraingenpy-0.1.1.dev95/examples/python/boulders/example_boulders_size_models.py +0 -88
  492. terraingenpy-0.1.1.dev95/examples/python/config/example_config_load.py +0 -65
  493. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_age_sweep.py +0 -85
  494. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_apply_options.py +0 -94
  495. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_degradation.py +0 -89
  496. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_irregularity.py +0 -95
  497. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_manual.py +0 -78
  498. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_manual_depth.py +0 -100
  499. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_positioning.py +0 -96
  500. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_profiles.py +0 -133
  501. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_rim_smoothing.py +0 -78
  502. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_secondaries.py +0 -89
  503. terraingenpy-0.1.1.dev95/examples/python/craters/example_craters_simple.py +0 -73
  504. terraingenpy-0.1.1.dev95/examples/python/distributions/example_distributions_custom.py +0 -85
  505. terraingenpy-0.1.1.dev95/examples/python/layers/example_layers_custom.py +0 -147
  506. terraingenpy-0.1.1.dev95/examples/python/layers/example_layers_regions.py +0 -97
  507. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_body_mesh.py +0 -95
  508. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_mars.py +0 -82
  509. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_mars_dunes.py +0 -63
  510. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_mars_exposure.py +0 -103
  511. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_mercury.py +0 -83
  512. terraingenpy-0.1.1.dev95/examples/python/planets/example_planets_moon_site.py +0 -102
  513. terraingenpy-0.1.1.dev95/examples/python/sources/example_sources_chain.py +0 -80
  514. terraingenpy-0.1.1.dev95/examples/python/sources/example_sources_raster_detail.py +0 -127
  515. terraingenpy-0.1.1.dev95/examples/python/terrain/example_terrain_fbm.py +0 -60
  516. terraingenpy-0.1.1.dev95/examples/python/terrain/example_terrain_fractal_types.py +0 -61
  517. terraingenpy-0.1.1.dev95/examples/python/terrain/example_terrain_hurst_sweep.py +0 -62
  518. terraingenpy-0.1.1.dev95/examples/python/terrain/example_terrain_layered.py +0 -73
  519. terraingenpy-0.1.1.dev95/examples/python/tiles/example_tiles_body_pyramid.py +0 -108
  520. terraingenpy-0.1.1.dev95/examples/python/tiles/example_tiles_point_queries.py +0 -90
  521. terraingenpy-0.1.1.dev95/examples/python/tiles/example_tiles_quadtree.py +0 -97
  522. terraingenpy-0.1.1.dev95/examples/python/tiles/example_tiles_rover_contacts.py +0 -123
  523. terraingenpy-0.1.1.dev95/terraingen/albedo/bands.cpp +0 -66
  524. terraingenpy-0.1.1.dev95/terraingen/app/cli.cpp +0 -347
  525. terraingenpy-0.1.1.dev95/terraingen/app/gui/config_editor.cpp +0 -917
  526. terraingenpy-0.1.1.dev95/terraingen/app/gui/config_editor.h +0 -128
  527. terraingenpy-0.1.1.dev95/terraingen/app/gui/gui_app.cpp +0 -499
  528. terraingenpy-0.1.1.dev95/terraingen/config/CMakeLists.txt +0 -26
  529. terraingenpy-0.1.1.dev95/terraingen/config/build.cpp +0 -880
  530. terraingenpy-0.1.1.dev95/terraingen/config/build.h +0 -157
  531. terraingenpy-0.1.1.dev95/terraingen/config/config.cpp +0 -93
  532. terraingenpy-0.1.1.dev95/terraingen/config/config.h +0 -1372
  533. terraingenpy-0.1.1.dev95/terraingen/config/fields/boulders.h +0 -575
  534. terraingenpy-0.1.1.dev95/terraingen/config/fields/common.h +0 -301
  535. terraingenpy-0.1.1.dev95/terraingen/config/fields/craters.h +0 -447
  536. terraingenpy-0.1.1.dev95/terraingen/config/fields/enums.h +0 -419
  537. terraingenpy-0.1.1.dev95/terraingen/config/fields/fields.h +0 -46
  538. terraingenpy-0.1.1.dev95/terraingen/config/fields/json_io.h +0 -380
  539. terraingenpy-0.1.1.dev95/terraingen/config/fields/layers.h +0 -562
  540. terraingenpy-0.1.1.dev95/terraingen/config/fields/maps.h +0 -62
  541. terraingenpy-0.1.1.dev95/terraingen/config/fields/outputs.h +0 -233
  542. terraingenpy-0.1.1.dev95/terraingen/config/fields/ranges.h +0 -120
  543. terraingenpy-0.1.1.dev95/terraingen/config/fields/sources.h +0 -139
  544. terraingenpy-0.1.1.dev95/terraingen/config/generate.cpp +0 -541
  545. terraingenpy-0.1.1.dev95/terraingen/config/generate.h +0 -105
  546. terraingenpy-0.1.1.dev95/terraingen/config/hierarchy.cpp +0 -293
  547. terraingenpy-0.1.1.dev95/terraingen/config/hierarchy.h +0 -61
  548. terraingenpy-0.1.1.dev95/terraingen/config/json.cpp +0 -180
  549. terraingenpy-0.1.1.dev95/terraingen/config/json.h +0 -85
  550. terraingenpy-0.1.1.dev95/terraingen/config/ranges.cpp +0 -89
  551. terraingenpy-0.1.1.dev95/terraingen/config/schema.cpp +0 -242
  552. terraingenpy-0.1.1.dev95/terraingen/config/validate.cpp +0 -859
  553. terraingenpy-0.1.1.dev95/terraingen/config/validate.h +0 -52
  554. terraingenpy-0.1.1.dev95/terraingen/layers/CMakeLists.txt +0 -79
  555. terraingenpy-0.1.1.dev95/terraingen/layers/bedforms.cpp +0 -198
  556. terraingenpy-0.1.1.dev95/terraingen/layers/bedforms.h +0 -118
  557. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/abundance.cpp +0 -381
  558. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_abundance.cpp +0 -176
  559. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_abundance.h +0 -82
  560. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_layer.cpp +0 -989
  561. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_layer.h +0 -393
  562. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_options.cpp +0 -298
  563. terraingenpy-0.1.1.dev95/terraingen/layers/boulders/boulder_options.h +0 -521
  564. terraingenpy-0.1.1.dev95/terraingen/layers/craters/crater_layer.cpp +0 -212
  565. terraingenpy-0.1.1.dev95/terraingen/layers/craters/crater_layer.h +0 -141
  566. terraingenpy-0.1.1.dev95/terraingen/layers/craters/degradation/diffusion.cpp +0 -329
  567. terraingenpy-0.1.1.dev95/terraingen/layers/craters/generation/resolved_limit.cpp +0 -45
  568. terraingenpy-0.1.1.dev95/terraingen/layers/craters/generation/resolved_limit.h +0 -31
  569. terraingenpy-0.1.1.dev95/terraingen/layers/craters/secondaries.cpp +0 -396
  570. terraingenpy-0.1.1.dev95/terraingen/layers/craters/secondaries.h +0 -84
  571. terraingenpy-0.1.1.dev95/terraingen/layers/craters/secondary_model.cpp +0 -256
  572. terraingenpy-0.1.1.dev95/terraingen/layers/craters/secondary_model.h +0 -243
  573. terraingenpy-0.1.1.dev95/terraingen/layers/craters/shaping/apply.cpp +0 -1173
  574. terraingenpy-0.1.1.dev95/terraingen/layers/craters/shaping/attributes.cpp +0 -22
  575. terraingenpy-0.1.1.dev95/terraingen/layers/craters/shaping/datum.cpp +0 -94
  576. terraingenpy-0.1.1.dev95/terraingen/layers/craters/shaping/explicit_state.cpp +0 -143
  577. terraingenpy-0.1.1.dev95/terraingen/layers/detail.cpp +0 -31
  578. terraingenpy-0.1.1.dev95/terraingen/layers/detail.h +0 -32
  579. terraingenpy-0.1.1.dev95/terraingen/layers/dunes.cpp +0 -633
  580. terraingenpy-0.1.1.dev95/terraingen/layers/dunes.h +0 -264
  581. terraingenpy-0.1.1.dev95/terraingen/layers/midpoint_displacement.cpp +0 -368
  582. terraingenpy-0.1.1.dev95/terraingen/layers/midpoint_displacement.h +0 -150
  583. terraingenpy-0.1.1.dev95/terraingen/layers/noise_relief.cpp +0 -37
  584. terraingenpy-0.1.1.dev95/terraingen/layers/noise_relief.h +0 -48
  585. terraingenpy-0.1.1.dev95/terraingen/layers/region.cpp +0 -240
  586. terraingenpy-0.1.1.dev95/terraingen/layers/region.h +0 -117
  587. terraingenpy-0.1.1.dev95/terraingen/layers/roughness.cpp +0 -194
  588. terraingenpy-0.1.1.dev95/terraingen/layers/transforms.cpp +0 -55
  589. terraingenpy-0.1.1.dev95/terraingen/mesh/io/gltf.cpp +0 -298
  590. terraingenpy-0.1.1.dev95/terraingen/mesh/io/obj.cpp +0 -111
  591. terraingenpy-0.1.1.dev95/terraingen/mesh/io/stl.cpp +0 -135
  592. terraingenpy-0.1.1.dev95/terraingen/mesh/shape_model.cpp +0 -182
  593. terraingenpy-0.1.1.dev95/terraingen/noise/validate.cpp +0 -38
  594. terraingenpy-0.1.1.dev95/terraingen/pipeline/CMakeLists.txt +0 -15
  595. terraingenpy-0.1.1.dev95/terraingen/pipeline/body_mesh.cpp +0 -115
  596. terraingenpy-0.1.1.dev95/terraingen/pipeline/body_mesh.h +0 -37
  597. terraingenpy-0.1.1.dev95/terraingen/pipeline/features.cpp +0 -19
  598. terraingenpy-0.1.1.dev95/terraingen/pipeline/features.h +0 -22
  599. terraingenpy-0.1.1.dev95/terraingen/pipeline/height_mesh.cpp +0 -133
  600. terraingenpy-0.1.1.dev95/terraingen/pipeline/height_mesh.h +0 -35
  601. terraingenpy-0.1.1.dev95/terraingen/pipeline/materials.cpp +0 -123
  602. terraingenpy-0.1.1.dev95/terraingen/pipeline/materials.h +0 -56
  603. terraingenpy-0.1.1.dev95/terraingen/pipeline/terrain.cpp +0 -200
  604. terraingenpy-0.1.1.dev95/terraingen/pipeline/terrain.h +0 -146
  605. terraingenpy-0.1.1.dev95/terraingen/pipeline/tiles.cpp +0 -187
  606. terraingenpy-0.1.1.dev95/terraingen/pipeline/tiles.h +0 -166
  607. terraingenpy-0.1.1.dev95/terraingen/python/CMakeLists.txt +0 -61
  608. terraingenpy-0.1.1.dev95/terraingen/python/src/albedo.cpp +0 -472
  609. terraingenpy-0.1.1.dev95/terraingen/python/src/arrays.h +0 -70
  610. terraingenpy-0.1.1.dev95/terraingen/python/src/bindings.h +0 -25
  611. terraingenpy-0.1.1.dev95/terraingen/python/src/boulders.cpp +0 -447
  612. terraingenpy-0.1.1.dev95/terraingen/python/src/craters.cpp +0 -546
  613. terraingenpy-0.1.1.dev95/terraingen/python/src/distribution.cpp +0 -378
  614. terraingenpy-0.1.1.dev95/terraingen/python/src/gpu.cpp +0 -46
  615. terraingenpy-0.1.1.dev95/terraingen/python/src/layers.cpp +0 -473
  616. terraingenpy-0.1.1.dev95/terraingen/python/src/materials.cpp +0 -106
  617. terraingenpy-0.1.1.dev95/terraingen/python/src/mesh.cpp +0 -238
  618. terraingenpy-0.1.1.dev95/terraingen/python/src/module.cpp +0 -25
  619. terraingenpy-0.1.1.dev95/terraingen/python/src/noise.cpp +0 -370
  620. terraingenpy-0.1.1.dev95/terraingen/python/src/objects.h +0 -121
  621. terraingenpy-0.1.1.dev95/terraingen/python/src/options.h +0 -284
  622. terraingenpy-0.1.1.dev95/terraingen/python/src/pipeline.cpp +0 -541
  623. terraingenpy-0.1.1.dev95/terraingen/python/src/random.cpp +0 -138
  624. terraingenpy-0.1.1.dev95/terraingen/python/src/raster.cpp +0 -289
  625. terraingenpy-0.1.1.dev95/terraingen/python/src/sources.cpp +0 -253
  626. terraingenpy-0.1.1.dev95/terraingen/python/src/util.cpp +0 -243
  627. terraingenpy-0.1.1.dev95/terraingen/python/terraingen/render.py +0 -237
  628. terraingenpy-0.1.1.dev95/terraingen/random/streams.h +0 -145
  629. terraingenpy-0.1.1.dev95/terraingen/raster/CMakeLists.txt +0 -19
  630. terraingenpy-0.1.1.dev95/terraingen/raster/resample.cpp +0 -168
  631. terraingenpy-0.1.1.dev95/terraingen/raster/resample.h +0 -106
  632. terraingenpy-0.1.1.dev95/terraingen/sources/CMakeLists.txt +0 -13
  633. terraingenpy-0.1.1.dev95/terraingen/sources/field.cpp +0 -125
  634. terraingenpy-0.1.1.dev95/terraingen/sources/field.h +0 -140
  635. terraingenpy-0.1.1.dev95/terraingen/sources/flat_source.cpp +0 -30
  636. terraingenpy-0.1.1.dev95/terraingen/sources/flat_source.h +0 -56
  637. terraingenpy-0.1.1.dev95/terraingen/sources/geotiff_source.cpp +0 -111
  638. terraingenpy-0.1.1.dev95/terraingen/sources/geotiff_source.h +0 -114
  639. terraingenpy-0.1.1.dev95/terraingen/sources/raster_source.cpp +0 -214
  640. terraingenpy-0.1.1.dev95/terraingen/sources/raster_source.h +0 -181
  641. terraingenpy-0.1.1.dev95/terraingen/sources/source.h +0 -56
  642. terraingenpy-0.1.1.dev95/terraingen/sources/source_chain.cpp +0 -63
  643. terraingenpy-0.1.1.dev95/terraingen/sources/source_chain.h +0 -57
  644. terraingenpy-0.1.1.dev95/terraingen/sources/synthetic_terrain.cpp +0 -58
  645. terraingenpy-0.1.1.dev95/terraingen/sources/synthetic_terrain.h +0 -46
  646. terraingenpy-0.1.1.dev95/terraingen/terraingen.h +0 -137
  647. terraingenpy-0.1.1.dev95/terraingen/util/fft.cpp +0 -49
  648. terraingenpy-0.1.1.dev95/terraingen/util/fft.h +0 -16
  649. terraingenpy-0.1.1.dev95/tests/benchmark/CMakeLists.txt +0 -30
  650. terraingenpy-0.1.1.dev95/tests/benchmark/bench_grids.cpp +0 -112
  651. terraingenpy-0.1.1.dev95/tests/benchmark/bench_point_queries.cpp +0 -113
  652. terraingenpy-0.1.1.dev95/tests/benchmark/bench_python_subclasses.py +0 -144
  653. terraingenpy-0.1.1.dev95/tests/benchmark/fixtures.h +0 -43
  654. terraingenpy-0.1.1.dev95/tests/python/conftest.py +0 -221
  655. terraingenpy-0.1.1.dev95/tests/python/test_albedo.py +0 -305
  656. terraingenpy-0.1.1.dev95/tests/python/test_boulders.py +0 -364
  657. terraingenpy-0.1.1.dev95/tests/python/test_config.py +0 -208
  658. terraingenpy-0.1.1.dev95/tests/python/test_crater_models.py +0 -291
  659. terraingenpy-0.1.1.dev95/tests/python/test_craters.py +0 -539
  660. terraingenpy-0.1.1.dev95/tests/python/test_examples_harness.py +0 -150
  661. terraingenpy-0.1.1.dev95/tests/python/test_gpu.py +0 -66
  662. terraingenpy-0.1.1.dev95/tests/python/test_layers.py +0 -474
  663. terraingenpy-0.1.1.dev95/tests/python/test_meshes.py +0 -205
  664. terraingenpy-0.1.1.dev95/tests/python/test_noise.py +0 -250
  665. terraingenpy-0.1.1.dev95/tests/python/test_pipeline.py +0 -261
  666. terraingenpy-0.1.1.dev95/tests/python/test_raster.py +0 -249
  667. terraingenpy-0.1.1.dev95/tests/python/test_render.py +0 -146
  668. terraingenpy-0.1.1.dev95/tests/python/test_sources.py +0 -239
  669. terraingenpy-0.1.1.dev95/tests/python/test_tiles.py +0 -107
  670. terraingenpy-0.1.1.dev95/tests/python/test_util.py +0 -211
  671. terraingenpy-0.1.1.dev95/tests/unit/albedo/albedo_test.cpp +0 -425
  672. terraingenpy-0.1.1.dev95/tests/unit/albedo/blast_zones_test.cpp +0 -121
  673. terraingenpy-0.1.1.dev95/tests/unit/albedo/crater_albedo_test.cpp +0 -836
  674. terraingenpy-0.1.1.dev95/tests/unit/albedo/rock_albedo_test.cpp +0 -159
  675. terraingenpy-0.1.1.dev95/tests/unit/albedo/slope_albedo_test.cpp +0 -120
  676. terraingenpy-0.1.1.dev95/tests/unit/app/cli_test.cpp +0 -276
  677. terraingenpy-0.1.1.dev95/tests/unit/app/gui/config_editor_test.cpp +0 -186
  678. terraingenpy-0.1.1.dev95/tests/unit/app/gui/gui_app_test.cpp +0 -175
  679. terraingenpy-0.1.1.dev95/tests/unit/config/CMakeLists.txt +0 -21
  680. terraingenpy-0.1.1.dev95/tests/unit/config/angles_test.cpp +0 -171
  681. terraingenpy-0.1.1.dev95/tests/unit/config/build_test.cpp +0 -886
  682. terraingenpy-0.1.1.dev95/tests/unit/config/config_test.cpp +0 -60
  683. terraingenpy-0.1.1.dev95/tests/unit/config/configs.h +0 -262
  684. terraingenpy-0.1.1.dev95/tests/unit/config/feature_lists_test.cpp +0 -159
  685. terraingenpy-0.1.1.dev95/tests/unit/config/generate_terrain_test.cpp +0 -742
  686. terraingenpy-0.1.1.dev95/tests/unit/config/hierarchy_test.cpp +0 -219
  687. terraingenpy-0.1.1.dev95/tests/unit/config/json_io_test.cpp +0 -729
  688. terraingenpy-0.1.1.dev95/tests/unit/config/json_parse_errors_test.cpp +0 -139
  689. terraingenpy-0.1.1.dev95/tests/unit/config/json_read_test.cpp +0 -152
  690. terraingenpy-0.1.1.dev95/tests/unit/config/ranges_test.cpp +0 -168
  691. terraingenpy-0.1.1.dev95/tests/unit/config/schema_test.cpp +0 -559
  692. terraingenpy-0.1.1.dev95/tests/unit/config/validate_config_test.cpp +0 -831
  693. terraingenpy-0.1.1.dev95/tests/unit/config/validate_sources_test.cpp +0 -302
  694. terraingenpy-0.1.1.dev95/tests/unit/config/write_outputs_test.cpp +0 -350
  695. terraingenpy-0.1.1.dev95/tests/unit/examples/example_harness_test.cpp +0 -227
  696. terraingenpy-0.1.1.dev95/tests/unit/layers/CMakeLists.txt +0 -60
  697. terraingenpy-0.1.1.dev95/tests/unit/layers/boulders/boulder_layer_test.cpp +0 -1336
  698. terraingenpy-0.1.1.dev95/tests/unit/layers/boulders/manual_boulder_test.cpp +0 -351
  699. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/crater_layer_test.cpp +0 -277
  700. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -227
  701. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/generation/population_test.cpp +0 -682
  702. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/generation/resolved_limit_test.cpp +0 -97
  703. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/secondaries_test.cpp +0 -534
  704. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -363
  705. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/shaping/slope_test.cpp +0 -304
  706. terraingenpy-0.1.1.dev95/tests/unit/layers/craters/sphere_test.cpp +0 -373
  707. terraingenpy-0.1.1.dev95/tests/unit/layers/detail_test.cpp +0 -46
  708. terraingenpy-0.1.1.dev95/tests/unit/layers/dunes_test.cpp +0 -464
  709. terraingenpy-0.1.1.dev95/tests/unit/layers/midpoint_displacement_test.cpp +0 -348
  710. terraingenpy-0.1.1.dev95/tests/unit/layers/pavement_test.cpp +0 -192
  711. terraingenpy-0.1.1.dev95/tests/unit/layers/region_test.cpp +0 -165
  712. terraingenpy-0.1.1.dev95/tests/unit/layers/roughness_test.cpp +0 -171
  713. terraingenpy-0.1.1.dev95/tests/unit/layers/sand_shadow_test.cpp +0 -182
  714. terraingenpy-0.1.1.dev95/tests/unit/layers/sphere_layers_test.cpp +0 -216
  715. terraingenpy-0.1.1.dev95/tests/unit/layers/strata_test.cpp +0 -241
  716. terraingenpy-0.1.1.dev95/tests/unit/mesh/io/icq_test.cpp +0 -230
  717. terraingenpy-0.1.1.dev95/tests/unit/mesh/mesh_test.cpp +0 -160
  718. terraingenpy-0.1.1.dev95/tests/unit/pipeline/CMakeLists.txt +0 -12
  719. terraingenpy-0.1.1.dev95/tests/unit/pipeline/features_test.cpp +0 -231
  720. terraingenpy-0.1.1.dev95/tests/unit/pipeline/height_mesh_test.cpp +0 -90
  721. terraingenpy-0.1.1.dev95/tests/unit/pipeline/materials_test.cpp +0 -161
  722. terraingenpy-0.1.1.dev95/tests/unit/pipeline/terrain_test.cpp +0 -417
  723. terraingenpy-0.1.1.dev95/tests/unit/pipeline/terrain_tiles_test.cpp +0 -336
  724. terraingenpy-0.1.1.dev95/tests/unit/pipeline/terrains.h +0 -59
  725. terraingenpy-0.1.1.dev95/tests/unit/pipeline/tile_cache_test.cpp +0 -43
  726. terraingenpy-0.1.1.dev95/tests/unit/pipeline/tiling_test.cpp +0 -85
  727. terraingenpy-0.1.1.dev95/tests/unit/raster/resample_test.cpp +0 -280
  728. terraingenpy-0.1.1.dev95/tests/unit/sources/CMakeLists.txt +0 -11
  729. terraingenpy-0.1.1.dev95/tests/unit/sources/flat_source_test.cpp +0 -62
  730. terraingenpy-0.1.1.dev95/tests/unit/sources/geotiff_source_test.cpp +0 -399
  731. terraingenpy-0.1.1.dev95/tests/unit/sources/raster_source_test.cpp +0 -167
  732. terraingenpy-0.1.1.dev95/tests/unit/sources/source_chain_test.cpp +0 -158
  733. terraingenpy-0.1.1.dev95/tests/unit/util/fft_test.cpp +0 -51
  734. terraingenpy-0.1.1.dev95/tests/unit/util/surface_test.cpp +0 -679
  735. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.clang-format +0 -0
  736. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.clang-tidy +0 -0
  737. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.cmake-format.yaml +0 -0
  738. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.dockerignore +0 -0
  739. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.gitattributes +0 -0
  740. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  741. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  742. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  743. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.github/pull_request_template.md +0 -0
  744. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.github/scripts/install-lavapipe-windows.sh +0 -0
  745. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.gitignore +0 -0
  746. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/.pre-commit-config.yaml +0 -0
  747. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/CITATION.cff +0 -0
  748. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/CONTRIBUTING.md +0 -0
  749. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/Dockerfile +0 -0
  750. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/LICENSE +0 -0
  751. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/README.md +0 -0
  752. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/moon_01_diff_4k.jpg +0 -0
  753. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/moon_01_disp_4k.png +0 -0
  754. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
  755. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/moon_01_rough_4k.exr +0 -0
  756. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_ao_2k.png +0 -0
  757. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_arm_2k.png +0 -0
  758. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_diff_2k.png +0 -0
  759. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_disp_2k.png +0 -0
  760. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_nor_dx_2k.exr +0 -0
  761. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_nor_gl_2k.exr +0 -0
  762. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/assets/textures/seaside_rock_rough_2k.exr +0 -0
  763. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/BuildInfo.cmake +0 -0
  764. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/CoverageBadge.cmake +0 -0
  765. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/EmbedFile.cmake +0 -0
  766. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/Kernel.cpp.in +0 -0
  767. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/TerrainGenPackaging.cmake +0 -0
  768. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/TerrainGenSlang.cmake +0 -0
  769. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/TerrainGenTesting.cmake +0 -0
  770. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/terraingenConfig.cmake.in +0 -0
  771. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/benchmark.cmake +0 -0
  772. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/ernie.cmake +0 -0
  773. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/googletest.cmake +0 -0
  774. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/mesh_formats.cmake +0 -0
  775. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/miniz.cmake +0 -0
  776. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/nanobind.cmake +0 -0
  777. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/nvrtc.cmake +0 -0
  778. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/slang.cmake +0 -0
  779. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/volk.cmake +0 -0
  780. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/cmake/third_party/vulkan_headers.cmake +0 -0
  781. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/.gitignore +0 -0
  782. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/Makefile +0 -0
  783. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/README.md +0 -0
  784. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/api/cpp.md +0 -0
  785. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/api/python.md +0 -0
  786. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/concepts/index.md +0 -0
  787. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/css/extra.css +0 -0
  788. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/getting-started/command-line.md +0 -0
  789. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/getting-started/gui.md +0 -0
  790. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/getting-started/index.md +0 -0
  791. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/getting-started/installation.md +0 -0
  792. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/getting-started/quickstart.md +0 -0
  793. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/guides/index.md +0 -0
  794. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/images/hero_mk1_sn101_connecting_ridge.jpg +0 -0
  795. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/images/hero_mk1_sn101_connecting_ridge_split.jpg +0 -0
  796. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/index.md +0 -0
  797. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/overrides/home.html +0 -0
  798. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/overrides/partials/header.html +0 -0
  799. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/requirements.txt +0 -0
  800. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/docs/validation/index.md +0 -0
  801. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/CMakeLists.txt +0 -0
  802. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
  803. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/common/browser.cpp +0 -0
  804. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/common/browser.h +0 -0
  805. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/common/example.h +0 -0
  806. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/common/main.cpp +0 -0
  807. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/common/standalone_main.cpp +0 -0
  808. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
  809. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/__main__.py +0 -0
  810. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/_browser.py +0 -0
  811. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/_common.py +0 -0
  812. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/_images.py +0 -0
  813. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/boulders/example_boulders_shapes.py +0 -0
  814. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/distributions/example_distributions_csfd.py +0 -0
  815. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
  816. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/mkdocs.yml +0 -0
  817. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/pyproject.toml +0 -0
  818. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/CMakeLists.txt +0 -0
  819. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/CMakeLists.txt +0 -0
  820. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/albedo.cpp +0 -0
  821. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/albedo.h +0 -0
  822. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/bands.h +0 -0
  823. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/blast_zones.cpp +0 -0
  824. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/blast_zones.h +0 -0
  825. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/brightness_statistics.cpp +0 -0
  826. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/brightness_statistics.h +0 -0
  827. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/crater_albedo.cpp +0 -0
  828. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/crater_albedo.h +0 -0
  829. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/maturity.cpp +0 -0
  830. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/maturity.h +0 -0
  831. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/photometry.cpp +0 -0
  832. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/photometry.h +0 -0
  833. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/raster_albedo.cpp +0 -0
  834. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/raster_albedo.h +0 -0
  835. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/rock_albedo.cpp +0 -0
  836. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/rock_albedo.h +0 -0
  837. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/slope_albedo.cpp +0 -0
  838. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/slope_albedo.h +0 -0
  839. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/splotches.cpp +0 -0
  840. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/splotches.h +0 -0
  841. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/synthetic.cpp +0 -0
  842. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/albedo/synthetic.h +0 -0
  843. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/CMakeLists.txt +0 -0
  844. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/cli.h +0 -0
  845. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/CMakeLists.txt +0 -0
  846. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/gui_app.h +0 -0
  847. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/run.cpp +0 -0
  848. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/run.h +0 -0
  849. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/run_none.cpp +0 -0
  850. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/terrain_scene.cpp +0 -0
  851. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/terrain_scene.h +0 -0
  852. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/gui/widgets.h +0 -0
  853. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/app/main.cpp +0 -0
  854. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/config/feature_lists.cpp +0 -0
  855. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/config/fields/albedo.h +0 -0
  856. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/config/fields/checks.h +0 -0
  857. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/config/fields/crater_models.h +0 -0
  858. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/config/fields/materials.h +0 -0
  859. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/CMakeLists.txt +0 -0
  860. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/composition.cpp +0 -0
  861. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/composition.h +0 -0
  862. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/equilibrium.cpp +0 -0
  863. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/equilibrium.h +0 -0
  864. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/exponential_chronology.cpp +0 -0
  865. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/exponential_chronology.h +0 -0
  866. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/golombek_rapp.cpp +0 -0
  867. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/golombek_rapp.h +0 -0
  868. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/ivanov.cpp +0 -0
  869. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/ivanov.h +0 -0
  870. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/log_polynomial.cpp +0 -0
  871. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/log_polynomial.h +0 -0
  872. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/minimum.cpp +0 -0
  873. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/minimum.h +0 -0
  874. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/moore.cpp +0 -0
  875. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/moore.h +0 -0
  876. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/neukum.cpp +0 -0
  877. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/neukum.h +0 -0
  878. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/piecewise_power_law.cpp +0 -0
  879. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/piecewise_power_law.h +0 -0
  880. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/piecewise_uniform.cpp +0 -0
  881. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/piecewise_uniform.h +0 -0
  882. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/power_law.cpp +0 -0
  883. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/power_law.h +0 -0
  884. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/production_surface.cpp +0 -0
  885. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/production_surface.h +0 -0
  886. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/size_frequency.cpp +0 -0
  887. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/size_frequency.h +0 -0
  888. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/sp8023.cpp +0 -0
  889. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/sp8023.h +0 -0
  890. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/spliced.cpp +0 -0
  891. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/spliced.h +0 -0
  892. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/summed.cpp +0 -0
  893. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/summed.h +0 -0
  894. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/synthterrain.cpp +0 -0
  895. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/synthterrain.h +0 -0
  896. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/tabulated.cpp +0 -0
  897. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/tabulated.h +0 -0
  898. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/viper.cpp +0 -0
  899. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/distribution/viper.h +0 -0
  900. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/CMakeLists.txt +0 -0
  901. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/backend.cpp +0 -0
  902. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/backend.h +0 -0
  903. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/cuda.cpp +0 -0
  904. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/cuda.h +0 -0
  905. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/device.h +0 -0
  906. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/kernel.cpp +0 -0
  907. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/kernel.h +0 -0
  908. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/kernel.slang +0 -0
  909. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/metal.cpp +0 -0
  910. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/metal.h +0 -0
  911. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/program.h +0 -0
  912. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/vulkan.cpp +0 -0
  913. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/gpu/vulkan.h +0 -0
  914. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/anchored_plane.cpp +0 -0
  915. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/anchored_plane.h +0 -0
  916. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/bisection.h +0 -0
  917. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder.h +0 -0
  918. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_clusters.cpp +0 -0
  919. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_clusters.h +0 -0
  920. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
  921. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_fragments.h +0 -0
  922. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_models.cpp +0 -0
  923. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_models.h +0 -0
  924. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_placer.h +0 -0
  925. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
  926. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/boulder_shape.h +0 -0
  927. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/ejecta_index.cpp +0 -0
  928. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/boulders/ejecta_index.h +0 -0
  929. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/age_model.cpp +0 -0
  930. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/age_model.h +0 -0
  931. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/freshness.cpp +0 -0
  932. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/freshness.h +0 -0
  933. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
  934. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/ages/steady_state.h +0 -0
  935. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/crater.cpp +0 -0
  936. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/crater.h +0 -0
  937. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/crater_placer.cpp +0 -0
  938. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/crater_placer.h +0 -0
  939. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
  940. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
  941. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/diffusion.h +0 -0
  942. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
  943. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
  944. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
  945. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/freshness.h +0 -0
  946. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/degradation/state.h +0 -0
  947. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
  948. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/cell_cache.h +0 -0
  949. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/population.cpp +0 -0
  950. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/population.h +0 -0
  951. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/spacing.cpp +0 -0
  952. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/generation/spacing.h +0 -0
  953. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/complex.cpp +0 -0
  954. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/complex.h +0 -0
  955. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
  956. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
  957. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
  958. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
  959. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/profiles/profile.h +0 -0
  960. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/rays.cpp +0 -0
  961. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/rays.h +0 -0
  962. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/apply.h +0 -0
  963. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
  964. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/apply_options.h +0 -0
  965. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/attributes.h +0 -0
  966. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
  967. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
  968. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/datum.h +0 -0
  969. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/explicit_state.h +0 -0
  970. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
  971. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/irregularity.h +0 -0
  972. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
  973. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/morphometry.h +0 -0
  974. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
  975. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/prepared.h +0 -0
  976. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/slope.cpp +0 -0
  977. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/craters/shaping/slope.h +0 -0
  978. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/density_map.cpp +0 -0
  979. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/density_map.h +0 -0
  980. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/evaluation_cache.h +0 -0
  981. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/exposure.cpp +0 -0
  982. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/exposure.h +0 -0
  983. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/fade.cpp +0 -0
  984. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/fade.h +0 -0
  985. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/ground.cpp +0 -0
  986. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/ground.h +0 -0
  987. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernel.h +0 -0
  988. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/cell.h +0 -0
  989. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/crater_body_datums.slang +0 -0
  990. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/crater_datums.slang +0 -0
  991. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/craters.h +0 -0
  992. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/craters.slang +0 -0
  993. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/noise_relief.h +0 -0
  994. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/kernels/noise_relief.slang +0 -0
  995. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/lattice.h +0 -0
  996. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/layer.cpp +0 -0
  997. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/layer.h +0 -0
  998. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/material.cpp +0 -0
  999. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/material.h +0 -0
  1000. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/pavement.cpp +0 -0
  1001. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/pavement.h +0 -0
  1002. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/roughness.h +0 -0
  1003. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sample_block.cpp +0 -0
  1004. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sample_block.h +0 -0
  1005. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sand_fill.cpp +0 -0
  1006. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sand_fill.h +0 -0
  1007. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sand_shadow.cpp +0 -0
  1008. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/sand_shadow.h +0 -0
  1009. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/strata.cpp +0 -0
  1010. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/strata.h +0 -0
  1011. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/layers/transforms.h +0 -0
  1012. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/CMakeLists.txt +0 -0
  1013. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/io/formats.h +0 -0
  1014. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/io/icq.cpp +0 -0
  1015. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/io/icq.h +0 -0
  1016. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/io/mesh_io.cpp +0 -0
  1017. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/io/mesh_io.h +0 -0
  1018. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/mesh.cpp +0 -0
  1019. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/mesh.h +0 -0
  1020. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/polyhedra.cpp +0 -0
  1021. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/polyhedra.h +0 -0
  1022. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/mesh/shape_model.h +0 -0
  1023. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/CMakeLists.txt +0 -0
  1024. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/fractal.h +0 -0
  1025. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/hash.h +0 -0
  1026. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/lattice.h +0 -0
  1027. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/noise_layers.h +0 -0
  1028. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/perlin.h +0 -0
  1029. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/simplex.h +0 -0
  1030. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/validate.h +0 -0
  1031. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/value.h +0 -0
  1032. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/noise/worley.h +0 -0
  1033. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/src/casters.h +0 -0
  1034. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/src/common.h +0 -0
  1035. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/src/crater_models.cpp +0 -0
  1036. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/src/tables.h +0 -0
  1037. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/src/trampolines.h +0 -0
  1038. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/python/terraingen/__init__.py +0 -0
  1039. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/CMakeLists.txt +0 -0
  1040. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/philox.h +0 -0
  1041. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/samplers.cpp +0 -0
  1042. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/samplers.h +0 -0
  1043. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/stream.cpp +0 -0
  1044. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/stream.h +0 -0
  1045. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/value_distribution.cpp +0 -0
  1046. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/random/value_distribution.h +0 -0
  1047. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/cell_loops.cpp +0 -0
  1048. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/cell_loops.h +0 -0
  1049. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/gaussian_blur.cpp +0 -0
  1050. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/gaussian_blur.h +0 -0
  1051. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geo_transform.h +0 -0
  1052. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/geotiff.cpp +0 -0
  1053. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/geotiff.h +0 -0
  1054. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
  1055. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
  1056. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
  1057. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
  1058. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
  1059. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/geotiff/tiff_format.h +0 -0
  1060. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/grid.cpp +0 -0
  1061. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/grid.h +0 -0
  1062. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/raster.h +0 -0
  1063. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/raster/raster_stats.h +0 -0
  1064. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/CMakeLists.txt +0 -0
  1065. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/arithmetic.h +0 -0
  1066. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/bits.h +0 -0
  1067. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/build_info.cpp.in +0 -0
  1068. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/build_info.h +0 -0
  1069. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/cells.h +0 -0
  1070. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/checks.cpp +0 -0
  1071. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/checks.h +0 -0
  1072. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/cube_faces.h +0 -0
  1073. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/cube_sphere_cells.cpp +0 -0
  1074. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/files.cpp +0 -0
  1075. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/files.h +0 -0
  1076. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/geometry.h +0 -0
  1077. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/log.cpp +0 -0
  1078. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/log.h +0 -0
  1079. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/lru_cache.h +0 -0
  1080. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/overloaded.h +0 -0
  1081. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/parallel.cpp +0 -0
  1082. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/parallel.h +0 -0
  1083. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/planar_cells.cpp +0 -0
  1084. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/portable.h +0 -0
  1085. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/radial_shape.cpp +0 -0
  1086. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/radial_shape.h +0 -0
  1087. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/span.h +0 -0
  1088. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/special_functions.cpp +0 -0
  1089. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/special_functions.h +0 -0
  1090. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/surface.cpp +0 -0
  1091. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/surface.h +0 -0
  1092. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/text.cpp +0 -0
  1093. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/text.h +0 -0
  1094. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/version.cpp +0 -0
  1095. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/terraingen/util/version.h.in +0 -0
  1096. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/CMakeLists.txt +0 -0
  1097. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/benchmark/bench_boulders.cpp +0 -0
  1098. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/benchmark/bench_craters.cpp +0 -0
  1099. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/golden/CMakeLists.txt +0 -0
  1100. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/golden/noise/kernels_test.cpp +0 -0
  1101. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/CMakeLists.txt +0 -0
  1102. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/build_info_stable.cmake +0 -0
  1103. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/examples/CMakeLists.txt +0 -0
  1104. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/package/CMakeLists.txt +0 -0
  1105. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/package/main.cpp +0 -0
  1106. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/integration/package/test_debian_packages.cmake +0 -0
  1107. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/python/CMakeLists.txt +0 -0
  1108. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/python/test_distributions.py +0 -0
  1109. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/python/test_random.py +0 -0
  1110. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/python/test_stubs.py +0 -0
  1111. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/CMakeLists.txt +0 -0
  1112. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/distribution/crater_references_test.cpp +0 -0
  1113. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
  1114. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
  1115. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
  1116. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/layers/craters/population_test.cpp +0 -0
  1117. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/layers/roughness_test.cpp +0 -0
  1118. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/statistical/random/random_test.cpp +0 -0
  1119. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/support/log_capture.h +0 -0
  1120. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/support/lunar_craters.h +0 -0
  1121. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/support/raster_equality.h +0 -0
  1122. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/support/statistics.h +0 -0
  1123. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/support/temp_path.h +0 -0
  1124. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/CMakeLists.txt +0 -0
  1125. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/albedo/CMakeLists.txt +0 -0
  1126. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/albedo/bands_test.cpp +0 -0
  1127. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/albedo/photometry_test.cpp +0 -0
  1128. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/albedo/splotches_test.cpp +0 -0
  1129. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/app/CMakeLists.txt +0 -0
  1130. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/app/gui/CMakeLists.txt +0 -0
  1131. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
  1132. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/config/checks_test.cpp +0 -0
  1133. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/CMakeLists.txt +0 -0
  1134. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/composition_test.cpp +0 -0
  1135. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/equilibrium_test.cpp +0 -0
  1136. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/exponential_chronology_test.cpp +0 -0
  1137. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
  1138. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/ivanov_test.cpp +0 -0
  1139. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
  1140. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/minimum_test.cpp +0 -0
  1141. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/moore_test.cpp +0 -0
  1142. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/neukum_test.cpp +0 -0
  1143. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
  1144. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
  1145. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/power_law_test.cpp +0 -0
  1146. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/production_surface_test.cpp +0 -0
  1147. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/size_frequency_test.cpp +0 -0
  1148. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/sp8023_test.cpp +0 -0
  1149. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/spliced_test.cpp +0 -0
  1150. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/summed_test.cpp +0 -0
  1151. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/synthterrain_test.cpp +0 -0
  1152. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/tabulated_test.cpp +0 -0
  1153. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/distribution/viper_test.cpp +0 -0
  1154. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/examples/CMakeLists.txt +0 -0
  1155. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/examples/example_browser_test.cpp +0 -0
  1156. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/CMakeLists.txt +0 -0
  1157. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/backend_test.cpp +0 -0
  1158. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
  1159. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
  1160. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/noise_test.cpp +0 -0
  1161. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/gpu/vulkan_test.cpp +0 -0
  1162. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/anchored_plane_test.cpp +0 -0
  1163. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/bedforms_test.cpp +0 -0
  1164. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/bisection_test.cpp +0 -0
  1165. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
  1166. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
  1167. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
  1168. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
  1169. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/boulders/ejecta_index_test.cpp +0 -0
  1170. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
  1171. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/ages/freshness_test.cpp +0 -0
  1172. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
  1173. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/crater_test.cpp +0 -0
  1174. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
  1175. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
  1176. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
  1177. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
  1178. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
  1179. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
  1180. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
  1181. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
  1182. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
  1183. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +0 -0
  1184. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
  1185. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/explicit_state_test.cpp +0 -0
  1186. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
  1187. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/density_map_test.cpp +0 -0
  1188. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
  1189. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/exposure_test.cpp +0 -0
  1190. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/fade_test.cpp +0 -0
  1191. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/ground_test.cpp +0 -0
  1192. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/lattice_test.cpp +0 -0
  1193. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/layer_test.cpp +0 -0
  1194. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/noise_relief_test.cpp +0 -0
  1195. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/sample_block_test.cpp +0 -0
  1196. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/sand_fill_test.cpp +0 -0
  1197. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/layers/transforms_test.cpp +0 -0
  1198. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/mesh/CMakeLists.txt +0 -0
  1199. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
  1200. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/mesh/polyhedra_test.cpp +0 -0
  1201. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/mesh/shape_model_test.cpp +0 -0
  1202. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/mesh/support.h +0 -0
  1203. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/CMakeLists.txt +0 -0
  1204. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/fractal_test.cpp +0 -0
  1205. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/hash_test.cpp +0 -0
  1206. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/noise3_test.cpp +0 -0
  1207. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/noise_layers_test.cpp +0 -0
  1208. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/perlin_test.cpp +0 -0
  1209. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/simplex_test.cpp +0 -0
  1210. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/validate_test.cpp +0 -0
  1211. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/value_test.cpp +0 -0
  1212. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/noise/worley_test.cpp +0 -0
  1213. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/random/CMakeLists.txt +0 -0
  1214. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/random/philox_test.cpp +0 -0
  1215. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/random/samplers_test.cpp +0 -0
  1216. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/random/stream_test.cpp +0 -0
  1217. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/random/value_distribution_test.cpp +0 -0
  1218. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/CMakeLists.txt +0 -0
  1219. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/cell_loops_test.cpp +0 -0
  1220. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
  1221. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/gdal_fixtures.h +0 -0
  1222. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
  1223. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/geo_transform_test.cpp +0 -0
  1224. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/geotiff_fixtures.inc +0 -0
  1225. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/geotiff_test.cpp +0 -0
  1226. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/grid_test.cpp +0 -0
  1227. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/raster_stats_test.cpp +0 -0
  1228. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/raster_test.cpp +0 -0
  1229. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/raster/tiff_format_test.cpp +0 -0
  1230. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/sources/field_test.cpp +0 -0
  1231. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
  1232. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/CMakeLists.txt +0 -0
  1233. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/cells_test.cpp +0 -0
  1234. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/checks_test.cpp +0 -0
  1235. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/geometry_test.cpp +0 -0
  1236. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/log_test.cpp +0 -0
  1237. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/lru_cache_test.cpp +0 -0
  1238. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/overloaded_test.cpp +0 -0
  1239. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/parallel_test.cpp +0 -0
  1240. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/radial_shape_test.cpp +0 -0
  1241. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/span_test.cpp +0 -0
  1242. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/special_functions_test.cpp +0 -0
  1243. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/text_test.cpp +0 -0
  1244. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/tests/unit/util/version_test.cpp +0 -0
  1245. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/README.md +0 -0
  1246. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/cgltf/LICENSE +0 -0
  1247. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/cgltf/cgltf.h +0 -0
  1248. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/cgltf/cgltf_write.h +0 -0
  1249. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/miniz/LICENSE +0 -0
  1250. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/miniz/miniz.c +0 -0
  1251. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/miniz/miniz.h +0 -0
  1252. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/nlohmann/LICENSE.MIT +0 -0
  1253. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/nlohmann/json.hpp +0 -0
  1254. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/tinyobjloader/LICENSE +0 -0
  1255. {terraingenpy-0.1.1.dev95 → terraingenpy-0.1.1.dev115}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
@@ -0,0 +1,514 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ["v*"]
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ # The version's pre-release suffix: .devN on main (N commits since the last release tag), none on
19
+ # release tags (which must match CMakeLists.txt) or pull requests.
20
+ version:
21
+ runs-on: ubuntu-24.04
22
+ timeout-minutes: 5
23
+ outputs:
24
+ version: ${{ steps.version.outputs.version }}
25
+ suffix: ${{ steps.version.outputs.suffix }}
26
+ steps:
27
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
28
+ with:
29
+ fetch-depth: 0
30
+ - id: version
31
+ run: |
32
+ project=$(sed -nE 's/^set\(TERRAINGEN_FULL_VERSION "([0-9]+\.[0-9]+\.[0-9]+)"\)$/\1/p' CMakeLists.txt)
33
+ suffix=""
34
+ if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
35
+ if [[ "${GITHUB_REF_NAME#v}" != "$project" ]]; then
36
+ echo "::error::Tag $GITHUB_REF_NAME does not match CMakeLists.txt's version $project"
37
+ exit 1
38
+ fi
39
+ elif [[ "$GITHUB_EVENT_NAME" == push && "$GITHUB_REF" == refs/heads/main ]]; then
40
+ if last=$(git describe --tags --abbrev=0 --match 'v*' 2>/dev/null); then
41
+ suffix=".dev$(git rev-list --count "$last..HEAD")"
42
+ else
43
+ suffix=".dev$(git rev-list --count HEAD)"
44
+ fi
45
+ fi
46
+ {
47
+ echo "version=$project$suffix"
48
+ echo "suffix=$suffix"
49
+ } >> "$GITHUB_OUTPUT"
50
+ echo "Version $project$suffix"
51
+
52
+ lint:
53
+ runs-on: ubuntu-24.04
54
+ timeout-minutes: 15
55
+ steps:
56
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
57
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
58
+ with:
59
+ python-version: "3.12"
60
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
61
+ with:
62
+ path: ~/.cache/pre-commit
63
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
64
+ - run: python -m pip install pre-commit
65
+ - run: pre-commit run --all-files --show-diff-on-failure
66
+ - name: Lint workflows
67
+ run: docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.12 -color
68
+
69
+ # Build and every test, with the GPU tests on Mesa's lavapipe, the software Vulkan driver, which
70
+ # TerrainGen uses only when TERRAINGEN_DEVICE names it. The runners have no NVIDIA GPU, so the
71
+ # CUDA kernels are compiled to PTX but not run.
72
+ test:
73
+ name: test (${{ matrix.name }})
74
+ runs-on: ${{ matrix.os }}
75
+ timeout-minutes: 60
76
+ strategy:
77
+ fail-fast: false
78
+ matrix:
79
+ include:
80
+ # The oldest supported Ubuntu, compiler and Python.
81
+ - { name: ubuntu-22.04-gcc-11, os: ubuntu-22.04, cc: gcc-11, cxx: g++-11, python: "3.10" }
82
+ - { name: ubuntu-22.04-arm-gcc-11, os: ubuntu-22.04-arm, cc: gcc-11, cxx: g++-11 }
83
+ - { name: ubuntu-24.04-clang-18, os: ubuntu-24.04, cc: clang-18, cxx: clang++-18 }
84
+ - { name: macos-14, os: macos-14 }
85
+ - { name: windows-2022-msvc, os: windows-2022 }
86
+ env:
87
+ CC: ${{ matrix.cc }}
88
+ CXX: ${{ matrix.cxx }}
89
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
90
+ TERRAINGEN_DEVICE: "0"
91
+ steps:
92
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
93
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
94
+ with:
95
+ python-version: ${{ matrix.python || '3.12' }}
96
+ - run: python -m pip install numpy pytest ninja
97
+ # MSVC on the path for the Ninja generator.
98
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
99
+ if: runner.os == 'Windows'
100
+ - uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24
101
+ if: runner.os != 'Windows'
102
+ with:
103
+ key: ${{ matrix.name }}
104
+ max-size: 500M
105
+ - name: Install lavapipe
106
+ if: runner.os == 'Linux'
107
+ run: |
108
+ sudo apt-get update
109
+ sudo apt-get install -y --no-install-recommends mesa-vulkan-drivers libvulkan1
110
+ icd=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
111
+ echo "VK_DRIVER_FILES=$icd" >> "$GITHUB_ENV"
112
+ echo "VK_ICD_FILENAMES=$icd" >> "$GITHUB_ENV"
113
+ - name: Install lavapipe
114
+ if: runner.os == 'Windows'
115
+ shell: bash
116
+ run: .github/scripts/install-lavapipe-windows.sh
117
+ - name: Install lavapipe
118
+ if: runner.os == 'macOS'
119
+ run: |
120
+ brew install mesa vulkan-loader
121
+ prefix=$(brew --prefix)
122
+ icd=$(find "$prefix/share/vulkan/icd.d" -name 'lvp_icd*.json' | head -n1)
123
+ {
124
+ echo "VK_DRIVER_FILES=$icd"
125
+ echo "VK_ICD_FILENAMES=$icd"
126
+ echo "DYLD_FALLBACK_LIBRARY_PATH=$prefix/lib"
127
+ } >> "$GITHUB_ENV"
128
+ - name: Configure
129
+ shell: bash
130
+ run: >
131
+ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DTERRAINGEN_BUILD_BENCHMARKS=OFF
132
+ "-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
133
+ ${{ runner.os != 'Windows' && '-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache' || '' }}
134
+ - name: Build
135
+ run: cmake --build build --parallel 4
136
+ - name: Backends
137
+ shell: bash
138
+ run: build/bin/terraingen backends
139
+ - name: Test
140
+ run: ctest --test-dir build --parallel 4 --output-on-failure --timeout 1200
141
+
142
+ # Line coverage of the library, from the tests on lavapipe; GitHub Pages publishes the report from
143
+ # main (pages job).
144
+ coverage:
145
+ runs-on: ubuntu-24.04
146
+ timeout-minutes: 60
147
+ env:
148
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
149
+ TERRAINGEN_DEVICE: "0"
150
+ steps:
151
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
152
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
153
+ with:
154
+ python-version: "3.12"
155
+ - run: python -m pip install gcovr numpy pytest ninja
156
+ - uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24
157
+ with:
158
+ key: coverage
159
+ max-size: 1G
160
+ - name: Install lavapipe
161
+ run: |
162
+ sudo apt-get update
163
+ sudo apt-get install -y --no-install-recommends mesa-vulkan-drivers libvulkan1
164
+ - name: Configure
165
+ run: >
166
+ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DTERRAINGEN_COVERAGE=ON
167
+ -DTERRAINGEN_BUILD_BENCHMARKS=OFF
168
+ "-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
169
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
170
+ # Everything first: the coverage target builds only the test programs, not the command and
171
+ # examples that the integration tests run.
172
+ - name: Build
173
+ run: cmake --build build --parallel 4
174
+ # The tests four at a time (ctest reads CTEST_PARALLEL_LEVEL), the long examples first.
175
+ - name: Test and report
176
+ env:
177
+ CTEST_PARALLEL_LEVEL: "4"
178
+ run: cmake --build build --target coverage
179
+ - name: Summary
180
+ if: always()
181
+ run: cat build/coverage/summary.md >> "$GITHUB_STEP_SUMMARY" || true
182
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
183
+ if: always()
184
+ with:
185
+ name: coverage-report
186
+ path: build/coverage/
187
+ if-no-files-found: ignore
188
+ retention-days: 7
189
+
190
+ # One job per platform and Python (pyproject.toml's [tool.cibuildwheel] has the rest), so each
191
+ # platform's wheels build side by side.
192
+ wheel:
193
+ name: wheel (${{ matrix.os }}, ${{ matrix.python }})
194
+ needs: version
195
+ runs-on: ${{ matrix.os }}
196
+ timeout-minutes: 45
197
+ strategy:
198
+ fail-fast: false
199
+ matrix:
200
+ os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15-intel, macos-14, windows-2022]
201
+ python: [cp310, cp311, cp312]
202
+ steps:
203
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
204
+ - name: Version
205
+ shell: bash
206
+ run: >
207
+ sed -i.bak -E 's/^set\(TERRAINGEN_FULL_VERSION "([0-9.]+)"\)$/set(TERRAINGEN_FULL_VERSION "\1${{ needs.version.outputs.suffix }}")/'
208
+ CMakeLists.txt
209
+ - uses: pypa/cibuildwheel@b3395e271a35f73dad77f21802abe9b986dfe299 # v4.3.1
210
+ env:
211
+ CIBW_BUILD: "${{ matrix.python }}-*"
212
+ with:
213
+ output-dir: wheelhouse
214
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
215
+ with:
216
+ name: wheel-${{ matrix.os }}-${{ matrix.python }}
217
+ path: wheelhouse/*.whl
218
+
219
+ # The sdist, then a wheel built from it and imported, as pip does for platforms without wheels.
220
+ sdist:
221
+ needs: version
222
+ runs-on: ubuntu-24.04
223
+ timeout-minutes: 30
224
+ steps:
225
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
226
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
227
+ with:
228
+ python-version: "3.12"
229
+ - name: Version
230
+ run: >
231
+ sed -i -E 's/^set\(TERRAINGEN_FULL_VERSION "([0-9.]+)"\)$/set(TERRAINGEN_FULL_VERSION "\1${{ needs.version.outputs.suffix }}")/'
232
+ CMakeLists.txt
233
+ - run: python -m pip install build
234
+ - run: python -m build --sdist
235
+ - name: Install from the sdist
236
+ run: |
237
+ python -m pip install dist/*.tar.gz
238
+ cd "$RUNNER_TEMP" && python -c "import terraingen; print(terraingen.__version__)" && terraingen backends
239
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
240
+ with:
241
+ name: sdist
242
+ path: dist/*.tar.gz
243
+
244
+ # The documentation, built against the Linux wheel, for every push and pull request; another
245
+ # platform's wheel failing does not skip it.
246
+ docs:
247
+ needs: wheel
248
+ if: ${{ !cancelled() }}
249
+ runs-on: ubuntu-24.04
250
+ timeout-minutes: 20
251
+ steps:
252
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
253
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
254
+ with:
255
+ python-version: "3.12"
256
+ cache: pip
257
+ cache-dependency-path: docs/requirements.txt
258
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
259
+ with:
260
+ name: wheel-ubuntu-24.04-cp312
261
+ path: wheel
262
+ - name: Install Doxygen, TerrainGen and the docs requirements
263
+ run: |
264
+ sudo apt-get update && sudo apt-get install -y --no-install-recommends doxygen
265
+ python -m pip install wheel/*.whl -r docs/requirements.txt
266
+ - name: Build
267
+ run: make -C docs build
268
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
269
+ with:
270
+ name: site
271
+ path: site
272
+ retention-days: 3
273
+
274
+ # The documentation with the coverage report under coverage/ (and coverage/badge.json for the
275
+ # README badge), on GitHub Pages from main. A failed coverage run leaves the report out.
276
+ pages:
277
+ needs: [docs, coverage]
278
+ if: ${{ !cancelled() && needs.docs.result == 'success' && github.event_name == 'push' && github.ref == 'refs/heads/main' }}
279
+ runs-on: ubuntu-24.04
280
+ timeout-minutes: 10
281
+ permissions:
282
+ contents: read
283
+ pages: write
284
+ id-token: write
285
+ environment:
286
+ name: github-pages
287
+ url: ${{ steps.deployment.outputs.page_url }}
288
+ steps:
289
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
290
+ with:
291
+ name: site
292
+ path: site
293
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
294
+ continue-on-error: true
295
+ with:
296
+ name: coverage-report
297
+ path: site/coverage
298
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
299
+ with:
300
+ path: site
301
+ - id: deployment
302
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
303
+
304
+ # The CLI, library, headers and CMake package for each platform as an archive, and Debian packages
305
+ # (terraingen, terraingen-dev) built on the oldest supported Ubuntu.
306
+ packages:
307
+ name: packages (${{ matrix.platform }})
308
+ needs: version
309
+ runs-on: ${{ matrix.os }}
310
+ timeout-minutes: 45
311
+ strategy:
312
+ fail-fast: false
313
+ matrix:
314
+ include:
315
+ - { platform: linux-x86_64, os: ubuntu-22.04 }
316
+ - { platform: linux-aarch64, os: ubuntu-22.04-arm }
317
+ - { platform: macos-arm64, os: macos-14 }
318
+ - { platform: macos-x86_64, os: macos-15-intel }
319
+ - { platform: windows-x86_64, os: windows-2022 }
320
+ env:
321
+ ARCHIVE: terraingen-${{ needs.version.outputs.version }}-${{ matrix.platform }}
322
+ steps:
323
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
324
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
325
+ with:
326
+ python-version: "3.12"
327
+ - run: python -m pip install ninja
328
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
329
+ if: runner.os == 'Windows'
330
+ - name: Version
331
+ shell: bash
332
+ run: >
333
+ sed -i.bak -E 's/^set\(TERRAINGEN_FULL_VERSION "([0-9.]+)"\)$/set(TERRAINGEN_FULL_VERSION "\1${{ needs.version.outputs.suffix }}")/'
334
+ CMakeLists.txt
335
+ - name: Build
336
+ shell: bash
337
+ run: |
338
+ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DTERRAINGEN_BUILD_TESTS=OFF \
339
+ -DTERRAINGEN_BUILD_BENCHMARKS=OFF -DTERRAINGEN_BUILD_EXAMPLES=OFF \
340
+ -DTERRAINGEN_BUILD_PYTHON=OFF -DTERRAINGEN_INSTALL=ON
341
+ cmake --build build --parallel 4
342
+ cmake --install build --prefix "$ARCHIVE"
343
+ cp LICENSE README.md CHANGELOG.md "$ARCHIVE/"
344
+ - name: Archive
345
+ if: runner.os == 'Windows'
346
+ shell: pwsh
347
+ run: Compress-Archive -Path "$env:ARCHIVE" -DestinationPath "$env:ARCHIVE.zip"
348
+ - name: Archive
349
+ if: runner.os != 'Windows'
350
+ run: tar -czf "$ARCHIVE.tar.gz" "$ARCHIVE"
351
+ - name: Debian packages
352
+ if: runner.os == 'Linux'
353
+ run: cpack --config build/CPackConfig.cmake -G DEB -B debs
354
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
355
+ with:
356
+ name: packages-${{ matrix.platform }}
357
+ path: |
358
+ ${{ env.ARCHIVE }}.zip
359
+ ${{ env.ARCHIVE }}.tar.gz
360
+ debs/*.deb
361
+ if-no-files-found: error
362
+
363
+ # The Debian packages installed on clean distributions, where the program must run and list its
364
+ # backends. Only the Linux packages matter here, so another platform's failure does not skip it; a
365
+ # missing Linux package fails its download.
366
+ package-test:
367
+ name: package-test (${{ matrix.image }}, ${{ matrix.arch }})
368
+ needs: packages
369
+ if: ${{ !cancelled() }}
370
+ runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
371
+ timeout-minutes: 15
372
+ strategy:
373
+ fail-fast: false
374
+ matrix:
375
+ arch: [x86_64, aarch64]
376
+ image: ["ubuntu:22.04", "ubuntu:24.04", "debian:12"]
377
+ container: ${{ matrix.image }}
378
+ steps:
379
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
380
+ with:
381
+ name: packages-linux-${{ matrix.arch }}
382
+ - name: Install
383
+ run: |
384
+ apt-get update
385
+ apt-get install -y --no-install-recommends ./debs/*.deb
386
+ - name: Run
387
+ run: |
388
+ terraingen --version
389
+ terraingen backends
390
+
391
+ # The Dockerfile's image, built and tested on the oldest supported Ubuntu; pushed to GHCR from main
392
+ # (dev) and release tags.
393
+ docker:
394
+ needs: [version, lint, test]
395
+ runs-on: ubuntu-24.04
396
+ timeout-minutes: 45
397
+ permissions:
398
+ contents: read
399
+ packages: write
400
+ steps:
401
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
402
+ - name: Build
403
+ run: docker build --target dev -t terraingen:test .
404
+ - name: Smoke test
405
+ run: |
406
+ docker run --rm terraingen:test terraingen --version
407
+ docker run --rm terraingen:test terraingen backends
408
+ docker run --rm terraingen:test python -c "import terraingen; print(terraingen.__version__)"
409
+ - name: Push
410
+ if: github.event_name == 'push'
411
+ env:
412
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
413
+ run: |
414
+ image=ghcr.io/${GITHUB_REPOSITORY,,}
415
+ echo "$GH_TOKEN" | docker login ghcr.io -u "$GITHUB_ACTOR" --password-stdin
416
+ if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
417
+ version=${GITHUB_REF_NAME#v}
418
+ tags=("$version" "${version%.*}" latest)
419
+ else
420
+ tags=(dev)
421
+ fi
422
+ for tag in "${tags[@]}"; do
423
+ docker tag terraingen:test "$image:$tag"
424
+ docker push "$image:$tag"
425
+ done
426
+
427
+ # Wheels and the sdist to PyPI by Trusted Publishing (no stored token): X.Y.Z.devN from main,
428
+ # X.Y.Z from release tags, once every platform's build, tests and packages pass.
429
+ pypi:
430
+ needs: [lint, test, wheel, sdist, package-test]
431
+ if: >
432
+ github.event_name == 'push' &&
433
+ (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))
434
+ runs-on: ubuntu-24.04
435
+ timeout-minutes: 10
436
+ environment:
437
+ name: pypi
438
+ url: https://pypi.org/project/terraingenpy/
439
+ permissions:
440
+ id-token: write
441
+ steps:
442
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
443
+ with:
444
+ pattern: wheel-*
445
+ merge-multiple: true
446
+ path: dist
447
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
448
+ with:
449
+ name: sdist
450
+ path: dist
451
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
452
+
453
+ # The "dev" pre-release: main's packages and their checksums, replaced on every push to main, like
454
+ # the dev Docker tag and the PyPI .devN versions. Marked as a pre-release and never as the latest
455
+ # release, so versioned releases stay the default.
456
+ dev:
457
+ needs: [lint, test, packages, package-test]
458
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
459
+ runs-on: ubuntu-24.04
460
+ timeout-minutes: 10
461
+ permissions:
462
+ contents: write
463
+ steps:
464
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
465
+ with:
466
+ pattern: "packages-*"
467
+ merge-multiple: true
468
+ path: assets
469
+ - name: Flatten
470
+ run: find assets -mindepth 2 -type f -exec mv -t assets {} + && find assets -mindepth 1 -type d -empty -delete
471
+ - name: Checksums
472
+ run: cd assets && sha256sum -- * > SHA256SUMS
473
+ - name: Release
474
+ env:
475
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
476
+ run: |
477
+ gh release delete dev --repo "$GITHUB_REPOSITORY" --cleanup-tag --yes || true
478
+ gh release create dev assets/* --repo "$GITHUB_REPOSITORY" --target "$GITHUB_SHA" \
479
+ --prerelease --latest=false --title "Dev (main)" \
480
+ --notes "Built from main at $GITHUB_SHA. For versioned binaries, use a tagged release."
481
+
482
+ # A GitHub release for each v* tag, with every wheel, the sdist, the packages and their checksums.
483
+ release:
484
+ needs: [lint, test, wheel, sdist, package-test, docker]
485
+ if: startsWith(github.ref, 'refs/tags/v')
486
+ runs-on: ubuntu-24.04
487
+ timeout-minutes: 10
488
+ permissions:
489
+ contents: write
490
+ steps:
491
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
492
+ with:
493
+ pattern: "wheel-*"
494
+ merge-multiple: true
495
+ path: assets
496
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
497
+ with:
498
+ name: sdist
499
+ path: assets
500
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
501
+ with:
502
+ pattern: "packages-*"
503
+ merge-multiple: true
504
+ path: assets
505
+ - name: Flatten
506
+ run: find assets -mindepth 2 -type f -exec mv -t assets {} + && find assets -mindepth 1 -type d -empty -delete
507
+ - name: Checksums
508
+ run: cd assets && sha256sum -- * > SHA256SUMS
509
+ - name: Release
510
+ env:
511
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
512
+ run: >
513
+ gh release create "$GITHUB_REF_NAME" assets/*
514
+ --repo "$GITHUB_REPOSITORY" --title "TerrainGen ${GITHUB_REF_NAME#v}" --generate-notes
@@ -0,0 +1,125 @@
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