forge3d 1.13.0__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 (1257) hide show
  1. forge3d-1.13.0/.gitattributes +3 -0
  2. forge3d-1.13.0/.github/workflows/ci.yml +391 -0
  3. forge3d-1.13.0/.github/workflows/public-funnel-monitor.yml +47 -0
  4. forge3d-1.13.0/.github/workflows/publish.yml +232 -0
  5. forge3d-1.13.0/.gitignore +326 -0
  6. forge3d-1.13.0/AGENTS.md +63 -0
  7. forge3d-1.13.0/CHANGELOG.md +1770 -0
  8. forge3d-1.13.0/CMakeLists.txt +243 -0
  9. forge3d-1.13.0/CONTRIBUTING.md +41 -0
  10. forge3d-1.13.0/Cargo.lock +4726 -0
  11. forge3d-1.13.0/Cargo.toml +183 -0
  12. forge3d-1.13.0/LICENSE +21 -0
  13. forge3d-1.13.0/LICENSE-APACHE +190 -0
  14. forge3d-1.13.0/MANIFEST.in +88 -0
  15. forge3d-1.13.0/PKG-INFO +194 -0
  16. forge3d-1.13.0/README.md +126 -0
  17. forge3d-1.13.0/SECURITY.md +10 -0
  18. forge3d-1.13.0/bench/upload_policies/policies.rs +496 -0
  19. forge3d-1.13.0/cmake/ForgeConfig.cmake +233 -0
  20. forge3d-1.13.0/cmake/README.md +283 -0
  21. forge3d-1.13.0/conftest.py +22 -0
  22. forge3d-1.13.0/examples/_import_shim.py +13 -0
  23. forge3d-1.13.0/examples/_m_3d_preview.py +160 -0
  24. forge3d-1.13.0/examples/_png.py +65 -0
  25. forge3d-1.13.0/examples/buildings_viewer_interactive.py +658 -0
  26. forge3d-1.13.0/examples/bundle_viewer_interactive.py +535 -0
  27. forge3d-1.13.0/examples/camera_animation_demo.py +940 -0
  28. forge3d-1.13.0/examples/clipmap_demo.py +923 -0
  29. forge3d-1.13.0/examples/cog_streaming_demo.py +363 -0
  30. forge3d-1.13.0/examples/fuji_labels_demo.py +1131 -0
  31. forge3d-1.13.0/examples/luxembourg_rail_overlay.py +1368 -0
  32. forge3d-1.13.0/examples/notebooks/map_plate.ipynb +84 -0
  33. forge3d-1.13.0/examples/notebooks/quickstart.ipynb +83 -0
  34. forge3d-1.13.0/examples/notebooks/terrain_explorer.ipynb +82 -0
  35. forge3d-1.13.0/examples/picking_demo.py +481 -0
  36. forge3d-1.13.0/examples/picking_test_interactive.py +319 -0
  37. forge3d-1.13.0/examples/png_numpy_roundtrip.py +43 -0
  38. forge3d-1.13.0/examples/pointcloud_viewer_interactive.py +407 -0
  39. forge3d-1.13.0/examples/presets/baseline_no_vector_overlays.json +22 -0
  40. forge3d-1.13.0/examples/presets/rainier_showcase.json +20 -0
  41. forge3d-1.13.0/examples/sample_style.json +66 -0
  42. forge3d-1.13.0/examples/style_viewer_interactive.py +565 -0
  43. forge3d-1.13.0/examples/swiss_terrain_landcover_viewer.py +1195 -0
  44. forge3d-1.13.0/examples/terrain_demo.py +608 -0
  45. forge3d-1.13.0/examples/terrain_single_tile.py +38 -0
  46. forge3d-1.13.0/examples/terrain_viewer_interactive.py +964 -0
  47. forge3d-1.13.0/examples/tiles3d_demo.py +292 -0
  48. forge3d-1.13.0/examples/triangle_png.py +34 -0
  49. forge3d-1.13.0/examples/vector_export_demo.py +472 -0
  50. forge3d-1.13.0/pyproject.toml +139 -0
  51. forge3d-1.13.0/pytest.ini +14 -0
  52. forge3d-1.13.0/python/README.md +29 -0
  53. forge3d-1.13.0/python/dask/__init__.py +10 -0
  54. forge3d-1.13.0/python/dask/array/__init__.py +28 -0
  55. forge3d-1.13.0/python/dask/array/random.py +13 -0
  56. forge3d-1.13.0/python/forge3d/__init__.py +484 -0
  57. forge3d-1.13.0/python/forge3d/__init__.pyi +900 -0
  58. forge3d-1.13.0/python/forge3d/_ed25519.py +169 -0
  59. forge3d-1.13.0/python/forge3d/_gpu.py +89 -0
  60. forge3d-1.13.0/python/forge3d/_license.py +305 -0
  61. forge3d-1.13.0/python/forge3d/_memory.py +126 -0
  62. forge3d-1.13.0/python/forge3d/_native.py +37 -0
  63. forge3d-1.13.0/python/forge3d/_png.py +339 -0
  64. forge3d-1.13.0/python/forge3d/_validate.py +422 -0
  65. forge3d-1.13.0/python/forge3d/animation.py +204 -0
  66. forge3d-1.13.0/python/forge3d/api_policy.md +158 -0
  67. forge3d-1.13.0/python/forge3d/bench.py +227 -0
  68. forge3d-1.13.0/python/forge3d/buildings.py +576 -0
  69. forge3d-1.13.0/python/forge3d/bundle.py +362 -0
  70. forge3d-1.13.0/python/forge3d/cog.py +383 -0
  71. forge3d-1.13.0/python/forge3d/colormaps/__init__.py +5 -0
  72. forge3d-1.13.0/python/forge3d/colormaps/core.py +122 -0
  73. forge3d-1.13.0/python/forge3d/colormaps/core_palettes.py +29 -0
  74. forge3d-1.13.0/python/forge3d/colormaps/io.py +17 -0
  75. forge3d-1.13.0/python/forge3d/colormaps/providers.py +52 -0
  76. forge3d-1.13.0/python/forge3d/colormaps/registry.py +31 -0
  77. forge3d-1.13.0/python/forge3d/colors.py +64 -0
  78. forge3d-1.13.0/python/forge3d/config.py +725 -0
  79. forge3d-1.13.0/python/forge3d/crs.py +353 -0
  80. forge3d-1.13.0/python/forge3d/data/mini_dem.npy +0 -0
  81. forge3d-1.13.0/python/forge3d/data/sample_boundaries.geojson +69 -0
  82. forge3d-1.13.0/python/forge3d/datasets.py +318 -0
  83. forge3d-1.13.0/python/forge3d/denoise.py +147 -0
  84. forge3d-1.13.0/python/forge3d/export.py +616 -0
  85. forge3d-1.13.0/python/forge3d/geometry.py +576 -0
  86. forge3d-1.13.0/python/forge3d/guiding.py +46 -0
  87. forge3d-1.13.0/python/forge3d/helpers/__init__.py +91 -0
  88. forge3d-1.13.0/python/forge3d/helpers/aov_io.py +90 -0
  89. forge3d-1.13.0/python/forge3d/helpers/frame_dump.py +115 -0
  90. forge3d-1.13.0/python/forge3d/helpers/ipython_display.py +54 -0
  91. forge3d-1.13.0/python/forge3d/helpers/mpl_display.py +433 -0
  92. forge3d-1.13.0/python/forge3d/helpers/offscreen.py +186 -0
  93. forge3d-1.13.0/python/forge3d/interactive.py +606 -0
  94. forge3d-1.13.0/python/forge3d/io.py +733 -0
  95. forge3d-1.13.0/python/forge3d/legend.py +177 -0
  96. forge3d-1.13.0/python/forge3d/lighting.py +975 -0
  97. forge3d-1.13.0/python/forge3d/map_plate.py +358 -0
  98. forge3d-1.13.0/python/forge3d/materials.py +28 -0
  99. forge3d-1.13.0/python/forge3d/mem.py +74 -0
  100. forge3d-1.13.0/python/forge3d/mesh.py +676 -0
  101. forge3d-1.13.0/python/forge3d/north_arrow.py +187 -0
  102. forge3d-1.13.0/python/forge3d/path_tracing.py +797 -0
  103. forge3d-1.13.0/python/forge3d/path_tracing.pyi +53 -0
  104. forge3d-1.13.0/python/forge3d/pointcloud.py +690 -0
  105. forge3d-1.13.0/python/forge3d/presets.py +314 -0
  106. forge3d-1.13.0/python/forge3d/py.typed +5 -0
  107. forge3d-1.13.0/python/forge3d/scale_bar.py +162 -0
  108. forge3d-1.13.0/python/forge3d/sdf.py +555 -0
  109. forge3d-1.13.0/python/forge3d/style.py +993 -0
  110. forge3d-1.13.0/python/forge3d/style_expressions.py +717 -0
  111. forge3d-1.13.0/python/forge3d/terrain_demo.py +1122 -0
  112. forge3d-1.13.0/python/forge3d/terrain_params.py +1745 -0
  113. forge3d-1.13.0/python/forge3d/terrain_pbr_pom.py +50 -0
  114. forge3d-1.13.0/python/forge3d/textures.py +104 -0
  115. forge3d-1.13.0/python/forge3d/tiles3d.py +404 -0
  116. forge3d-1.13.0/python/forge3d/vector.py +448 -0
  117. forge3d-1.13.0/python/forge3d/viewer.py +698 -0
  118. forge3d-1.13.0/python/forge3d/viewer.pyi +118 -0
  119. forge3d-1.13.0/python/forge3d/viewer_ipc.py +941 -0
  120. forge3d-1.13.0/python/forge3d/widgets.py +516 -0
  121. forge3d-1.13.0/python/pyproj_stub/__init__.py +22 -0
  122. forge3d-1.13.0/python/rasterio/__init__.py +67 -0
  123. forge3d-1.13.0/python/rasterio/enums.py +15 -0
  124. forge3d-1.13.0/python/rasterio/transform.py +19 -0
  125. forge3d-1.13.0/python/rasterio/windows.py +19 -0
  126. forge3d-1.13.0/python/tools/backends_runner.py +164 -0
  127. forge3d-1.13.0/python/tools/device_diagnostics.py +62 -0
  128. forge3d-1.13.0/python/tools/perf_sanity.py +135 -0
  129. forge3d-1.13.0/python/tools/terrain_spike.py +28 -0
  130. forge3d-1.13.0/python/vshade/__init__.py +2 -0
  131. forge3d-1.13.0/python/xarray/__init__.py +12 -0
  132. forge3d-1.13.0/scripts/check_public_funnel.py +62 -0
  133. forge3d-1.13.0/scripts/compare_images.py +203 -0
  134. forge3d-1.13.0/scripts/detail_normals.py +254 -0
  135. forge3d-1.13.0/scripts/gen_gallery_images.py +735 -0
  136. forge3d-1.13.0/scripts/generate_audit_snapshot.py +592 -0
  137. forge3d-1.13.0/scripts/generate_license_keypair.py +63 -0
  138. forge3d-1.13.0/scripts/histogram_match.py +185 -0
  139. forge3d-1.13.0/scripts/install_compatible_wheel.py +73 -0
  140. forge3d-1.13.0/scripts/regenerate_gallery.py +659 -0
  141. forge3d-1.13.0/scripts/sign_license_key.py +81 -0
  142. forge3d-1.13.0/scripts/style_match_eval.py +605 -0
  143. forge3d-1.13.0/scripts/terrain_validation.py +470 -0
  144. forge3d-1.13.0/scripts/validate_gore_strict.py +282 -0
  145. forge3d-1.13.0/scripts/validate_terrain.py +294 -0
  146. forge3d-1.13.0/src/accel/cpu_bvh.rs +645 -0
  147. forge3d-1.13.0/src/accel/instancing.rs +85 -0
  148. forge3d-1.13.0/src/accel/lbvh_gpu/buffers.rs +131 -0
  149. forge3d-1.13.0/src/accel/lbvh_gpu/build.rs +76 -0
  150. forge3d-1.13.0/src/accel/lbvh_gpu/morton.rs +99 -0
  151. forge3d-1.13.0/src/accel/lbvh_gpu/refit.rs +139 -0
  152. forge3d-1.13.0/src/accel/lbvh_gpu/setup.rs +131 -0
  153. forge3d-1.13.0/src/accel/lbvh_gpu/sort.rs +232 -0
  154. forge3d-1.13.0/src/accel/lbvh_gpu/sort_bitonic.rs +98 -0
  155. forge3d-1.13.0/src/accel/lbvh_gpu/topology.rs +135 -0
  156. forge3d-1.13.0/src/accel/lbvh_gpu.rs +81 -0
  157. forge3d-1.13.0/src/accel/mod.rs +139 -0
  158. forge3d-1.13.0/src/accel/sah_cpu.rs +440 -0
  159. forge3d-1.13.0/src/accel/types.rs +313 -0
  160. forge3d-1.13.0/src/animation/interpolation.rs +81 -0
  161. forge3d-1.13.0/src/animation/mod.rs +250 -0
  162. forge3d-1.13.0/src/animation/render_queue.rs +166 -0
  163. forge3d-1.13.0/src/bin/interactive_viewer.rs +7 -0
  164. forge3d-1.13.0/src/bundle/manifest.rs +188 -0
  165. forge3d-1.13.0/src/bundle/mod.rs +40 -0
  166. forge3d-1.13.0/src/camera/dof.rs +185 -0
  167. forge3d-1.13.0/src/camera/mod.rs +229 -0
  168. forge3d-1.13.0/src/camera/validation.rs +149 -0
  169. forge3d-1.13.0/src/cli/args.rs +102 -0
  170. forge3d-1.13.0/src/cli/gi_config_output.rs +268 -0
  171. forge3d-1.13.0/src/cli/gi_config_parse.rs +213 -0
  172. forge3d-1.13.0/src/cli/gi_formatting.rs +53 -0
  173. forge3d-1.13.0/src/cli/gi_params.rs +56 -0
  174. forge3d-1.13.0/src/cli/gi_parsing.rs +106 -0
  175. forge3d-1.13.0/src/cli/gi_types.rs +109 -0
  176. forge3d-1.13.0/src/cli/interactive_viewer.rs +283 -0
  177. forge3d-1.13.0/src/cli/mod.rs +8 -0
  178. forge3d-1.13.0/src/colormap/assets/magma_256x1.png +0 -0
  179. forge3d-1.13.0/src/colormap/assets/terrain_256x1.png +0 -0
  180. forge3d-1.13.0/src/colormap/assets/viridis_256x1.png +0 -0
  181. forge3d-1.13.0/src/colormap/colormap1d.rs +182 -0
  182. forge3d-1.13.0/src/colormap/mod.rs +217 -0
  183. forge3d-1.13.0/src/converters/mod.rs +1 -0
  184. forge3d-1.13.0/src/converters/multipolygonz_to_obj.rs +111 -0
  185. forge3d-1.13.0/src/core/async_compute/mod.rs +82 -0
  186. forge3d-1.13.0/src/core/async_compute/scheduler.rs +291 -0
  187. forge3d-1.13.0/src/core/async_compute/types.rs +184 -0
  188. forge3d-1.13.0/src/core/async_readback.rs +418 -0
  189. forge3d-1.13.0/src/core/big_buffer.rs +329 -0
  190. forge3d-1.13.0/src/core/bloom/config.rs +49 -0
  191. forge3d-1.13.0/src/core/bloom/effect.rs +136 -0
  192. forge3d-1.13.0/src/core/bloom/execute.rs +257 -0
  193. forge3d-1.13.0/src/core/bloom/init.rs +33 -0
  194. forge3d-1.13.0/src/core/bloom/resources.rs +241 -0
  195. forge3d-1.13.0/src/core/bloom.rs +24 -0
  196. forge3d-1.13.0/src/core/cascade_split.rs +399 -0
  197. forge3d-1.13.0/src/core/cloud_shadows/mod.rs +56 -0
  198. forge3d-1.13.0/src/core/cloud_shadows/renderer.rs +356 -0
  199. forge3d-1.13.0/src/core/cloud_shadows/types.rs +115 -0
  200. forge3d-1.13.0/src/core/cloud_shadows/utils.rs +47 -0
  201. forge3d-1.13.0/src/core/clouds/mod.rs +10 -0
  202. forge3d-1.13.0/src/core/clouds/renderer/controls.rs +136 -0
  203. forge3d-1.13.0/src/core/clouds/renderer/data.rs +47 -0
  204. forge3d-1.13.0/src/core/clouds/renderer/init.rs +257 -0
  205. forge3d-1.13.0/src/core/clouds/renderer/mod.rs +47 -0
  206. forge3d-1.13.0/src/core/clouds/renderer/render.rs +38 -0
  207. forge3d-1.13.0/src/core/clouds/renderer/resources.rs +115 -0
  208. forge3d-1.13.0/src/core/clouds/renderer/textures.rs +239 -0
  209. forge3d-1.13.0/src/core/clouds/types.rs +166 -0
  210. forge3d-1.13.0/src/core/compressed_textures/compression.rs +173 -0
  211. forge3d-1.13.0/src/core/compressed_textures/load.rs +116 -0
  212. forge3d-1.13.0/src/core/compressed_textures/parsing.rs +70 -0
  213. forge3d-1.13.0/src/core/compressed_textures/tests.rs +34 -0
  214. forge3d-1.13.0/src/core/compressed_textures/types.rs +69 -0
  215. forge3d-1.13.0/src/core/compressed_textures/upload.rs +194 -0
  216. forge3d-1.13.0/src/core/compressed_textures.rs +10 -0
  217. forge3d-1.13.0/src/core/context.rs +50 -0
  218. forge3d-1.13.0/src/core/device_caps.rs +173 -0
  219. forge3d-1.13.0/src/core/dof/mod.rs +349 -0
  220. forge3d-1.13.0/src/core/dof/pipeline.rs +107 -0
  221. forge3d-1.13.0/src/core/dof/types.rs +174 -0
  222. forge3d-1.13.0/src/core/double_buffer.rs +371 -0
  223. forge3d-1.13.0/src/core/dual_source_oit/constructor.rs +292 -0
  224. forge3d-1.13.0/src/core/dual_source_oit/controls.rs +108 -0
  225. forge3d-1.13.0/src/core/dual_source_oit/mod.rs +112 -0
  226. forge3d-1.13.0/src/core/dual_source_oit/pass.rs +111 -0
  227. forge3d-1.13.0/src/core/dual_source_oit/pipeline.rs +112 -0
  228. forge3d-1.13.0/src/core/envmap.rs +369 -0
  229. forge3d-1.13.0/src/core/error.rs +74 -0
  230. forge3d-1.13.0/src/core/feedback_buffer.rs +453 -0
  231. forge3d-1.13.0/src/core/fence_tracker.rs +230 -0
  232. forge3d-1.13.0/src/core/framegraph.rs +53 -0
  233. forge3d-1.13.0/src/core/framegraph_impl/barriers.rs +233 -0
  234. forge3d-1.13.0/src/core/framegraph_impl/mod.rs +405 -0
  235. forge3d-1.13.0/src/core/framegraph_impl/types.rs +149 -0
  236. forge3d-1.13.0/src/core/gbuffer.rs +201 -0
  237. forge3d-1.13.0/src/core/gpu.rs +157 -0
  238. forge3d-1.13.0/src/core/gpu_timing.rs +465 -0
  239. forge3d-1.13.0/src/core/gpu_types.rs +42 -0
  240. forge3d-1.13.0/src/core/ground_plane/mod.rs +5 -0
  241. forge3d-1.13.0/src/core/ground_plane/presets.rs +42 -0
  242. forge3d-1.13.0/src/core/ground_plane/renderer.rs +363 -0
  243. forge3d-1.13.0/src/core/ground_plane/types.rs +226 -0
  244. forge3d-1.13.0/src/core/hdr.rs +305 -0
  245. forge3d-1.13.0/src/core/hdr_readback.rs +223 -0
  246. forge3d-1.13.0/src/core/hdr_tonemapping.rs +89 -0
  247. forge3d-1.13.0/src/core/hdr_types.rs +87 -0
  248. forge3d-1.13.0/src/core/ibl/brdf_lut.rs +77 -0
  249. forge3d-1.13.0/src/core/ibl/cache.rs +283 -0
  250. forge3d-1.13.0/src/core/ibl/constructor.rs +294 -0
  251. forge3d-1.13.0/src/core/ibl/environment.rs +300 -0
  252. forge3d-1.13.0/src/core/ibl/image_io.rs +273 -0
  253. forge3d-1.13.0/src/core/ibl/irradiance.rs +108 -0
  254. forge3d-1.13.0/src/core/ibl/prefilter.rs +127 -0
  255. forge3d-1.13.0/src/core/ibl/runtime.rs +129 -0
  256. forge3d-1.13.0/src/core/ibl.rs +285 -0
  257. forge3d-1.13.0/src/core/jitter.rs +225 -0
  258. forge3d-1.13.0/src/core/ltc_area_lights.rs +340 -0
  259. forge3d-1.13.0/src/core/ltc_lut.rs +116 -0
  260. forge3d-1.13.0/src/core/ltc_types.rs +171 -0
  261. forge3d-1.13.0/src/core/material.rs +343 -0
  262. forge3d-1.13.0/src/core/matrix_stack.rs +352 -0
  263. forge3d-1.13.0/src/core/memory_tracker/helpers.rs +108 -0
  264. forge3d-1.13.0/src/core/memory_tracker/pool.rs +349 -0
  265. forge3d-1.13.0/src/core/memory_tracker/registry.rs +127 -0
  266. forge3d-1.13.0/src/core/memory_tracker/reporting.rs +54 -0
  267. forge3d-1.13.0/src/core/memory_tracker/tests.rs +165 -0
  268. forge3d-1.13.0/src/core/memory_tracker/types.rs +51 -0
  269. forge3d-1.13.0/src/core/memory_tracker.rs +14 -0
  270. forge3d-1.13.0/src/core/mipmap.rs +340 -0
  271. forge3d-1.13.0/src/core/mod.rs +166 -0
  272. forge3d-1.13.0/src/core/multi_thread/mod.rs +284 -0
  273. forge3d-1.13.0/src/core/multi_thread/pool.rs +93 -0
  274. forge3d-1.13.0/src/core/multi_thread/tasks.rs +109 -0
  275. forge3d-1.13.0/src/core/overlay_layer.rs +167 -0
  276. forge3d-1.13.0/src/core/overlays.rs +490 -0
  277. forge3d-1.13.0/src/core/pbr.rs +12 -0
  278. forge3d-1.13.0/src/core/point_spot_lights/creation.rs +299 -0
  279. forge3d-1.13.0/src/core/point_spot_lights/draw.rs +95 -0
  280. forge3d-1.13.0/src/core/point_spot_lights/management.rs +111 -0
  281. forge3d-1.13.0/src/core/point_spot_lights/mod.rs +13 -0
  282. forge3d-1.13.0/src/core/point_spot_lights/presets.rs +93 -0
  283. forge3d-1.13.0/src/core/point_spot_lights/structs.rs +38 -0
  284. forge3d-1.13.0/src/core/point_spot_lights/types.rs +253 -0
  285. forge3d-1.13.0/src/core/postfx/chain.rs +253 -0
  286. forge3d-1.13.0/src/core/postfx/config.rs +62 -0
  287. forge3d-1.13.0/src/core/postfx/effect.rs +47 -0
  288. forge3d-1.13.0/src/core/postfx/mod.rs +19 -0
  289. forge3d-1.13.0/src/core/postfx/resources.rs +174 -0
  290. forge3d-1.13.0/src/core/reflections.rs +349 -0
  291. forge3d-1.13.0/src/core/reflections_math.rs +91 -0
  292. forge3d-1.13.0/src/core/reflections_types.rs +197 -0
  293. forge3d-1.13.0/src/core/render_bundles.rs +309 -0
  294. forge3d-1.13.0/src/core/render_bundles_types.rs +238 -0
  295. forge3d-1.13.0/src/core/resource_tracker.rs +159 -0
  296. forge3d-1.13.0/src/core/sampler_modes.rs +507 -0
  297. forge3d-1.13.0/src/core/scene_graph.rs +617 -0
  298. forge3d-1.13.0/src/core/screen_space_effects/hzb.rs +278 -0
  299. forge3d-1.13.0/src/core/screen_space_effects/manager/accessors.rs +299 -0
  300. forge3d-1.13.0/src/core/screen_space_effects/manager/core.rs +126 -0
  301. forge3d-1.13.0/src/core/screen_space_effects/manager/execute.rs +106 -0
  302. forge3d-1.13.0/src/core/screen_space_effects/manager.rs +18 -0
  303. forge3d-1.13.0/src/core/screen_space_effects/settings.rs +209 -0
  304. forge3d-1.13.0/src/core/screen_space_effects/ssao/accessors.rs +66 -0
  305. forge3d-1.13.0/src/core/screen_space_effects/ssao/constructor.rs +150 -0
  306. forge3d-1.13.0/src/core/screen_space_effects/ssao/mod.rs +12 -0
  307. forge3d-1.13.0/src/core/screen_space_effects/ssao/passes.rs +222 -0
  308. forge3d-1.13.0/src/core/screen_space_effects/ssao/pipelines.rs +233 -0
  309. forge3d-1.13.0/src/core/screen_space_effects/ssao/resources.rs +237 -0
  310. forge3d-1.13.0/src/core/screen_space_effects/ssao/runtime.rs +36 -0
  311. forge3d-1.13.0/src/core/screen_space_effects/ssao/temporal.rs +131 -0
  312. forge3d-1.13.0/src/core/screen_space_effects/ssgi/accessors.rs +73 -0
  313. forge3d-1.13.0/src/core/screen_space_effects/ssgi/constructor/layouts.rs +115 -0
  314. forge3d-1.13.0/src/core/screen_space_effects/ssgi/constructor/mod.rs +110 -0
  315. forge3d-1.13.0/src/core/screen_space_effects/ssgi/constructor/pipelines.rs +115 -0
  316. forge3d-1.13.0/src/core/screen_space_effects/ssgi/constructor/resources.rs +202 -0
  317. forge3d-1.13.0/src/core/screen_space_effects/ssgi/controls.rs +149 -0
  318. forge3d-1.13.0/src/core/screen_space_effects/ssgi/runtime.rs +328 -0
  319. forge3d-1.13.0/src/core/screen_space_effects/ssgi.rs +74 -0
  320. forge3d-1.13.0/src/core/screen_space_effects/ssr/accessors.rs +89 -0
  321. forge3d-1.13.0/src/core/screen_space_effects/ssr/constructor/layouts.rs +130 -0
  322. forge3d-1.13.0/src/core/screen_space_effects/ssr/constructor/mod.rs +104 -0
  323. forge3d-1.13.0/src/core/screen_space_effects/ssr/constructor/pipelines.rs +103 -0
  324. forge3d-1.13.0/src/core/screen_space_effects/ssr/constructor/resources.rs +205 -0
  325. forge3d-1.13.0/src/core/screen_space_effects/ssr/runtime.rs +287 -0
  326. forge3d-1.13.0/src/core/screen_space_effects/ssr/stats.rs +54 -0
  327. forge3d-1.13.0/src/core/screen_space_effects/ssr.rs +65 -0
  328. forge3d-1.13.0/src/core/screen_space_effects.rs +51 -0
  329. forge3d-1.13.0/src/core/session.rs +95 -0
  330. forge3d-1.13.0/src/core/shadow_mapping/bind_group.rs +47 -0
  331. forge3d-1.13.0/src/core/shadow_mapping/mod.rs +14 -0
  332. forge3d-1.13.0/src/core/shadow_mapping/system.rs +383 -0
  333. forge3d-1.13.0/src/core/shadow_mapping/types.rs +317 -0
  334. forge3d-1.13.0/src/core/shadows/frustum.rs +84 -0
  335. forge3d-1.13.0/src/core/shadows/mod.rs +307 -0
  336. forge3d-1.13.0/src/core/shadows/resources.rs +69 -0
  337. forge3d-1.13.0/src/core/shadows/types.rs +161 -0
  338. forge3d-1.13.0/src/core/soft_light_radius.rs +494 -0
  339. forge3d-1.13.0/src/core/staging_rings.rs +330 -0
  340. forge3d-1.13.0/src/core/taa.rs +408 -0
  341. forge3d-1.13.0/src/core/text_mesh/builder.rs +297 -0
  342. forge3d-1.13.0/src/core/text_mesh/mod.rs +10 -0
  343. forge3d-1.13.0/src/core/text_mesh/renderer.rs +232 -0
  344. forge3d-1.13.0/src/core/text_mesh/types.rs +35 -0
  345. forge3d-1.13.0/src/core/text_overlay.rs +351 -0
  346. forge3d-1.13.0/src/core/texture_format.rs +306 -0
  347. forge3d-1.13.0/src/core/texture_format_defs.rs +223 -0
  348. forge3d-1.13.0/src/core/texture_upload.rs +631 -0
  349. forge3d-1.13.0/src/core/tile_cache.rs +620 -0
  350. forge3d-1.13.0/src/core/tonemap.rs +514 -0
  351. forge3d-1.13.0/src/core/virtual_texture.rs +674 -0
  352. forge3d-1.13.0/src/core/water_surface/constructor.rs +262 -0
  353. forge3d-1.13.0/src/core/water_surface/controls.rs +182 -0
  354. forge3d-1.13.0/src/core/water_surface/mod.rs +171 -0
  355. forge3d-1.13.0/src/core/water_surface/render.rs +16 -0
  356. forge3d-1.13.0/src/core/water_surface/uniforms.rs +119 -0
  357. forge3d-1.13.0/src/export/mod.rs +157 -0
  358. forge3d-1.13.0/src/export/projection.rs +252 -0
  359. forge3d-1.13.0/src/export/svg.rs +442 -0
  360. forge3d-1.13.0/src/export/svg_labels.rs +301 -0
  361. forge3d-1.13.0/src/external_image/decode.rs +87 -0
  362. forge3d-1.13.0/src/external_image/mod.rs +154 -0
  363. forge3d-1.13.0/src/external_image/types.rs +84 -0
  364. forge3d-1.13.0/src/external_image/upload.rs +109 -0
  365. forge3d-1.13.0/src/formats/hdr.rs +343 -0
  366. forge3d-1.13.0/src/formats/mod.rs +10 -0
  367. forge3d-1.13.0/src/geo/mod.rs +16 -0
  368. forge3d-1.13.0/src/geo/reproject.rs +216 -0
  369. forge3d-1.13.0/src/geometry/array_convert.rs +43 -0
  370. forge3d-1.13.0/src/geometry/curves.rs +284 -0
  371. forge3d-1.13.0/src/geometry/displacement.rs +131 -0
  372. forge3d-1.13.0/src/geometry/extrude.rs +109 -0
  373. forge3d-1.13.0/src/geometry/grid.rs +138 -0
  374. forge3d-1.13.0/src/geometry/mesh_python.rs +140 -0
  375. forge3d-1.13.0/src/geometry/mod.rs +125 -0
  376. forge3d-1.13.0/src/geometry/primitives.rs +434 -0
  377. forge3d-1.13.0/src/geometry/py_advanced.rs +187 -0
  378. forge3d-1.13.0/src/geometry/py_bindings.rs +278 -0
  379. forge3d-1.13.0/src/geometry/subdivision.rs +409 -0
  380. forge3d-1.13.0/src/geometry/tangents.rs +117 -0
  381. forge3d-1.13.0/src/geometry/thick_polyline.rs +83 -0
  382. forge3d-1.13.0/src/geometry/transform.rs +149 -0
  383. forge3d-1.13.0/src/geometry/transforms.rs +256 -0
  384. forge3d-1.13.0/src/geometry/validate.rs +260 -0
  385. forge3d-1.13.0/src/geometry/weld.rs +228 -0
  386. forge3d-1.13.0/src/import/building_materials.rs +529 -0
  387. forge3d-1.13.0/src/import/cityjson/bindings.rs +67 -0
  388. forge3d-1.13.0/src/import/cityjson/geometry.rs +162 -0
  389. forge3d-1.13.0/src/import/cityjson/parser.rs +256 -0
  390. forge3d-1.13.0/src/import/cityjson/tests.rs +52 -0
  391. forge3d-1.13.0/src/import/cityjson/types.rs +114 -0
  392. forge3d-1.13.0/src/import/cityjson.rs +14 -0
  393. forge3d-1.13.0/src/import/mod.rs +11 -0
  394. forge3d-1.13.0/src/import/osm_buildings.rs +396 -0
  395. forge3d-1.13.0/src/io/gltf_read.rs +97 -0
  396. forge3d-1.13.0/src/io/mod.rs +8 -0
  397. forge3d-1.13.0/src/io/obj_read.rs +396 -0
  398. forge3d-1.13.0/src/io/obj_write.rs +313 -0
  399. forge3d-1.13.0/src/io/stl_write.rs +113 -0
  400. forge3d-1.13.0/src/labels/atlas.rs +442 -0
  401. forge3d-1.13.0/src/labels/callout.rs +399 -0
  402. forge3d-1.13.0/src/labels/collision.rs +173 -0
  403. forge3d-1.13.0/src/labels/curved.rs +295 -0
  404. forge3d-1.13.0/src/labels/declutter.rs +352 -0
  405. forge3d-1.13.0/src/labels/layer.rs +556 -0
  406. forge3d-1.13.0/src/labels/leader.rs +144 -0
  407. forge3d-1.13.0/src/labels/line_label.rs +251 -0
  408. forge3d-1.13.0/src/labels/mod.rs +471 -0
  409. forge3d-1.13.0/src/labels/projection.rs +126 -0
  410. forge3d-1.13.0/src/labels/py_bindings.rs +215 -0
  411. forge3d-1.13.0/src/labels/rtree.rs +179 -0
  412. forge3d-1.13.0/src/labels/types.rs +226 -0
  413. forge3d-1.13.0/src/labels/typography.rs +261 -0
  414. forge3d-1.13.0/src/lib.rs +222 -0
  415. forge3d-1.13.0/src/license/mod.rs +71 -0
  416. forge3d-1.13.0/src/lighting/area_lights.rs +371 -0
  417. forge3d-1.13.0/src/lighting/atmospherics.rs +272 -0
  418. forge3d-1.13.0/src/lighting/ephemeris.rs +339 -0
  419. forge3d-1.13.0/src/lighting/ibl_cache.rs +242 -0
  420. forge3d-1.13.0/src/lighting/ibl_wrapper.rs +497 -0
  421. forge3d-1.13.0/src/lighting/light.rs +218 -0
  422. forge3d-1.13.0/src/lighting/light_buffer/creation.rs +132 -0
  423. forge3d-1.13.0/src/lighting/light_buffer/frame.rs +287 -0
  424. forge3d-1.13.0/src/lighting/light_buffer/mod.rs +14 -0
  425. forge3d-1.13.0/src/lighting/light_buffer/r2.rs +11 -0
  426. forge3d-1.13.0/src/lighting/light_buffer/tests.rs +318 -0
  427. forge3d-1.13.0/src/lighting/light_buffer/types.rs +35 -0
  428. forge3d-1.13.0/src/lighting/light_buffer/update.rs +76 -0
  429. forge3d-1.13.0/src/lighting/material.rs +145 -0
  430. forge3d-1.13.0/src/lighting/mod.rs +40 -0
  431. forge3d-1.13.0/src/lighting/py_bindings/atmosphere.rs +51 -0
  432. forge3d-1.13.0/src/lighting/py_bindings/gi.rs +51 -0
  433. forge3d-1.13.0/src/lighting/py_bindings/light.rs +315 -0
  434. forge3d-1.13.0/src/lighting/py_bindings/material.rs +125 -0
  435. forge3d-1.13.0/src/lighting/py_bindings/screen_space.rs +242 -0
  436. forge3d-1.13.0/src/lighting/py_bindings/shadow.rs +110 -0
  437. forge3d-1.13.0/src/lighting/py_bindings/sky.rs +108 -0
  438. forge3d-1.13.0/src/lighting/py_bindings/sun_position.rs +73 -0
  439. forge3d-1.13.0/src/lighting/py_bindings/volumetrics.rs +168 -0
  440. forge3d-1.13.0/src/lighting/py_bindings.rs +23 -0
  441. forge3d-1.13.0/src/lighting/screen_space.rs +263 -0
  442. forge3d-1.13.0/src/lighting/shadow.rs +225 -0
  443. forge3d-1.13.0/src/lighting/shadow_map.rs +262 -0
  444. forge3d-1.13.0/src/lighting/types.rs +183 -0
  445. forge3d-1.13.0/src/loaders/ktx2/loader.rs +224 -0
  446. forge3d-1.13.0/src/loaders/ktx2/mod.rs +68 -0
  447. forge3d-1.13.0/src/loaders/ktx2/parser.rs +179 -0
  448. forge3d-1.13.0/src/loaders/ktx2/types.rs +95 -0
  449. forge3d-1.13.0/src/loaders/ktx2/validation.rs +18 -0
  450. forge3d-1.13.0/src/loaders/mod.rs +7 -0
  451. forge3d-1.13.0/src/mesh/mod.rs +21 -0
  452. forge3d-1.13.0/src/mesh/tbn.rs +551 -0
  453. forge3d-1.13.0/src/mesh/vertex.rs +213 -0
  454. forge3d-1.13.0/src/offscreen/brdf_tile/api.rs +159 -0
  455. forge3d-1.13.0/src/offscreen/brdf_tile/debug.rs +81 -0
  456. forge3d-1.13.0/src/offscreen/brdf_tile/math.rs +56 -0
  457. forge3d-1.13.0/src/offscreen/brdf_tile/params.rs +16 -0
  458. forge3d-1.13.0/src/offscreen/brdf_tile/render.rs +64 -0
  459. forge3d-1.13.0/src/offscreen/brdf_tile/request.rs +167 -0
  460. forge3d-1.13.0/src/offscreen/brdf_tile/resources/render_pass.rs +38 -0
  461. forge3d-1.13.0/src/offscreen/brdf_tile/resources/timestamps.rs +62 -0
  462. forge3d-1.13.0/src/offscreen/brdf_tile/resources.rs +256 -0
  463. forge3d-1.13.0/src/offscreen/brdf_tile/tests.rs +302 -0
  464. forge3d-1.13.0/src/offscreen/brdf_tile.rs +13 -0
  465. forge3d-1.13.0/src/offscreen/mod.rs +11 -0
  466. forge3d-1.13.0/src/offscreen/pipeline.rs +337 -0
  467. forge3d-1.13.0/src/offscreen/sphere.rs +262 -0
  468. forge3d-1.13.0/src/p5/meta/constants.rs +40 -0
  469. forge3d-1.13.0/src/p5/meta/defaults.rs +123 -0
  470. forge3d-1.13.0/src/p5/meta/mod.rs +233 -0
  471. forge3d-1.13.0/src/p5/meta/ssr_status.rs +198 -0
  472. forge3d-1.13.0/src/p5/mod.rs +3 -0
  473. forge3d-1.13.0/src/p5/ssr.rs +414 -0
  474. forge3d-1.13.0/src/p5/ssr_analysis/luminance.rs +45 -0
  475. forge3d-1.13.0/src/p5/ssr_analysis/mod.rs +346 -0
  476. forge3d-1.13.0/src/p5/ssr_analysis/roi.rs +144 -0
  477. forge3d-1.13.0/src/passes/gi/bind_groups.rs +78 -0
  478. forge3d-1.13.0/src/passes/gi/mod.rs +248 -0
  479. forge3d-1.13.0/src/passes/gi/params.rs +63 -0
  480. forge3d-1.13.0/src/passes/mod.rs +6 -0
  481. forge3d-1.13.0/src/passes/ssgi.rs +46 -0
  482. forge3d-1.13.0/src/passes/ssr.rs +55 -0
  483. forge3d-1.13.0/src/path_tracing/accel.rs +378 -0
  484. forge3d-1.13.0/src/path_tracing/alias_table.rs +193 -0
  485. forge3d-1.13.0/src/path_tracing/aov.rs +261 -0
  486. forge3d-1.13.0/src/path_tracing/cache.rs +238 -0
  487. forge3d-1.13.0/src/path_tracing/compute/dispatch.rs +27 -0
  488. forge3d-1.13.0/src/path_tracing/compute/mod.rs +34 -0
  489. forge3d-1.13.0/src/path_tracing/compute/readback.rs +143 -0
  490. forge3d-1.13.0/src/path_tracing/compute/render.rs +48 -0
  491. forge3d-1.13.0/src/path_tracing/compute/setup.rs +254 -0
  492. forge3d-1.13.0/src/path_tracing/compute_types.rs +35 -0
  493. forge3d-1.13.0/src/path_tracing/hybrid_compute/layouts.rs +133 -0
  494. forge3d-1.13.0/src/path_tracing/hybrid_compute/mod.rs +136 -0
  495. forge3d-1.13.0/src/path_tracing/hybrid_compute/render.rs +254 -0
  496. forge3d-1.13.0/src/path_tracing/hybrid_compute/setup.rs +71 -0
  497. forge3d-1.13.0/src/path_tracing/importance.rs +61 -0
  498. forge3d-1.13.0/src/path_tracing/io.rs +287 -0
  499. forge3d-1.13.0/src/path_tracing/lighting.rs +132 -0
  500. forge3d-1.13.0/src/path_tracing/mesh/bind_groups.rs +121 -0
  501. forge3d-1.13.0/src/path_tracing/mesh/mod.rs +14 -0
  502. forge3d-1.13.0/src/path_tracing/mesh/tests.rs +55 -0
  503. forge3d-1.13.0/src/path_tracing/mesh/types.rs +83 -0
  504. forge3d-1.13.0/src/path_tracing/mesh/upload.rs +172 -0
  505. forge3d-1.13.0/src/path_tracing/mesh/validation.rs +162 -0
  506. forge3d-1.13.0/src/path_tracing/mod.rs +41 -0
  507. forge3d-1.13.0/src/path_tracing/restir/buffers.rs +212 -0
  508. forge3d-1.13.0/src/path_tracing/restir/mod.rs +82 -0
  509. forge3d-1.13.0/src/path_tracing/restir/system.rs +132 -0
  510. forge3d-1.13.0/src/path_tracing/restir/types.rs +153 -0
  511. forge3d-1.13.0/src/path_tracing/wavefront/aov.rs +99 -0
  512. forge3d-1.13.0/src/path_tracing/wavefront/bindings.rs +71 -0
  513. forge3d-1.13.0/src/path_tracing/wavefront/control.rs +140 -0
  514. forge3d-1.13.0/src/path_tracing/wavefront/dispatch.rs +138 -0
  515. forge3d-1.13.0/src/path_tracing/wavefront/instances.rs +53 -0
  516. forge3d-1.13.0/src/path_tracing/wavefront/mod.rs +220 -0
  517. forge3d-1.13.0/src/path_tracing/wavefront/pipeline/layouts.rs +17 -0
  518. forge3d-1.13.0/src/path_tracing/wavefront/pipeline/restir.rs +109 -0
  519. forge3d-1.13.0/src/path_tracing/wavefront/pipeline/scene_layout.rs +32 -0
  520. forge3d-1.13.0/src/path_tracing/wavefront/pipeline/stages_primary.rs +94 -0
  521. forge3d-1.13.0/src/path_tracing/wavefront/pipeline/stages_secondary.rs +93 -0
  522. forge3d-1.13.0/src/path_tracing/wavefront/pipeline.rs +227 -0
  523. forge3d-1.13.0/src/path_tracing/wavefront/queues/intersect_shade.rs +74 -0
  524. forge3d-1.13.0/src/path_tracing/wavefront/queues/raygen_shadow.rs +71 -0
  525. forge3d-1.13.0/src/path_tracing/wavefront/queues/scatter_compact.rs +73 -0
  526. forge3d-1.13.0/src/path_tracing/wavefront/queues/types.rs +178 -0
  527. forge3d-1.13.0/src/path_tracing/wavefront/queues.rs +10 -0
  528. forge3d-1.13.0/src/path_tracing/wavefront/render.rs +135 -0
  529. forge3d-1.13.0/src/path_tracing/wavefront/restir.rs +167 -0
  530. forge3d-1.13.0/src/picking/bounds.rs +253 -0
  531. forge3d-1.13.0/src/picking/heightfield_ray.rs +360 -0
  532. forge3d-1.13.0/src/picking/highlight.rs +377 -0
  533. forge3d-1.13.0/src/picking/id_buffer.rs +310 -0
  534. forge3d-1.13.0/src/picking/lasso.rs +506 -0
  535. forge3d-1.13.0/src/picking/mod.rs +431 -0
  536. forge3d-1.13.0/src/picking/ray.rs +243 -0
  537. forge3d-1.13.0/src/picking/selection.rs +380 -0
  538. forge3d-1.13.0/src/picking/terrain_query.rs +350 -0
  539. forge3d-1.13.0/src/picking/tile_id.rs +329 -0
  540. forge3d-1.13.0/src/picking/unified.rs +486 -0
  541. forge3d-1.13.0/src/pipeline/hdr_offscreen/mod.rs +10 -0
  542. forge3d-1.13.0/src/pipeline/hdr_offscreen/pipeline.rs +487 -0
  543. forge3d-1.13.0/src/pipeline/hdr_offscreen/types.rs +62 -0
  544. forge3d-1.13.0/src/pipeline/mod.rs +27 -0
  545. forge3d-1.13.0/src/pipeline/normal_mapping.rs +366 -0
  546. forge3d-1.13.0/src/pipeline/pbr/bindings.rs +275 -0
  547. forge3d-1.13.0/src/pipeline/pbr/constructor.rs +188 -0
  548. forge3d-1.13.0/src/pipeline/pbr/ibl.rs +87 -0
  549. forge3d-1.13.0/src/pipeline/pbr/material.rs +270 -0
  550. forge3d-1.13.0/src/pipeline/pbr/rendering.rs +248 -0
  551. forge3d-1.13.0/src/pipeline/pbr/scene_uniforms.rs +39 -0
  552. forge3d-1.13.0/src/pipeline/pbr/shadow.rs +110 -0
  553. forge3d-1.13.0/src/pipeline/pbr/state.rs +112 -0
  554. forge3d-1.13.0/src/pipeline/pbr/textures.rs +156 -0
  555. forge3d-1.13.0/src/pipeline/pbr/tone_mapping.rs +130 -0
  556. forge3d-1.13.0/src/pipeline/pbr.rs +91 -0
  557. forge3d-1.13.0/src/pointcloud/copc.rs +364 -0
  558. forge3d-1.13.0/src/pointcloud/copc_decode.rs +138 -0
  559. forge3d-1.13.0/src/pointcloud/ept.rs +297 -0
  560. forge3d-1.13.0/src/pointcloud/error.rs +52 -0
  561. forge3d-1.13.0/src/pointcloud/mod.rs +19 -0
  562. forge3d-1.13.0/src/pointcloud/octree.rs +189 -0
  563. forge3d-1.13.0/src/pointcloud/renderer.rs +363 -0
  564. forge3d-1.13.0/src/pointcloud/traversal.rs +196 -0
  565. forge3d-1.13.0/src/py_functions/brdf/render.rs +257 -0
  566. forge3d-1.13.0/src/py_functions/brdf/wrappers.rs +184 -0
  567. forge3d-1.13.0/src/py_functions/brdf.rs +7 -0
  568. forge3d-1.13.0/src/py_functions/csm.rs +96 -0
  569. forge3d-1.13.0/src/py_functions/diagnostics.rs +277 -0
  570. forge3d-1.13.0/src/py_functions/frame.rs +107 -0
  571. forge3d-1.13.0/src/py_functions/mod.rs +17 -0
  572. forge3d-1.13.0/src/py_functions/path_tracing/gpu.rs +155 -0
  573. forge3d-1.13.0/src/py_functions/path_tracing/gpu_mesh.rs +213 -0
  574. forge3d-1.13.0/src/py_functions/path_tracing/hybrid.rs +154 -0
  575. forge3d-1.13.0/src/py_functions/path_tracing.rs +9 -0
  576. forge3d-1.13.0/src/py_functions/pointcloud.rs +39 -0
  577. forge3d-1.13.0/src/py_functions/vector/basic.rs +20 -0
  578. forge3d-1.13.0/src/py_functions/vector/demo.rs +140 -0
  579. forge3d-1.13.0/src/py_functions/vector/inputs.rs +90 -0
  580. forge3d-1.13.0/src/py_functions/vector/oit.rs +94 -0
  581. forge3d-1.13.0/src/py_functions/vector/pick.rs +205 -0
  582. forge3d-1.13.0/src/py_functions/vector/polygon_fill.rs +209 -0
  583. forge3d-1.13.0/src/py_functions/vector/readback.rs +229 -0
  584. forge3d-1.13.0/src/py_functions/vector/render.rs +197 -0
  585. forge3d-1.13.0/src/py_functions/vector.rs +20 -0
  586. forge3d-1.13.0/src/py_functions/viewer.rs +181 -0
  587. forge3d-1.13.0/src/py_module/classes.rs +45 -0
  588. forge3d-1.13.0/src/py_module/functions/camera.rs +60 -0
  589. forge3d-1.13.0/src/py_module/functions/diagnostics.rs +16 -0
  590. forge3d-1.13.0/src/py_module/functions/geometry.rs +109 -0
  591. forge3d-1.13.0/src/py_module/functions/interactive.rs +25 -0
  592. forge3d-1.13.0/src/py_module/functions/io_import.rs +47 -0
  593. forge3d-1.13.0/src/py_module/functions/license.rs +32 -0
  594. forge3d-1.13.0/src/py_module/functions/rendering.rs +43 -0
  595. forge3d-1.13.0/src/py_module/functions.rs +22 -0
  596. forge3d-1.13.0/src/py_module/mod.rs +5 -0
  597. forge3d-1.13.0/src/py_types/aov.rs +165 -0
  598. forge3d-1.13.0/src/py_types/frame.rs +166 -0
  599. forge3d-1.13.0/src/py_types/mod.rs +13 -0
  600. forge3d-1.13.0/src/py_types/picking.rs +287 -0
  601. forge3d-1.13.0/src/py_types/pointcloud.rs +97 -0
  602. forge3d-1.13.0/src/py_types/screen_space_gi.rs +104 -0
  603. forge3d-1.13.0/src/py_types/styles.rs +183 -0
  604. forge3d-1.13.0/src/render/colormap.rs +59 -0
  605. forge3d-1.13.0/src/render/instancing.rs +331 -0
  606. forge3d-1.13.0/src/render/material_set/core.rs +82 -0
  607. forge3d-1.13.0/src/render/material_set/gpu.rs +306 -0
  608. forge3d-1.13.0/src/render/material_set/gpu_helpers.rs +131 -0
  609. forge3d-1.13.0/src/render/material_set/py_api.rs +155 -0
  610. forge3d-1.13.0/src/render/material_set.rs +13 -0
  611. forge3d-1.13.0/src/render/memory_budget.rs +471 -0
  612. forge3d-1.13.0/src/render/mesh_instanced.rs +366 -0
  613. forge3d-1.13.0/src/render/mod.rs +16 -0
  614. forge3d-1.13.0/src/render/params/atmosphere.rs +222 -0
  615. forge3d-1.13.0/src/render/params/common.rs +8 -0
  616. forge3d-1.13.0/src/render/params/config/mod.rs +222 -0
  617. forge3d-1.13.0/src/render/params/config/tests/defaults.rs +53 -0
  618. forge3d-1.13.0/src/render/params/config/tests/enums.rs +272 -0
  619. forge3d-1.13.0/src/render/params/config/tests/validation/atmosphere.rs +78 -0
  620. forge3d-1.13.0/src/render/params/config/tests/validation/gi.rs +37 -0
  621. forge3d-1.13.0/src/render/params/config/tests/validation/lights.rs +137 -0
  622. forge3d-1.13.0/src/render/params/config/tests/validation/mod.rs +6 -0
  623. forge3d-1.13.0/src/render/params/config/tests/validation/shadows.rs +99 -0
  624. forge3d-1.13.0/src/render/params/config/tests.rs +7 -0
  625. forge3d-1.13.0/src/render/params/gi.rs +167 -0
  626. forge3d-1.13.0/src/render/params/lights.rs +127 -0
  627. forge3d-1.13.0/src/render/params/mod.rs +17 -0
  628. forge3d-1.13.0/src/render/params/shading.rs +110 -0
  629. forge3d-1.13.0/src/render/params/shadows.rs +193 -0
  630. forge3d-1.13.0/src/render/pbr_pass.rs +118 -0
  631. forge3d-1.13.0/src/renderer/readback.rs +120 -0
  632. forge3d-1.13.0/src/renderer.rs +52 -0
  633. forge3d-1.13.0/src/scene/core/constructor.rs +237 -0
  634. forge3d-1.13.0/src/scene/core/height.rs +80 -0
  635. forge3d-1.13.0/src/scene/core/helpers.rs +129 -0
  636. forge3d-1.13.0/src/scene/core.rs +12 -0
  637. forge3d-1.13.0/src/scene/mod.rs +165 -0
  638. forge3d-1.13.0/src/scene/postfx_cpu.rs +198 -0
  639. forge3d-1.13.0/src/scene/private_impl/clouds.rs +44 -0
  640. forge3d-1.13.0/src/scene/private_impl/effects.rs +191 -0
  641. forge3d-1.13.0/src/scene/private_impl/msaa.rs +117 -0
  642. forge3d-1.13.0/src/scene/private_impl.rs +9 -0
  643. forge3d-1.13.0/src/scene/py_api/base.rs +78 -0
  644. forge3d-1.13.0/src/scene/py_api/bloom.rs +168 -0
  645. forge3d-1.13.0/src/scene/py_api/cloud_shadows.rs +295 -0
  646. forge3d-1.13.0/src/scene/py_api/clouds.rs +174 -0
  647. forge3d-1.13.0/src/scene/py_api/dof.rs +196 -0
  648. forge3d-1.13.0/src/scene/py_api/ground_plane.rs +197 -0
  649. forge3d-1.13.0/src/scene/py_api/ibl.rs +250 -0
  650. forge3d-1.13.0/src/scene/py_api/instanced_mesh.rs +193 -0
  651. forge3d-1.13.0/src/scene/py_api/native_overlays.rs +170 -0
  652. forge3d-1.13.0/src/scene/py_api/native_text.rs +230 -0
  653. forge3d-1.13.0/src/scene/py_api/oit.rs +285 -0
  654. forge3d-1.13.0/src/scene/py_api/point_spot_lights_core.rs +169 -0
  655. forge3d-1.13.0/src/scene/py_api/point_spot_lights_query.rs +39 -0
  656. forge3d-1.13.0/src/scene/py_api/point_spot_lights_update.rs +224 -0
  657. forge3d-1.13.0/src/scene/py_api/raster_overlay.rs +225 -0
  658. forge3d-1.13.0/src/scene/py_api/rect_area_lights.rs +213 -0
  659. forge3d-1.13.0/src/scene/py_api/reflections.rs +187 -0
  660. forge3d-1.13.0/src/scene/py_api/shoreline.rs +104 -0
  661. forge3d-1.13.0/src/scene/py_api/soft_light.rs +191 -0
  662. forge3d-1.13.0/src/scene/py_api/ssgi.rs +57 -0
  663. forge3d-1.13.0/src/scene/py_api/ssr.rs +58 -0
  664. forge3d-1.13.0/src/scene/py_api/stats.rs +9 -0
  665. forge3d-1.13.0/src/scene/py_api/text_mesh.rs +237 -0
  666. forge3d-1.13.0/src/scene/py_api/water_surface.rs +226 -0
  667. forge3d-1.13.0/src/scene/py_api.rs +26 -0
  668. forge3d-1.13.0/src/scene/render_paths/helpers.rs +51 -0
  669. forge3d-1.13.0/src/scene/render_paths/png.rs +250 -0
  670. forge3d-1.13.0/src/scene/render_paths/rgba.rs +250 -0
  671. forge3d-1.13.0/src/scene/render_paths/shared.rs +72 -0
  672. forge3d-1.13.0/src/scene/render_paths.rs +10 -0
  673. forge3d-1.13.0/src/scene/ssao/constructor.rs +52 -0
  674. forge3d-1.13.0/src/scene/ssao/helpers.rs +45 -0
  675. forge3d-1.13.0/src/scene/ssao/runtime.rs +199 -0
  676. forge3d-1.13.0/src/scene/ssao/setup.rs +316 -0
  677. forge3d-1.13.0/src/scene/ssao.rs +49 -0
  678. forge3d-1.13.0/src/scene/stats.rs +104 -0
  679. forge3d-1.13.0/src/scene/texture_helpers.rs +134 -0
  680. forge3d-1.13.0/src/scene/types.rs +48 -0
  681. forge3d-1.13.0/src/sdf/hybrid.rs +459 -0
  682. forge3d-1.13.0/src/sdf/hybrid_types.rs +160 -0
  683. forge3d-1.13.0/src/sdf/mod.rs +466 -0
  684. forge3d-1.13.0/src/sdf/operations.rs +416 -0
  685. forge3d-1.13.0/src/sdf/primitives.rs +412 -0
  686. forge3d-1.13.0/src/sdf/py.rs +332 -0
  687. forge3d-1.13.0/src/shaders/accumulation_blend.wgsl +58 -0
  688. forge3d-1.13.0/src/shaders/ao/bilateral_separable.wgsl +61 -0
  689. forge3d-1.13.0/src/shaders/ao/gtao.wgsl +132 -0
  690. forge3d-1.13.0/src/shaders/ao/resolve_ao.wgsl +36 -0
  691. forge3d-1.13.0/src/shaders/ao/ssao.wgsl +105 -0
  692. forge3d-1.13.0/src/shaders/ao_from_aovs.wgsl +83 -0
  693. forge3d-1.13.0/src/shaders/bloom_blur_h.wgsl +65 -0
  694. forge3d-1.13.0/src/shaders/bloom_blur_v.wgsl +65 -0
  695. forge3d-1.13.0/src/shaders/bloom_brightpass.wgsl +61 -0
  696. forge3d-1.13.0/src/shaders/bloom_composite.wgsl +39 -0
  697. forge3d-1.13.0/src/shaders/brdf/ashikhmin_shirley.wgsl +34 -0
  698. forge3d-1.13.0/src/shaders/brdf/common.wgsl +105 -0
  699. forge3d-1.13.0/src/shaders/brdf/cook_torrance.wgsl +32 -0
  700. forge3d-1.13.0/src/shaders/brdf/disney_principled.wgsl +28 -0
  701. forge3d-1.13.0/src/shaders/brdf/dispatch.wgsl +68 -0
  702. forge3d-1.13.0/src/shaders/brdf/lambert.wgsl +8 -0
  703. forge3d-1.13.0/src/shaders/brdf/minnaert.wgsl +27 -0
  704. forge3d-1.13.0/src/shaders/brdf/oren_nayar.wgsl +26 -0
  705. forge3d-1.13.0/src/shaders/brdf/phong.wgsl +14 -0
  706. forge3d-1.13.0/src/shaders/brdf/toon.wgsl +26 -0
  707. forge3d-1.13.0/src/shaders/brdf/ward.wgsl +32 -0
  708. forge3d-1.13.0/src/shaders/brdf_tile.wgsl +984 -0
  709. forge3d-1.13.0/src/shaders/bvh_ray_query.wgsl +142 -0
  710. forge3d-1.13.0/src/shaders/bvh_refit.wgsl +173 -0
  711. forge3d-1.13.0/src/shaders/clipmap_lod_select.wgsl +177 -0
  712. forge3d-1.13.0/src/shaders/clipmap_terrain.wgsl +158 -0
  713. forge3d-1.13.0/src/shaders/cloud_shadows.wgsl +224 -0
  714. forge3d-1.13.0/src/shaders/clouds.wgsl +148 -0
  715. forge3d-1.13.0/src/shaders/csm.wgsl +359 -0
  716. forge3d-1.13.0/src/shaders/culling_compute.wgsl +161 -0
  717. forge3d-1.13.0/src/shaders/denoise_atrous.wgsl +72 -0
  718. forge3d-1.13.0/src/shaders/dof.wgsl +429 -0
  719. forge3d-1.13.0/src/shaders/extrusion.wgsl +151 -0
  720. forge3d-1.13.0/src/shaders/filters/bilateral_separable.wgsl +126 -0
  721. forge3d-1.13.0/src/shaders/filters/edge_aware_upsample.wgsl +90 -0
  722. forge3d-1.13.0/src/shaders/fog_upsample.wgsl +89 -0
  723. forge3d-1.13.0/src/shaders/gbuffer/common.wgsl +23 -0
  724. forge3d-1.13.0/src/shaders/gi/composite.wgsl +312 -0
  725. forge3d-1.13.0/src/shaders/gi/debug.wgsl +38 -0
  726. forge3d-1.13.0/src/shaders/ground_plane.wgsl +205 -0
  727. forge3d-1.13.0/src/shaders/heightfield_ao.wgsl +121 -0
  728. forge3d-1.13.0/src/shaders/heightfield_sun_vis.wgsl +151 -0
  729. forge3d-1.13.0/src/shaders/hybrid_kernel.wgsl +283 -0
  730. forge3d-1.13.0/src/shaders/hybrid_traversal.wgsl +225 -0
  731. forge3d-1.13.0/src/shaders/hzb_build.wgsl +67 -0
  732. forge3d-1.13.0/src/shaders/ibl.wgsl +396 -0
  733. forge3d-1.13.0/src/shaders/ibl_brdf.wgsl +102 -0
  734. forge3d-1.13.0/src/shaders/ibl_equirect.wgsl +79 -0
  735. forge3d-1.13.0/src/shaders/ibl_prefilter.wgsl +196 -0
  736. forge3d-1.13.0/src/shaders/lbvh_link.wgsl +182 -0
  737. forge3d-1.13.0/src/shaders/lbvh_morton.wgsl +66 -0
  738. forge3d-1.13.0/src/shaders/lens_effects.wgsl +116 -0
  739. forge3d-1.13.0/src/shaders/lighting.wgsl +386 -0
  740. forge3d-1.13.0/src/shaders/lighting_ibl.wgsl +83 -0
  741. forge3d-1.13.0/src/shaders/lights.wgsl +268 -0
  742. forge3d-1.13.0/src/shaders/line_aa.wgsl +213 -0
  743. forge3d-1.13.0/src/shaders/mesh_basic.wgsl +52 -0
  744. forge3d-1.13.0/src/shaders/mesh_instanced.wgsl +49 -0
  745. forge3d-1.13.0/src/shaders/moment_generation.wgsl +94 -0
  746. forge3d-1.13.0/src/shaders/normal_mapping_vertex.wgsl +151 -0
  747. forge3d-1.13.0/src/shaders/oit_compose.wgsl +79 -0
  748. forge3d-1.13.0/src/shaders/oit_dual_source.wgsl +179 -0
  749. forge3d-1.13.0/src/shaders/oit_dual_source_compose.wgsl +236 -0
  750. forge3d-1.13.0/src/shaders/overlays.wgsl +182 -0
  751. forge3d-1.13.0/src/shaders/pbr.wgsl +428 -0
  752. forge3d-1.13.0/src/shaders/planar_reflections.wgsl +63 -0
  753. forge3d-1.13.0/src/shaders/point_instanced.wgsl +231 -0
  754. forge3d-1.13.0/src/shaders/point_spot_lights.wgsl +400 -0
  755. forge3d-1.13.0/src/shaders/polygon_fill.wgsl +48 -0
  756. forge3d-1.13.0/src/shaders/postprocess_tonemap.wgsl +193 -0
  757. forge3d-1.13.0/src/shaders/pt_compact.wgsl +176 -0
  758. forge3d-1.13.0/src/shaders/pt_intersect.wgsl +559 -0
  759. forge3d-1.13.0/src/shaders/pt_kernel.wgsl +345 -0
  760. forge3d-1.13.0/src/shaders/pt_raygen.wgsl +222 -0
  761. forge3d-1.13.0/src/shaders/pt_restir_init.wgsl +196 -0
  762. forge3d-1.13.0/src/shaders/pt_restir_spatial.wgsl +224 -0
  763. forge3d-1.13.0/src/shaders/pt_restir_temporal.wgsl +109 -0
  764. forge3d-1.13.0/src/shaders/pt_scatter.wgsl +125 -0
  765. forge3d-1.13.0/src/shaders/pt_shade.wgsl +848 -0
  766. forge3d-1.13.0/src/shaders/pt_shadow.wgsl +294 -0
  767. forge3d-1.13.0/src/shaders/radix_sort_pairs.wgsl +146 -0
  768. forge3d-1.13.0/src/shaders/restir_spatial.wgsl +213 -0
  769. forge3d-1.13.0/src/shaders/restir_temporal.wgsl +162 -0
  770. forge3d-1.13.0/src/shaders/sdf_operations.wgsl +247 -0
  771. forge3d-1.13.0/src/shaders/sdf_primitives.wgsl +209 -0
  772. forge3d-1.13.0/src/shaders/shadow_blur.wgsl +94 -0
  773. forge3d-1.13.0/src/shaders/shadows.wgsl +816 -0
  774. forge3d-1.13.0/src/shaders/sky.wgsl +347 -0
  775. forge3d-1.13.0/src/shaders/soft_light_radius.wgsl +254 -0
  776. forge3d-1.13.0/src/shaders/ssao/common.wgsl +161 -0
  777. forge3d-1.13.0/src/shaders/ssao/composite.wgsl +26 -0
  778. forge3d-1.13.0/src/shaders/ssao/gtao.wgsl +25 -0
  779. forge3d-1.13.0/src/shaders/ssao/ssao.wgsl +25 -0
  780. forge3d-1.13.0/src/shaders/ssao.wgsl +309 -0
  781. forge3d-1.13.0/src/shaders/ssgi/composite.wgsl +31 -0
  782. forge3d-1.13.0/src/shaders/ssgi/resolve_temporal.wgsl +96 -0
  783. forge3d-1.13.0/src/shaders/ssgi/shade.wgsl +101 -0
  784. forge3d-1.13.0/src/shaders/ssgi/trace.wgsl +187 -0
  785. forge3d-1.13.0/src/shaders/ssr/composite.wgsl +68 -0
  786. forge3d-1.13.0/src/shaders/ssr/fallback_env.wgsl +123 -0
  787. forge3d-1.13.0/src/shaders/ssr/shade.wgsl +146 -0
  788. forge3d-1.13.0/src/shaders/ssr/temporal.wgsl +20 -0
  789. forge3d-1.13.0/src/shaders/ssr/trace.wgsl +274 -0
  790. forge3d-1.13.0/src/shaders/taa.wgsl +182 -0
  791. forge3d-1.13.0/src/shaders/temporal/resolve_ao.wgsl +80 -0
  792. forge3d-1.13.0/src/shaders/terrain.wgsl +359 -0
  793. forge3d-1.13.0/src/shaders/terrain_blit.wgsl +34 -0
  794. forge3d-1.13.0/src/shaders/terrain_minimal.wgsl +114 -0
  795. forge3d-1.13.0/src/shaders/terrain_pbr_pom.wgsl +3799 -0
  796. forge3d-1.13.0/src/shaders/terrain_shadow_depth.wgsl +132 -0
  797. forge3d-1.13.0/src/shaders/terrain_velocity.wgsl +69 -0
  798. forge3d-1.13.0/src/shaders/text_overlay.wgsl +64 -0
  799. forge3d-1.13.0/src/shaders/tone_map.wgsl +80 -0
  800. forge3d-1.13.0/src/shaders/tonemap.wgsl +189 -0
  801. forge3d-1.13.0/src/shaders/velocity.wgsl +85 -0
  802. forge3d-1.13.0/src/shaders/viewer_volumetrics.wgsl +530 -0
  803. forge3d-1.13.0/src/shaders/virtual_texture_feedback.wgsl +58 -0
  804. forge3d-1.13.0/src/shaders/volumetric.wgsl +462 -0
  805. forge3d-1.13.0/src/shaders/water_surface.wgsl +329 -0
  806. forge3d-1.13.0/src/shadows/blur_pass.rs +283 -0
  807. forge3d-1.13.0/src/shadows/cascade_math.rs +157 -0
  808. forge3d-1.13.0/src/shadows/csm_depth_control.rs +92 -0
  809. forge3d-1.13.0/src/shadows/csm_renderer.rs +376 -0
  810. forge3d-1.13.0/src/shadows/csm_types.rs +211 -0
  811. forge3d-1.13.0/src/shadows/manager/budget.rs +93 -0
  812. forge3d-1.13.0/src/shadows/manager/mod.rs +8 -0
  813. forge3d-1.13.0/src/shadows/manager/system.rs +435 -0
  814. forge3d-1.13.0/src/shadows/manager/types.rs +35 -0
  815. forge3d-1.13.0/src/shadows/mod.rs +26 -0
  816. forge3d-1.13.0/src/shadows/moment_pass.rs +237 -0
  817. forge3d-1.13.0/src/shadows/state.rs +315 -0
  818. forge3d-1.13.0/src/style/converters.rs +182 -0
  819. forge3d-1.13.0/src/style/expressions/comparison.rs +52 -0
  820. forge3d-1.13.0/src/style/expressions/control.rs +201 -0
  821. forge3d-1.13.0/src/style/expressions/dispatch.rs +94 -0
  822. forge3d-1.13.0/src/style/expressions/logic.rs +26 -0
  823. forge3d-1.13.0/src/style/expressions/math.rs +113 -0
  824. forge3d-1.13.0/src/style/expressions/mod.rs +52 -0
  825. forge3d-1.13.0/src/style/expressions/property.rs +27 -0
  826. forge3d-1.13.0/src/style/expressions/strings.rs +120 -0
  827. forge3d-1.13.0/src/style/expressions/tests.rs +146 -0
  828. forge3d-1.13.0/src/style/mod.rs +24 -0
  829. forge3d-1.13.0/src/style/parser.rs +193 -0
  830. forge3d-1.13.0/src/style/sprite.rs +365 -0
  831. forge3d-1.13.0/src/style/types.rs +574 -0
  832. forge3d-1.13.0/src/terrain/accumulation.rs +309 -0
  833. forge3d-1.13.0/src/terrain/analysis.rs +450 -0
  834. forge3d-1.13.0/src/terrain/bloom_processor.rs +631 -0
  835. forge3d-1.13.0/src/terrain/camera.rs +47 -0
  836. forge3d-1.13.0/src/terrain/clipmap/geomorph.rs +299 -0
  837. forge3d-1.13.0/src/terrain/clipmap/gpu_lod.rs +544 -0
  838. forge3d-1.13.0/src/terrain/clipmap/level.rs +317 -0
  839. forge3d-1.13.0/src/terrain/clipmap/mod.rs +163 -0
  840. forge3d-1.13.0/src/terrain/clipmap/py_bindings.rs +199 -0
  841. forge3d-1.13.0/src/terrain/clipmap/ring.rs +317 -0
  842. forge3d-1.13.0/src/terrain/clipmap/streaming.rs +161 -0
  843. forge3d-1.13.0/src/terrain/clipmap/vertex.rs +133 -0
  844. forge3d-1.13.0/src/terrain/cog/cache.rs +177 -0
  845. forge3d-1.13.0/src/terrain/cog/cog_reader.rs +461 -0
  846. forge3d-1.13.0/src/terrain/cog/error.rs +47 -0
  847. forge3d-1.13.0/src/terrain/cog/ifd_parser.rs +373 -0
  848. forge3d-1.13.0/src/terrain/cog/mod.rs +19 -0
  849. forge3d-1.13.0/src/terrain/cog/py_bindings.rs +177 -0
  850. forge3d-1.13.0/src/terrain/cog/range_reader.rs +213 -0
  851. forge3d-1.13.0/src/terrain/colormap_lut.rs +301 -0
  852. forge3d-1.13.0/src/terrain/globals.rs +64 -0
  853. forge3d-1.13.0/src/terrain/helpers.rs +268 -0
  854. forge3d-1.13.0/src/terrain/lights.rs +85 -0
  855. forge3d-1.13.0/src/terrain/lod.rs +319 -0
  856. forge3d-1.13.0/src/terrain/mesh.rs +260 -0
  857. forge3d-1.13.0/src/terrain/mod.rs +140 -0
  858. forge3d-1.13.0/src/terrain/page_table/common.rs +22 -0
  859. forge3d-1.13.0/src/terrain/page_table/gpu.rs +65 -0
  860. forge3d-1.13.0/src/terrain/page_table/height_loader.rs +274 -0
  861. forge3d-1.13.0/src/terrain/page_table/mod.rs +20 -0
  862. forge3d-1.13.0/src/terrain/page_table/overlay_loader.rs +280 -0
  863. forge3d-1.13.0/src/terrain/page_table/queue.rs +27 -0
  864. forge3d-1.13.0/src/terrain/page_table/readers.rs +196 -0
  865. forge3d-1.13.0/src/terrain/pipeline/bind_groups.rs +182 -0
  866. forge3d-1.13.0/src/terrain/pipeline/creation.rs +341 -0
  867. forge3d-1.13.0/src/terrain/pipeline/mod.rs +130 -0
  868. forge3d-1.13.0/src/terrain/render_params/core.rs +82 -0
  869. forge3d-1.13.0/src/terrain/render_params/decode_atmosphere.rs +116 -0
  870. forge3d-1.13.0/src/terrain/render_params/decode_core.rs +239 -0
  871. forge3d-1.13.0/src/terrain/render_params/decode_effects.rs +235 -0
  872. forge3d-1.13.0/src/terrain/render_params/decode_lighting.rs +175 -0
  873. forge3d-1.13.0/src/terrain/render_params/decode_materials.rs +178 -0
  874. forge3d-1.13.0/src/terrain/render_params/decode_postfx.rs +295 -0
  875. forge3d-1.13.0/src/terrain/render_params/native_effects.rs +149 -0
  876. forge3d-1.13.0/src/terrain/render_params/native_lighting.rs +109 -0
  877. forge3d-1.13.0/src/terrain/render_params/native_material.rs +80 -0
  878. forge3d-1.13.0/src/terrain/render_params/native_overlays.rs +42 -0
  879. forge3d-1.13.0/src/terrain/render_params/native_postfx/atmosphere.rs +75 -0
  880. forge3d-1.13.0/src/terrain/render_params/native_postfx/camera.rs +143 -0
  881. forge3d-1.13.0/src/terrain/render_params/native_postfx/quality.rs +74 -0
  882. forge3d-1.13.0/src/terrain/render_params/native_postfx/tonemap.rs +42 -0
  883. forge3d-1.13.0/src/terrain/render_params/native_postfx.rs +12 -0
  884. forge3d-1.13.0/src/terrain/render_params/parse.rs +118 -0
  885. forge3d-1.13.0/src/terrain/render_params/private_impl.rs +97 -0
  886. forge3d-1.13.0/src/terrain/render_params/py_api.rs +215 -0
  887. forge3d-1.13.0/src/terrain/render_params.rs +45 -0
  888. forge3d-1.13.0/src/terrain/renderer/aov.rs +127 -0
  889. forge3d-1.13.0/src/terrain/renderer/bind_groups/base_layouts.rs +264 -0
  890. forge3d-1.13.0/src/terrain/renderer/bind_groups/layouts.rs +170 -0
  891. forge3d-1.13.0/src/terrain/renderer/bind_groups/terrain_pass.rs +234 -0
  892. forge3d-1.13.0/src/terrain/renderer/bind_groups.rs +7 -0
  893. forge3d-1.13.0/src/terrain/renderer/constructor.rs +248 -0
  894. forge3d-1.13.0/src/terrain/renderer/core.rs +144 -0
  895. forge3d-1.13.0/src/terrain/renderer/draw.rs +567 -0
  896. forge3d-1.13.0/src/terrain/renderer/height_ao.rs +520 -0
  897. forge3d-1.13.0/src/terrain/renderer/msaa.rs +235 -0
  898. forge3d-1.13.0/src/terrain/renderer/pipeline_cache.rs +254 -0
  899. forge3d-1.13.0/src/terrain/renderer/py_api.rs +126 -0
  900. forge3d-1.13.0/src/terrain/renderer/resources.rs +613 -0
  901. forge3d-1.13.0/src/terrain/renderer/shadows/main_bind_group.rs +141 -0
  902. forge3d-1.13.0/src/terrain/renderer/shadows/render.rs +192 -0
  903. forge3d-1.13.0/src/terrain/renderer/shadows/resources.rs +254 -0
  904. forge3d-1.13.0/src/terrain/renderer/shadows/setup.rs +222 -0
  905. forge3d-1.13.0/src/terrain/renderer/shadows.rs +6 -0
  906. forge3d-1.13.0/src/terrain/renderer/uniforms.rs +100 -0
  907. forge3d-1.13.0/src/terrain/renderer/upload.rs +466 -0
  908. forge3d-1.13.0/src/terrain/renderer/viewer.rs +341 -0
  909. forge3d-1.13.0/src/terrain/renderer/water_reflection.rs +470 -0
  910. forge3d-1.13.0/src/terrain/renderer.rs +61 -0
  911. forge3d-1.13.0/src/terrain/scene.rs +7 -0
  912. forge3d-1.13.0/src/terrain/spike/analysis.rs +303 -0
  913. forge3d-1.13.0/src/terrain/spike/async_loader.rs +218 -0
  914. forge3d-1.13.0/src/terrain/spike/constructor.rs +282 -0
  915. forge3d-1.13.0/src/terrain/spike/height_mosaic.rs +276 -0
  916. forge3d-1.13.0/src/terrain/spike/overlay_stream.rs +166 -0
  917. forge3d-1.13.0/src/terrain/spike/render.rs +172 -0
  918. forge3d-1.13.0/src/terrain/spike/terrain_ops.rs +172 -0
  919. forge3d-1.13.0/src/terrain/spike/tiling.rs +169 -0
  920. forge3d-1.13.0/src/terrain/spike.rs +78 -0
  921. forge3d-1.13.0/src/terrain/stats.rs +66 -0
  922. forge3d-1.13.0/src/terrain/stream/color.rs +188 -0
  923. forge3d-1.13.0/src/terrain/stream/config.rs +17 -0
  924. forge3d-1.13.0/src/terrain/stream/height.rs +266 -0
  925. forge3d-1.13.0/src/terrain/stream/mod.rs +13 -0
  926. forge3d-1.13.0/src/terrain/stream/util.rs +63 -0
  927. forge3d-1.13.0/src/terrain/tiling.rs +497 -0
  928. forge3d-1.13.0/src/terrain/uniforms.rs +121 -0
  929. forge3d-1.13.0/src/tiles3d/b3dm.rs +527 -0
  930. forge3d-1.13.0/src/tiles3d/bounds.rs +143 -0
  931. forge3d-1.13.0/src/tiles3d/error.rs +64 -0
  932. forge3d-1.13.0/src/tiles3d/mod.rs +26 -0
  933. forge3d-1.13.0/src/tiles3d/pnts.rs +457 -0
  934. forge3d-1.13.0/src/tiles3d/renderer.rs +414 -0
  935. forge3d-1.13.0/src/tiles3d/sse.rs +167 -0
  936. forge3d-1.13.0/src/tiles3d/tile.rs +139 -0
  937. forge3d-1.13.0/src/tiles3d/tileset.rs +191 -0
  938. forge3d-1.13.0/src/tiles3d/traversal.rs +297 -0
  939. forge3d-1.13.0/src/util/debug_pattern.rs +128 -0
  940. forge3d-1.13.0/src/util/exr_write.rs +295 -0
  941. forge3d-1.13.0/src/util/image_write.rs +78 -0
  942. forge3d-1.13.0/src/util/memory_budget.rs +302 -0
  943. forge3d-1.13.0/src/util/mod.rs +10 -0
  944. forge3d-1.13.0/src/uv/mod.rs +1 -0
  945. forge3d-1.13.0/src/uv/unwrap.rs +100 -0
  946. forge3d-1.13.0/src/vector/api/core.rs +315 -0
  947. forge3d-1.13.0/src/vector/api/extrusion.rs +208 -0
  948. forge3d-1.13.0/src/vector/api/py.rs +311 -0
  949. forge3d-1.13.0/src/vector/api/tests.rs +88 -0
  950. forge3d-1.13.0/src/vector/api.rs +22 -0
  951. forge3d-1.13.0/src/vector/batch/aabb.rs +107 -0
  952. forge3d-1.13.0/src/vector/batch/frustum.rs +77 -0
  953. forge3d-1.13.0/src/vector/batch/mod.rs +295 -0
  954. forge3d-1.13.0/src/vector/batch/stats.rs +40 -0
  955. forge3d-1.13.0/src/vector/data.rs +371 -0
  956. forge3d-1.13.0/src/vector/extrusion.rs +357 -0
  957. forge3d-1.13.0/src/vector/gpu_extrusion/buffers.rs +108 -0
  958. forge3d-1.13.0/src/vector/gpu_extrusion/mod.rs +9 -0
  959. forge3d-1.13.0/src/vector/gpu_extrusion/pipeline.rs +323 -0
  960. forge3d-1.13.0/src/vector/gpu_extrusion/tests.rs +117 -0
  961. forge3d-1.13.0/src/vector/gpu_extrusion/types.rs +34 -0
  962. forge3d-1.13.0/src/vector/graph.rs +481 -0
  963. forge3d-1.13.0/src/vector/indirect.rs +619 -0
  964. forge3d-1.13.0/src/vector/layer.rs +149 -0
  965. forge3d-1.13.0/src/vector/line.rs +310 -0
  966. forge3d-1.13.0/src/vector/line_helpers.rs +142 -0
  967. forge3d-1.13.0/src/vector/line_pipeline.rs +310 -0
  968. forge3d-1.13.0/src/vector/line_types.rs +69 -0
  969. forge3d-1.13.0/src/vector/mod.rs +41 -0
  970. forge3d-1.13.0/src/vector/oit/blend.rs +106 -0
  971. forge3d-1.13.0/src/vector/oit/mod.rs +212 -0
  972. forge3d-1.13.0/src/vector/oit/pipeline.rs +176 -0
  973. forge3d-1.13.0/src/vector/point/atlas.rs +101 -0
  974. forge3d-1.13.0/src/vector/point/instance.rs +190 -0
  975. forge3d-1.13.0/src/vector/point/mod.rs +8 -0
  976. forge3d-1.13.0/src/vector/point/pipeline.rs +343 -0
  977. forge3d-1.13.0/src/vector/point/renderer/config.rs +120 -0
  978. forge3d-1.13.0/src/vector/point/renderer/draw.rs +95 -0
  979. forge3d-1.13.0/src/vector/point/renderer/init.rs +162 -0
  980. forge3d-1.13.0/src/vector/point/renderer/mod.rs +37 -0
  981. forge3d-1.13.0/src/vector/point/renderer/pipelines.rs +199 -0
  982. forge3d-1.13.0/src/vector/point/renderer/tests.rs +107 -0
  983. forge3d-1.13.0/src/vector/point/renderer/upload.rs +107 -0
  984. forge3d-1.13.0/src/vector/point/types.rs +193 -0
  985. forge3d-1.13.0/src/vector/polygon.rs +501 -0
  986. forge3d-1.13.0/src/viewer/camera_controller.rs +274 -0
  987. forge3d-1.13.0/src/viewer/cmd/capture_handlers.rs +53 -0
  988. forge3d-1.13.0/src/viewer/cmd/effects_command.rs +86 -0
  989. forge3d-1.13.0/src/viewer/cmd/gi_command.rs +525 -0
  990. forge3d-1.13.0/src/viewer/cmd/gi_handlers.rs +334 -0
  991. forge3d-1.13.0/src/viewer/cmd/handler.rs +36 -0
  992. forge3d-1.13.0/src/viewer/cmd/ipc_command.rs +194 -0
  993. forge3d-1.13.0/src/viewer/cmd/labels_command.rs +266 -0
  994. forge3d-1.13.0/src/viewer/cmd/legacy_handler.rs +14 -0
  995. forge3d-1.13.0/src/viewer/cmd/mod.rs +25 -0
  996. forge3d-1.13.0/src/viewer/cmd/pointcloud_command.rs +102 -0
  997. forge3d-1.13.0/src/viewer/cmd/scene_command.rs +352 -0
  998. forge3d-1.13.0/src/viewer/cmd/scene_handlers.rs +62 -0
  999. forge3d-1.13.0/src/viewer/cmd/ssao_handlers.rs +104 -0
  1000. forge3d-1.13.0/src/viewer/cmd/ssgi_handlers.rs +95 -0
  1001. forge3d-1.13.0/src/viewer/cmd/terrain_command.rs +296 -0
  1002. forge3d-1.13.0/src/viewer/cmd/vector_overlay_command.rs +210 -0
  1003. forge3d-1.13.0/src/viewer/event_loop/cmd_parse_init.rs +305 -0
  1004. forge3d-1.13.0/src/viewer/event_loop/ipc_state.rs +124 -0
  1005. forge3d-1.13.0/src/viewer/event_loop/mod.rs +17 -0
  1006. forge3d-1.13.0/src/viewer/event_loop/runner.rs +387 -0
  1007. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/helpers.rs +89 -0
  1008. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/atmosphere.rs +175 -0
  1009. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/ibl.rs +40 -0
  1010. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/lighting.rs +68 -0
  1011. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/misc.rs +36 -0
  1012. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/mod.rs +14 -0
  1013. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/environment/parse.rs +11 -0
  1014. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/gi/core.rs +106 -0
  1015. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/gi/mod.rs +13 -0
  1016. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/gi/ssao.rs +116 -0
  1017. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/gi/ssgi.rs +80 -0
  1018. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/gi/ssr.rs +25 -0
  1019. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser/render.rs +117 -0
  1020. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/parser.rs +18 -0
  1021. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/spawn.rs +32 -0
  1022. forge3d-1.13.0/src/viewer/event_loop/stdin_reader/tests.rs +55 -0
  1023. forge3d-1.13.0/src/viewer/event_loop/stdin_reader.rs +8 -0
  1024. forge3d-1.13.0/src/viewer/hud.rs +219 -0
  1025. forge3d-1.13.0/src/viewer/image_analysis.rs +243 -0
  1026. forge3d-1.13.0/src/viewer/init/composite_init.rs +154 -0
  1027. forge3d-1.13.0/src/viewer/init/device_init.rs +96 -0
  1028. forge3d-1.13.0/src/viewer/init/fallback_init.rs +53 -0
  1029. forge3d-1.13.0/src/viewer/init/fog_init.rs +511 -0
  1030. forge3d-1.13.0/src/viewer/init/gbuffer_init.rs +282 -0
  1031. forge3d-1.13.0/src/viewer/init/gi_baseline_init.rs +293 -0
  1032. forge3d-1.13.0/src/viewer/init/lit_init.rs +280 -0
  1033. forge3d-1.13.0/src/viewer/init/mod.rs +22 -0
  1034. forge3d-1.13.0/src/viewer/init/sky_init.rs +134 -0
  1035. forge3d-1.13.0/src/viewer/init/viewer_new.rs +470 -0
  1036. forge3d-1.13.0/src/viewer/input/keyboard.rs +79 -0
  1037. forge3d-1.13.0/src/viewer/input/mod.rs +53 -0
  1038. forge3d-1.13.0/src/viewer/input/mouse.rs +81 -0
  1039. forge3d-1.13.0/src/viewer/input/viewer_input.rs +330 -0
  1040. forge3d-1.13.0/src/viewer/ipc/mod.rs +84 -0
  1041. forge3d-1.13.0/src/viewer/ipc/protocol/defaults.rs +71 -0
  1042. forge3d-1.13.0/src/viewer/ipc/protocol/mod.rs +12 -0
  1043. forge3d-1.13.0/src/viewer/ipc/protocol/parse.rs +5 -0
  1044. forge3d-1.13.0/src/viewer/ipc/protocol/payloads.rs +230 -0
  1045. forge3d-1.13.0/src/viewer/ipc/protocol/request.rs +116 -0
  1046. forge3d-1.13.0/src/viewer/ipc/protocol/response.rs +86 -0
  1047. forge3d-1.13.0/src/viewer/ipc/protocol/translate/core.rs +73 -0
  1048. forge3d-1.13.0/src/viewer/ipc/protocol/translate/labels.rs +148 -0
  1049. forge3d-1.13.0/src/viewer/ipc/protocol/translate/mod.rs +29 -0
  1050. forge3d-1.13.0/src/viewer/ipc/protocol/translate/overlays.rs +105 -0
  1051. forge3d-1.13.0/src/viewer/ipc/protocol/translate/terrain.rs +246 -0
  1052. forge3d-1.13.0/src/viewer/ipc/server.rs +238 -0
  1053. forge3d-1.13.0/src/viewer/mod.rs +230 -0
  1054. forge3d-1.13.0/src/viewer/p5/ao.rs +348 -0
  1055. forge3d-1.13.0/src/viewer/p5/cornell.rs +196 -0
  1056. forge3d-1.13.0/src/viewer/p5/gbuffer_dump.rs +402 -0
  1057. forge3d-1.13.0/src/viewer/p5/gi_ablation.rs +247 -0
  1058. forge3d-1.13.0/src/viewer/p5/gi_verification.rs +285 -0
  1059. forge3d-1.13.0/src/viewer/p5/mod.rs +15 -0
  1060. forge3d-1.13.0/src/viewer/p5/ssgi_cornell.rs +321 -0
  1061. forge3d-1.13.0/src/viewer/p5/ssgi_temporal.rs +154 -0
  1062. forge3d-1.13.0/src/viewer/p5/ssr_glossy.rs +322 -0
  1063. forge3d-1.13.0/src/viewer/p5/ssr_helpers.rs +58 -0
  1064. forge3d-1.13.0/src/viewer/p5/ssr_scene_impl.rs +203 -0
  1065. forge3d-1.13.0/src/viewer/p5/ssr_thickness.rs +132 -0
  1066. forge3d-1.13.0/src/viewer/pointcloud/load.rs +157 -0
  1067. forge3d-1.13.0/src/viewer/pointcloud/pointcloud.wgsl +127 -0
  1068. forge3d-1.13.0/src/viewer/pointcloud/shader.rs +1 -0
  1069. forge3d-1.13.0/src/viewer/pointcloud/state.rs +305 -0
  1070. forge3d-1.13.0/src/viewer/pointcloud/types.rs +44 -0
  1071. forge3d-1.13.0/src/viewer/pointcloud.rs +9 -0
  1072. forge3d-1.13.0/src/viewer/render/bind_groups.rs +50 -0
  1073. forge3d-1.13.0/src/viewer/render/fog.rs +84 -0
  1074. forge3d-1.13.0/src/viewer/render/lighting.rs +38 -0
  1075. forge3d-1.13.0/src/viewer/render/main_loop/finalize.rs +116 -0
  1076. forge3d-1.13.0/src/viewer/render/main_loop/frame_setup.rs +241 -0
  1077. forge3d-1.13.0/src/viewer/render/main_loop/geometry/fog.rs +221 -0
  1078. forge3d-1.13.0/src/viewer/render/main_loop/geometry/fog_dispatch.rs +229 -0
  1079. forge3d-1.13.0/src/viewer/render/main_loop/geometry/mod.rs +100 -0
  1080. forge3d-1.13.0/src/viewer/render/main_loop/geometry/pass.rs +213 -0
  1081. forge3d-1.13.0/src/viewer/render/main_loop/postfx.rs +342 -0
  1082. forge3d-1.13.0/src/viewer/render/main_loop/secondary.rs +396 -0
  1083. forge3d-1.13.0/src/viewer/render/main_loop.rs +42 -0
  1084. forge3d-1.13.0/src/viewer/render/mod.rs +13 -0
  1085. forge3d-1.13.0/src/viewer/render/sky.rs +120 -0
  1086. forge3d-1.13.0/src/viewer/render/snapshot.rs +53 -0
  1087. forge3d-1.13.0/src/viewer/render/textures.rs +98 -0
  1088. forge3d-1.13.0/src/viewer/state/fog_state.rs +85 -0
  1089. forge3d-1.13.0/src/viewer/state/gi_state.rs +58 -0
  1090. forge3d-1.13.0/src/viewer/state/gpu_state.rs +22 -0
  1091. forge3d-1.13.0/src/viewer/state/labels.rs +80 -0
  1092. forge3d-1.13.0/src/viewer/state/mesh_upload.rs +93 -0
  1093. forge3d-1.13.0/src/viewer/state/mod.rs +16 -0
  1094. forge3d-1.13.0/src/viewer/state/resize.rs +270 -0
  1095. forge3d-1.13.0/src/viewer/state/scene_state.rs +71 -0
  1096. forge3d-1.13.0/src/viewer/state/sky_state.rs +59 -0
  1097. forge3d-1.13.0/src/viewer/state/viewer_helpers/core.rs +51 -0
  1098. forge3d-1.13.0/src/viewer/state/viewer_helpers/gi/geometry.rs +194 -0
  1099. forge3d-1.13.0/src/viewer/state/viewer_helpers/gi/reexecute.rs +246 -0
  1100. forge3d-1.13.0/src/viewer/state/viewer_helpers/gi.rs +2 -0
  1101. forge3d-1.13.0/src/viewer/state/viewer_helpers/ibl.rs +71 -0
  1102. forge3d-1.13.0/src/viewer/state/viewer_helpers/readback.rs +117 -0
  1103. forge3d-1.13.0/src/viewer/state/viewer_helpers.rs +8 -0
  1104. forge3d-1.13.0/src/viewer/terrain/denoise.rs +259 -0
  1105. forge3d-1.13.0/src/viewer/terrain/dof/dof.wgsl +202 -0
  1106. forge3d-1.13.0/src/viewer/terrain/dof/pass/execute.rs +230 -0
  1107. forge3d-1.13.0/src/viewer/terrain/dof/pass/setup.rs +193 -0
  1108. forge3d-1.13.0/src/viewer/terrain/dof/pass.rs +19 -0
  1109. forge3d-1.13.0/src/viewer/terrain/dof/shader.rs +1 -0
  1110. forge3d-1.13.0/src/viewer/terrain/dof/types.rs +39 -0
  1111. forge3d-1.13.0/src/viewer/terrain/dof.rs +9 -0
  1112. forge3d-1.13.0/src/viewer/terrain/mod.rs +30 -0
  1113. forge3d-1.13.0/src/viewer/terrain/motion_blur.rs +344 -0
  1114. forge3d-1.13.0/src/viewer/terrain/overlay/config.rs +111 -0
  1115. forge3d-1.13.0/src/viewer/terrain/overlay/sampling.rs +87 -0
  1116. forge3d-1.13.0/src/viewer/terrain/overlay/stack/composite.rs +203 -0
  1117. forge3d-1.13.0/src/viewer/terrain/overlay/stack/core.rs +248 -0
  1118. forge3d-1.13.0/src/viewer/terrain/overlay/stack.rs +18 -0
  1119. forge3d-1.13.0/src/viewer/terrain/overlay/tests.rs +18 -0
  1120. forge3d-1.13.0/src/viewer/terrain/overlay.rs +9 -0
  1121. forge3d-1.13.0/src/viewer/terrain/pbr_renderer.rs +605 -0
  1122. forge3d-1.13.0/src/viewer/terrain/post_process.rs +445 -0
  1123. forge3d-1.13.0/src/viewer/terrain/render/helpers.rs +504 -0
  1124. forge3d-1.13.0/src/viewer/terrain/render/motion_blur.rs +368 -0
  1125. forge3d-1.13.0/src/viewer/terrain/render/offscreen/effects.rs +154 -0
  1126. forge3d-1.13.0/src/viewer/terrain/render/offscreen/mod.rs +78 -0
  1127. forge3d-1.13.0/src/viewer/terrain/render/offscreen/scene.rs +304 -0
  1128. forge3d-1.13.0/src/viewer/terrain/render/offscreen/setup.rs +266 -0
  1129. forge3d-1.13.0/src/viewer/terrain/render/screen/effects.rs +204 -0
  1130. forge3d-1.13.0/src/viewer/terrain/render/screen/mod.rs +60 -0
  1131. forge3d-1.13.0/src/viewer/terrain/render/screen/resources.rs +78 -0
  1132. forge3d-1.13.0/src/viewer/terrain/render/screen/scene.rs +263 -0
  1133. forge3d-1.13.0/src/viewer/terrain/render/screen/setup.rs +249 -0
  1134. forge3d-1.13.0/src/viewer/terrain/render/shadow.rs +177 -0
  1135. forge3d-1.13.0/src/viewer/terrain/render.rs +113 -0
  1136. forge3d-1.13.0/src/viewer/terrain/scene/core.rs +457 -0
  1137. forge3d-1.13.0/src/viewer/terrain/scene/overlays.rs +294 -0
  1138. forge3d-1.13.0/src/viewer/terrain/scene/pbr_compute.rs +461 -0
  1139. forge3d-1.13.0/src/viewer/terrain/scene/pipeline_init.rs +553 -0
  1140. forge3d-1.13.0/src/viewer/terrain/scene/terrain_load.rs +265 -0
  1141. forge3d-1.13.0/src/viewer/terrain/scene.rs +194 -0
  1142. forge3d-1.13.0/src/viewer/terrain/shader.rs +109 -0
  1143. forge3d-1.13.0/src/viewer/terrain/shader_pbr/terrain_pbr.wgsl +690 -0
  1144. forge3d-1.13.0/src/viewer/terrain/shader_pbr.rs +4 -0
  1145. forge3d-1.13.0/src/viewer/terrain/vector_overlay/core.rs +164 -0
  1146. forge3d-1.13.0/src/viewer/terrain/vector_overlay/id_buffer.rs +276 -0
  1147. forge3d-1.13.0/src/viewer/terrain/vector_overlay/pipelines.rs +654 -0
  1148. forge3d-1.13.0/src/viewer/terrain/vector_overlay.rs +553 -0
  1149. forge3d-1.13.0/src/viewer/terrain/volumetrics.rs +287 -0
  1150. forge3d-1.13.0/src/viewer/util.rs +51 -0
  1151. forge3d-1.13.0/src/viewer/viewer_analysis.rs +84 -0
  1152. forge3d-1.13.0/src/viewer/viewer_cmd_parse.rs +334 -0
  1153. forge3d-1.13.0/src/viewer/viewer_config.rs +95 -0
  1154. forge3d-1.13.0/src/viewer/viewer_constants.rs +24 -0
  1155. forge3d-1.13.0/src/viewer/viewer_enums/commands.rs +131 -0
  1156. forge3d-1.13.0/src/viewer/viewer_enums/config.rs +149 -0
  1157. forge3d-1.13.0/src/viewer/viewer_enums/modes.rs +45 -0
  1158. forge3d-1.13.0/src/viewer/viewer_enums.rs +18 -0
  1159. forge3d-1.13.0/src/viewer/viewer_image_utils.rs +178 -0
  1160. forge3d-1.13.0/src/viewer/viewer_render_helpers.rs +149 -0
  1161. forge3d-1.13.0/src/viewer/viewer_ssr_scene.rs +113 -0
  1162. forge3d-1.13.0/src/viewer/viewer_struct.rs +257 -0
  1163. forge3d-1.13.0/src/viewer/viewer_types.rs +182 -0
  1164. forge3d-1.13.0/tests/__init__.py +2 -0
  1165. forge3d-1.13.0/tests/_license_test_keys.py +33 -0
  1166. forge3d-1.13.0/tests/_ssim.py +115 -0
  1167. forge3d-1.13.0/tests/conftest.py +199 -0
  1168. forge3d-1.13.0/tests/fixtures/mapbox_streets_v8.json +157 -0
  1169. forge3d-1.13.0/tests/helpers_namespace.py +9 -0
  1170. forge3d-1.13.0/tests/requirements.txt +13 -0
  1171. forge3d-1.13.0/tests/smoke_test.py +21 -0
  1172. forge3d-1.13.0/tests/test_3dtiles_parse.py +254 -0
  1173. forge3d-1.13.0/tests/test_3dtiles_sse.py +194 -0
  1174. forge3d-1.13.0/tests/test_accumulation_aa.py +287 -0
  1175. forge3d-1.13.0/tests/test_animation_mvp.py +323 -0
  1176. forge3d-1.13.0/tests/test_aov.py +276 -0
  1177. forge3d-1.13.0/tests/test_api_contracts.py +1545 -0
  1178. forge3d-1.13.0/tests/test_blender_quality_integration.py +369 -0
  1179. forge3d-1.13.0/tests/test_bloom_effect.py +343 -0
  1180. forge3d-1.13.0/tests/test_bloom_execute_behavior.py +210 -0
  1181. forge3d-1.13.0/tests/test_buildings_cityjson.py +302 -0
  1182. forge3d-1.13.0/tests/test_buildings_extrude.py +245 -0
  1183. forge3d-1.13.0/tests/test_buildings_materials.py +185 -0
  1184. forge3d-1.13.0/tests/test_buildings_roof.py +157 -0
  1185. forge3d-1.13.0/tests/test_bundle_cli.py +130 -0
  1186. forge3d-1.13.0/tests/test_bundle_render.py +84 -0
  1187. forge3d-1.13.0/tests/test_bundle_roundtrip.py +197 -0
  1188. forge3d-1.13.0/tests/test_cam_phi_wiring.py +194 -0
  1189. forge3d-1.13.0/tests/test_clipmap_structure.py +262 -0
  1190. forge3d-1.13.0/tests/test_cog_streaming.py +465 -0
  1191. forge3d-1.13.0/tests/test_copc_laz_fixture.py +8 -0
  1192. forge3d-1.13.0/tests/test_crs_auto.py +86 -0
  1193. forge3d-1.13.0/tests/test_crs_reproject.py +160 -0
  1194. forge3d-1.13.0/tests/test_datasets.py +105 -0
  1195. forge3d-1.13.0/tests/test_dem_loading.py +172 -0
  1196. forge3d-1.13.0/tests/test_denoise_settings.py +252 -0
  1197. forge3d-1.13.0/tests/test_dof.py +228 -0
  1198. forge3d-1.13.0/tests/test_export_projection.py +249 -0
  1199. forge3d-1.13.0/tests/test_export_svg.py +481 -0
  1200. forge3d-1.13.0/tests/test_exr_output.py +173 -0
  1201. forge3d-1.13.0/tests/test_fog_offline.py +327 -0
  1202. forge3d-1.13.0/tests/test_geomorph_seams.py +243 -0
  1203. forge3d-1.13.0/tests/test_gpu_lod_selection.py +266 -0
  1204. forge3d-1.13.0/tests/test_heightfield_ao.py +340 -0
  1205. forge3d-1.13.0/tests/test_install_compatible_wheel.py +89 -0
  1206. forge3d-1.13.0/tests/test_install_smoke.py +98 -0
  1207. forge3d-1.13.0/tests/test_jitter_sequence.py +211 -0
  1208. forge3d-1.13.0/tests/test_labels_pybindings.py +8 -0
  1209. forge3d-1.13.0/tests/test_lens_effects.py +226 -0
  1210. forge3d-1.13.0/tests/test_license.py +182 -0
  1211. forge3d-1.13.0/tests/test_lighting_alignment.py +197 -0
  1212. forge3d-1.13.0/tests/test_lighting_preset.py +246 -0
  1213. forge3d-1.13.0/tests/test_map_plate_layout.py +298 -0
  1214. forge3d-1.13.0/tests/test_mapbox_streets_fixture.py +157 -0
  1215. forge3d-1.13.0/tests/test_mesh_tbn.py +8 -0
  1216. forge3d-1.13.0/tests/test_motion_blur.py +264 -0
  1217. forge3d-1.13.0/tests/test_motion_blur_runner.py +140 -0
  1218. forge3d-1.13.0/tests/test_motion_vectors.py +156 -0
  1219. forge3d-1.13.0/tests/test_oit_transparency.py +153 -0
  1220. forge3d-1.13.0/tests/test_p7_preset_cli_merge.py +47 -0
  1221. forge3d-1.13.0/tests/test_perspective_probe.py +210 -0
  1222. forge3d-1.13.0/tests/test_perspective_projection.py +95 -0
  1223. forge3d-1.13.0/tests/test_picking_ipc.py +199 -0
  1224. forge3d-1.13.0/tests/test_picking_premium.py +91 -0
  1225. forge3d-1.13.0/tests/test_png_io_fallback.py +99 -0
  1226. forge3d-1.13.0/tests/test_pointcloud_gpu_integration.py +86 -0
  1227. forge3d-1.13.0/tests/test_pointcloud_lod.py +232 -0
  1228. forge3d-1.13.0/tests/test_pro_gating.py +117 -0
  1229. forge3d-1.13.0/tests/test_shadow_techniques.py +355 -0
  1230. forge3d-1.13.0/tests/test_ssgi_ssr_wiring.py +231 -0
  1231. forge3d-1.13.0/tests/test_style_parser.py +343 -0
  1232. forge3d-1.13.0/tests/test_style_pixel_diff.py +205 -0
  1233. forge3d-1.13.0/tests/test_style_render.py +184 -0
  1234. forge3d-1.13.0/tests/test_style_visual.py +422 -0
  1235. forge3d-1.13.0/tests/test_sun_ephemeris.py +364 -0
  1236. forge3d-1.13.0/tests/test_sun_visibility.py +345 -0
  1237. forge3d-1.13.0/tests/test_taa_convergence.py +245 -0
  1238. forge3d-1.13.0/tests/test_taa_toggle.py +248 -0
  1239. forge3d-1.13.0/tests/test_terrain_analysis_api.py +8 -0
  1240. forge3d-1.13.0/tests/test_terrain_demo.py +362 -0
  1241. forge3d-1.13.0/tests/test_terrain_demo_cli_smoke.py +53 -0
  1242. forge3d-1.13.0/tests/test_terrain_demo_preset_integration.py +34 -0
  1243. forge3d-1.13.0/tests/test_terrain_materials.py +404 -0
  1244. forge3d-1.13.0/tests/test_terrain_overlay_stack.py +258 -0
  1245. forge3d-1.13.0/tests/test_terrain_render_color_space.py +245 -0
  1246. forge3d-1.13.0/tests/test_terrain_renderer.py +233 -0
  1247. forge3d-1.13.0/tests/test_terrain_viewer_pbr.py +470 -0
  1248. forge3d-1.13.0/tests/test_tonemap_lut.py +384 -0
  1249. forge3d-1.13.0/tests/test_vector_drape.py +380 -0
  1250. forge3d-1.13.0/tests/test_vector_overlay_drape.py +266 -0
  1251. forge3d-1.13.0/tests/test_vector_overlay_rendering.py +284 -0
  1252. forge3d-1.13.0/tests/test_viewer_ipc.py +349 -0
  1253. forge3d-1.13.0/tests/test_volumetrics_sky.py +320 -0
  1254. forge3d-1.13.0/tests/test_widgets.py +118 -0
  1255. forge3d-1.13.0/tests/validate_terrain_output.py +245 -0
  1256. forge3d-1.13.0/tests/validate_terrain_p4.py +874 -0
  1257. forge3d-1.13.0/tests/verify_terrain_pbr_pom_shader.py +171 -0
@@ -0,0 +1,3 @@
1
+ *.tif filter=lfs diff=lfs merge=lfs -text
2
+ assets/highres.png filter=lfs diff=lfs merge=lfs -text
3
+ assets/swiss-legend.png filter=lfs diff=lfs merge=lfs -text
@@ -0,0 +1,391 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ CARGO_TERM_COLOR: always
12
+ RUST_BACKTRACE: 1
13
+
14
+ jobs:
15
+ # ============================================================================
16
+ # Rust Tests (cargo test)
17
+ # ============================================================================
18
+ test-rust:
19
+ name: Test Rust (${{ matrix.os }})
20
+ runs-on: ${{ matrix.os }}
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ os: [windows-latest, ubuntu-latest, macos-latest]
25
+ include:
26
+ - os: windows-latest
27
+ target: x86_64-pc-windows-msvc
28
+ - os: ubuntu-latest
29
+ target: x86_64-unknown-linux-gnu
30
+ - os: macos-latest
31
+ target: x86_64-apple-darwin
32
+
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+
36
+ - name: Install Rust toolchain
37
+ uses: dtolnay/rust-toolchain@stable
38
+ with:
39
+ targets: ${{ matrix.target }}
40
+
41
+ - name: Cache Rust dependencies
42
+ uses: actions/cache@v3
43
+ with:
44
+ path: |
45
+ ~/.cargo/bin/
46
+ ~/.cargo/registry/index/
47
+ ~/.cargo/registry/cache/
48
+ ~/.cargo/git/db/
49
+ target/
50
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
51
+ restore-keys: |
52
+ ${{ runner.os }}-cargo-
53
+
54
+ - name: Install system dependencies (Linux)
55
+ if: matrix.os == 'ubuntu-latest'
56
+ run: |
57
+ sudo apt-get update
58
+ sudo apt-get install -y libvulkan-dev
59
+
60
+ - name: Run cargo check
61
+ run: cargo check --workspace --features default,async_readback,copc_laz,weighted-oit,enable-pbr,enable-ibl,enable-csm,enable-tbn,enable-normal-mapping,enable-hdr-offscreen,enable-render-bundles,enable-renderer-config,enable-memory-pools,enable-staging-rings
62
+
63
+ - name: Run cargo test (skip GPU-dependent tests)
64
+ run: cargo test --workspace --features default,async_readback,copc_laz,weighted-oit,enable-pbr,enable-ibl,enable-csm,enable-tbn,enable-normal-mapping,enable-hdr-offscreen,enable-render-bundles,enable-renderer-config,enable-memory-pools,enable-staging-rings -- --test-threads=1 --skip gpu_extrusion --skip brdf_tile
65
+ env:
66
+ RUST_TEST_THREADS: 1
67
+
68
+ - name: Run cargo clippy
69
+ run: cargo clippy --workspace --features default,async_readback,copc_laz,weighted-oit,enable-pbr,enable-ibl,enable-csm,enable-tbn,enable-normal-mapping,enable-hdr-offscreen,enable-render-bundles,enable-renderer-config,enable-memory-pools,enable-staging-rings -- -D warnings
70
+
71
+ # ============================================================================
72
+ # Interactive Viewer E2E (macOS only; optional)
73
+ # ============================================================================
74
+ test-interactive-viewer-macos:
75
+ name: Interactive Viewer (macOS)
76
+ needs: build-wheels
77
+ runs-on: macos-latest
78
+ timeout-minutes: 15
79
+
80
+ steps:
81
+ - uses: actions/checkout@v4
82
+
83
+ - name: Set up Python
84
+ uses: actions/setup-python@v4
85
+ with:
86
+ python-version: '3.11'
87
+
88
+ - name: Install Rust toolchain
89
+ uses: dtolnay/rust-toolchain@stable
90
+
91
+ - name: Download macOS wheel artifact
92
+ uses: actions/download-artifact@v4
93
+ with:
94
+ name: wheels-macos
95
+ path: dist/
96
+
97
+ - name: Install wheel and pytest
98
+ run: |
99
+ python scripts/install_compatible_wheel.py dist
100
+ pip install pytest numpy
101
+
102
+ - name: Run interactive viewer tests
103
+ env:
104
+ FORGE3D_NO_BOOTSTRAP: '1'
105
+ RUN_INTERACTIVE_VIEWER_CI: '1'
106
+ run: |
107
+ pytest tests/ -m interactive_viewer -v --tb=short
108
+ continue-on-error: true
109
+
110
+ # ============================================================================
111
+ # Python Wheel Build (maturin)
112
+ # ============================================================================
113
+ build-wheels:
114
+ name: Build Wheel (${{ matrix.platform.os }})
115
+ runs-on: ${{ matrix.platform.runner }}
116
+ strategy:
117
+ fail-fast: false
118
+ matrix:
119
+ platform:
120
+ - os: windows
121
+ runner: windows-latest
122
+ target: x86_64-pc-windows-msvc
123
+ maturin_args: --release --out dist
124
+ - os: linux
125
+ runner: ubuntu-latest
126
+ target: x86_64-unknown-linux-gnu
127
+ maturin_args: --release --out dist -i python3.10
128
+ - os: macos
129
+ runner: macos-latest
130
+ target: universal2-apple-darwin
131
+ maturin_args: --release --out dist
132
+ - os: linux-arm
133
+ runner: ubuntu-latest
134
+ target: aarch64-unknown-linux-gnu
135
+ maturin_args: --release --out dist -i python3.10
136
+
137
+ steps:
138
+ - uses: actions/checkout@v4
139
+
140
+ - name: Build wheel
141
+ uses: PyO3/maturin-action@v1
142
+ with:
143
+ target: ${{ matrix.platform.target }}
144
+ args: ${{ matrix.platform.maturin_args }}
145
+ manylinux: auto
146
+
147
+ - name: Upload wheel artifact
148
+ uses: actions/upload-artifact@v4
149
+ with:
150
+ name: wheels-${{ matrix.platform.os }}
151
+ path: dist/*.whl
152
+
153
+ # ============================================================================
154
+ # Python Tests (pytest)
155
+ # ============================================================================
156
+ test-python:
157
+ name: Test Python (${{ matrix.os }})
158
+ needs: build-wheels
159
+ runs-on: ${{ matrix.os }}
160
+ strategy:
161
+ fail-fast: false
162
+ matrix:
163
+ os: [windows-latest, ubuntu-latest, macos-latest]
164
+ python-version: ['3.10', '3.11', '3.12', '3.13']
165
+
166
+ steps:
167
+ - uses: actions/checkout@v4
168
+
169
+ - name: Set up Python ${{ matrix.python-version }}
170
+ uses: actions/setup-python@v4
171
+ with:
172
+ python-version: ${{ matrix.python-version }}
173
+
174
+ - name: Download wheel artifact
175
+ uses: actions/download-artifact@v4
176
+ with:
177
+ name: wheels-${{ runner.os == 'Windows' && 'windows' || runner.os == 'Linux' && 'linux' || 'macos' }}
178
+ path: dist/
179
+
180
+ - name: Install wheel and test dependencies
181
+ run: |
182
+ python scripts/install_compatible_wheel.py dist
183
+ pip install pytest numpy pillow
184
+
185
+ - name: Run install smoke tests
186
+ env:
187
+ FORGE3D_NO_BOOTSTRAP: '1'
188
+ run: pytest tests/test_install_smoke.py -v --tb=short
189
+
190
+ - name: Run license tests
191
+ env:
192
+ FORGE3D_NO_BOOTSTRAP: '1'
193
+ run: pytest tests/test_license.py -v --tb=short
194
+
195
+ - name: Run pytest (skip viewer/GPU tests)
196
+ env:
197
+ FORGE3D_NO_BOOTSTRAP: '1'
198
+ run: pytest tests/ -v --tb=short -m "not viewer and not interactive_viewer and not offscreen"
199
+
200
+ # ============================================================================
201
+ # Linux aarch64 Wheel Smoke Test (QEMU)
202
+ # ============================================================================
203
+ test-python-linux-arm:
204
+ name: Install Smoke (linux-arm)
205
+ needs: build-wheels
206
+ runs-on: ubuntu-latest
207
+
208
+ steps:
209
+ - uses: actions/checkout@v4
210
+
211
+ - name: Set up QEMU
212
+ uses: docker/setup-qemu-action@v3
213
+ with:
214
+ platforms: arm64
215
+
216
+ - name: Download linux-arm wheel artifact
217
+ uses: actions/download-artifact@v4
218
+ with:
219
+ name: wheels-linux-arm
220
+ path: dist/
221
+
222
+ - name: Run smoke test in arm64 container
223
+ shell: bash
224
+ run: |
225
+ docker run --rm --platform linux/arm64/v8 \
226
+ -v "${PWD}:/workspace" \
227
+ -w /workspace \
228
+ python:3.11-slim \
229
+ bash -lc "python -m pip install -U pip pytest && python /workspace/scripts/install_compatible_wheel.py /workspace/dist && FORGE3D_NO_BOOTSTRAP=1 pytest tests/test_install_smoke.py -v --tb=short"
230
+
231
+ # ============================================================================
232
+ # Golden Image Tests
233
+ # ============================================================================
234
+ test-golden-images:
235
+ name: Golden Images (${{ matrix.os }})
236
+ needs: build-wheels
237
+ runs-on: ${{ matrix.os }}
238
+ strategy:
239
+ fail-fast: false
240
+ matrix:
241
+ os: [windows-latest, ubuntu-latest] # Skip macOS for golden images (no GPU in CI)
242
+
243
+ steps:
244
+ - uses: actions/checkout@v4
245
+
246
+ - name: Set up Python
247
+ uses: actions/setup-python@v4
248
+ with:
249
+ python-version: '3.11'
250
+
251
+ - name: Download wheel artifact
252
+ uses: actions/download-artifact@v4
253
+ with:
254
+ name: wheels-${{ runner.os == 'Windows' && 'windows' || 'linux' }}
255
+ path: dist/
256
+
257
+ - name: Install wheel
258
+ run: python scripts/install_compatible_wheel.py dist
259
+
260
+ - name: Generate golden images
261
+ run: python scripts/generate_golden_images.py --output-dir tests/golden
262
+ continue-on-error: true
263
+
264
+ - name: Run golden image tests
265
+ run: cargo test --test golden_images -- --ignored --test-threads=1
266
+ continue-on-error: true
267
+
268
+ - name: Upload golden image artifacts on failure
269
+ if: failure()
270
+ uses: actions/upload-artifact@v4
271
+ with:
272
+ name: golden-image-diffs-${{ matrix.os }}
273
+ path: tests/golden/diff/
274
+
275
+ # ============================================================================
276
+ # Example Sanity Tests (640×360 renders within 90s)
277
+ # ============================================================================
278
+ test-examples:
279
+ name: Example Sanity (${{ matrix.os }})
280
+ needs: build-wheels
281
+ runs-on: ${{ matrix.os }}
282
+ timeout-minutes: 5
283
+ strategy:
284
+ fail-fast: false
285
+ matrix:
286
+ os: [windows-latest, ubuntu-latest]
287
+ example:
288
+ - name: "Triangle"
289
+ script: "examples/triangle_png.py"
290
+ args: "--width 640 --height 360"
291
+ - name: "Terrain Single Tile"
292
+ script: "examples/terrain_single_tile.py"
293
+ args: ""
294
+ - name: "PNG NumPy Roundtrip"
295
+ script: "examples/png_numpy_roundtrip.py"
296
+ args: ""
297
+
298
+ steps:
299
+ - uses: actions/checkout@v4
300
+
301
+ - name: Set up Python
302
+ uses: actions/setup-python@v4
303
+ with:
304
+ python-version: '3.11'
305
+
306
+ - name: Download wheel artifact
307
+ uses: actions/download-artifact@v4
308
+ with:
309
+ name: wheels-${{ runner.os == 'Windows' && 'windows' || 'linux' }}
310
+ path: dist/
311
+
312
+ - name: Install wheel and dependencies
313
+ run: |
314
+ python scripts/install_compatible_wheel.py dist
315
+ pip install numpy pillow
316
+
317
+ - name: "Run example: ${{ matrix.example.name }}"
318
+ run: python ${{ matrix.example.script }} ${{ matrix.example.args }}
319
+ timeout-minutes: 2
320
+
321
+ - name: Verify output exists
322
+ shell: bash
323
+ run: |
324
+ # Check that at least one PNG was created
325
+ if ls *.png 1> /dev/null 2>&1; then
326
+ echo "✓ PNG output found"
327
+ else
328
+ echo "✗ No PNG output found"
329
+ exit 1
330
+ fi
331
+
332
+ # ============================================================================
333
+ # Documentation Build
334
+ # ============================================================================
335
+ build-docs:
336
+ name: Build Documentation
337
+ runs-on: ubuntu-latest
338
+
339
+ steps:
340
+ - uses: actions/checkout@v4
341
+
342
+ - name: Install Rust toolchain
343
+ uses: dtolnay/rust-toolchain@stable
344
+
345
+ - name: Build Rust docs
346
+ run: cargo doc --workspace --features default,async_readback,copc_laz,weighted-oit,enable-pbr,enable-ibl,enable-csm,enable-tbn,enable-normal-mapping,enable-hdr-offscreen,enable-render-bundles,enable-renderer-config,enable-memory-pools,enable-staging-rings --no-deps
347
+
348
+ - name: Set up Python
349
+ uses: actions/setup-python@v4
350
+ with:
351
+ python-version: '3.11'
352
+
353
+ - name: Install Sphinx dependencies
354
+ run: |
355
+ pip install sphinx sphinx-rtd-theme myst-parser numpy pillow ipywidgets pooch
356
+
357
+ - name: Build Sphinx docs
358
+ run: |
359
+ cd docs
360
+ make html
361
+
362
+ - name: Upload docs artifact
363
+ uses: actions/upload-artifact@v4
364
+ with:
365
+ name: documentation
366
+ path: |
367
+ target/doc/
368
+ docs/_build/html/
369
+
370
+ # ============================================================================
371
+ # Final Status
372
+ # ============================================================================
373
+ ci-success:
374
+ name: CI Success
375
+ needs: [test-rust, build-wheels, test-python, test-python-linux-arm, build-docs]
376
+ runs-on: ubuntu-latest
377
+ if: always()
378
+
379
+ steps:
380
+ - name: Check all jobs succeeded
381
+ run: |
382
+ if [ "${{ needs.test-rust.result }}" != "success" ] || \
383
+ [ "${{ needs.build-wheels.result }}" != "success" ] || \
384
+ [ "${{ needs.test-python.result }}" != "success" ] || \
385
+ [ "${{ needs.test-python-linux-arm.result }}" != "success" ] || \
386
+ [ "${{ needs.build-docs.result }}" != "success" ]; then
387
+ echo "❌ CI failed"
388
+ exit 1
389
+ else
390
+ echo "✅ CI passed"
391
+ fi
@@ -0,0 +1,47 @@
1
+ name: Public Funnel Monitor
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 * * * *"
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ public-funnel:
13
+ name: Public Funnel Reachability
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.11"
23
+
24
+ - name: Check homepage, docs, Pro path, PyPI, and dataset URLs
25
+ run: python scripts/check_public_funnel.py
26
+
27
+ source-links:
28
+ name: Source Link Check
29
+ runs-on: ubuntu-latest
30
+
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - name: Check shipped links
35
+ uses: lycheeverse/lychee-action@v2
36
+ with:
37
+ fail: true
38
+ args: >-
39
+ --no-progress
40
+ --verbose
41
+ README.md
42
+ pyproject.toml
43
+ python/forge3d/datasets.py
44
+ docs/gallery/05-3d-buildings.md
45
+ docs/gallery/10-map-plate.md
46
+ docs/tutorials/gis-track/03-build-a-map-plate.md
47
+ docs/tutorials/gis-track/04-3d-buildings.md
@@ -0,0 +1,232 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main, develop]
6
+ push:
7
+ tags:
8
+ - 'v*'
9
+ workflow_dispatch:
10
+ inputs:
11
+ dry_run:
12
+ description: Dry run (build artifacts only, do not publish)
13
+ required: false
14
+ default: 'true'
15
+ type: choice
16
+ options:
17
+ - 'true'
18
+ - 'false'
19
+
20
+ permissions:
21
+ contents: read
22
+ id-token: write
23
+
24
+ jobs:
25
+ build-wheels:
26
+ name: Build Wheel (${{ matrix.platform.os }})
27
+ runs-on: ${{ matrix.platform.runner }}
28
+ strategy:
29
+ fail-fast: false
30
+ matrix:
31
+ platform:
32
+ - os: windows
33
+ runner: windows-latest
34
+ target: x86_64-pc-windows-msvc
35
+ maturin_args: --release --out dist
36
+ - os: linux
37
+ runner: ubuntu-latest
38
+ target: x86_64-unknown-linux-gnu
39
+ maturin_args: --release --out dist -i python3.10
40
+ - os: linux-arm
41
+ runner: ubuntu-latest
42
+ target: aarch64-unknown-linux-gnu
43
+ maturin_args: --release --out dist -i python3.10
44
+ - os: macos
45
+ runner: macos-latest
46
+ target: universal2-apple-darwin
47
+ maturin_args: --release --out dist
48
+
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+
52
+ - name: Build wheel
53
+ uses: PyO3/maturin-action@v1
54
+ with:
55
+ target: ${{ matrix.platform.target }}
56
+ args: ${{ matrix.platform.maturin_args }}
57
+ manylinux: auto
58
+
59
+ - name: Upload wheel artifact
60
+ uses: actions/upload-artifact@v4
61
+ with:
62
+ name: wheels-${{ matrix.platform.os }}
63
+ path: dist/*.whl
64
+
65
+ build-sdist:
66
+ name: Build sdist
67
+ runs-on: ubuntu-latest
68
+
69
+ steps:
70
+ - uses: actions/checkout@v4
71
+
72
+ - name: Set up Python
73
+ uses: actions/setup-python@v5
74
+ with:
75
+ python-version: '3.11'
76
+
77
+ - name: Install maturin
78
+ run: python -m pip install --upgrade maturin
79
+
80
+ - name: Build sdist
81
+ run: maturin sdist --out dist
82
+
83
+ - name: Upload sdist artifact
84
+ uses: actions/upload-artifact@v4
85
+ with:
86
+ name: sdist
87
+ path: dist/*.tar.gz
88
+
89
+ smoke-test:
90
+ name: Smoke Test (${{ matrix.platform.os }})
91
+ needs: [build-wheels]
92
+ runs-on: ${{ matrix.platform.runner }}
93
+ strategy:
94
+ fail-fast: false
95
+ matrix:
96
+ platform:
97
+ - os: windows
98
+ runner: windows-latest
99
+ artifact: wheels-windows
100
+ - os: linux
101
+ runner: ubuntu-latest
102
+ artifact: wheels-linux
103
+ - os: linux-arm
104
+ runner: ubuntu-latest
105
+ artifact: wheels-linux-arm
106
+ - os: macos
107
+ runner: macos-latest
108
+ artifact: wheels-macos
109
+
110
+ steps:
111
+ - uses: actions/checkout@v4
112
+
113
+ - name: Set up Python
114
+ if: matrix.platform.os != 'linux-arm'
115
+ uses: actions/setup-python@v5
116
+ with:
117
+ python-version: '3.11'
118
+
119
+ - name: Download wheel artifact
120
+ uses: actions/download-artifact@v4
121
+ with:
122
+ name: ${{ matrix.platform.artifact }}
123
+ path: dist/
124
+
125
+ - name: Install wheel and run smoke tests
126
+ if: matrix.platform.os != 'linux-arm'
127
+ env:
128
+ FORGE3D_NO_BOOTSTRAP: '1'
129
+ run: |
130
+ python -m pip install --upgrade pip pytest
131
+ python scripts/install_compatible_wheel.py dist
132
+ pytest tests/test_install_smoke.py -v --tb=short
133
+
134
+ - name: Set up QEMU
135
+ if: matrix.platform.os == 'linux-arm'
136
+ uses: docker/setup-qemu-action@v3
137
+ with:
138
+ platforms: arm64
139
+
140
+ - name: Run smoke test in arm64 container
141
+ if: matrix.platform.os == 'linux-arm'
142
+ shell: bash
143
+ run: |
144
+ docker run --rm --platform linux/arm64/v8 \
145
+ -v "${PWD}:/workspace" \
146
+ -w /workspace \
147
+ python:3.11-slim \
148
+ bash -lc "python -m pip install -U pip pytest && python /workspace/scripts/install_compatible_wheel.py /workspace/dist && FORGE3D_NO_BOOTSTRAP=1 pytest tests/test_install_smoke.py -v --tb=short"
149
+
150
+ release-assets:
151
+ name: Upload Release Assets
152
+ if: startsWith(github.ref, 'refs/tags/v')
153
+ needs: [build-wheels, build-sdist, smoke-test]
154
+ runs-on: ubuntu-latest
155
+ permissions:
156
+ contents: write
157
+
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+
161
+ - name: Set up Python
162
+ uses: actions/setup-python@v5
163
+ with:
164
+ python-version: '3.11'
165
+
166
+ - name: Validate tag matches pyproject version
167
+ run: |
168
+ python -c "import tomllib; from pathlib import Path; version = tomllib.loads(Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version']; tag = '${{ github.ref_name }}'.lstrip('v'); assert version == tag, f'{version}!={tag}'"
169
+
170
+ - name: Download wheel artifacts
171
+ uses: actions/download-artifact@v4
172
+ with:
173
+ pattern: wheels-*
174
+ merge-multiple: true
175
+ path: dist/
176
+
177
+ - name: Download sdist artifact
178
+ uses: actions/download-artifact@v4
179
+ with:
180
+ name: sdist
181
+ path: dist/
182
+
183
+ - name: Create GitHub release assets
184
+ uses: softprops/action-gh-release@v2
185
+ with:
186
+ files: dist/*
187
+ generate_release_notes: true
188
+
189
+ publish:
190
+ name: Publish
191
+ if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.dry_run == 'false')
192
+ needs: [build-wheels, build-sdist, smoke-test]
193
+ runs-on: ubuntu-latest
194
+ permissions:
195
+ contents: read
196
+ id-token: write
197
+ environment:
198
+ name: pypi
199
+ url: https://pypi.org/project/forge3d/
200
+
201
+ steps:
202
+ - uses: actions/checkout@v4
203
+
204
+ - name: Set up Python
205
+ uses: actions/setup-python@v5
206
+ with:
207
+ python-version: '3.11'
208
+
209
+ - name: Validate tag matches pyproject version
210
+ if: startsWith(github.ref, 'refs/tags/v')
211
+ run: |
212
+ python -c "import tomllib; from pathlib import Path; version = tomllib.loads(Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version']; tag = '${{ github.ref_name }}'.lstrip('v'); assert version == tag, f'{version}!={tag}'"
213
+
214
+ - name: Download wheel artifacts
215
+ uses: actions/download-artifact@v4
216
+ with:
217
+ pattern: wheels-*
218
+ merge-multiple: true
219
+ path: dist/
220
+
221
+ - name: Download sdist artifact
222
+ uses: actions/download-artifact@v4
223
+ with:
224
+ name: sdist
225
+ path: dist/
226
+
227
+ - name: Publish to PyPI
228
+ uses: pypa/gh-action-pypi-publish@release/v1
229
+ with:
230
+ packages-dir: dist/
231
+ user: __token__
232
+ password: ${{ secrets.PYPI_API_TOKEN }}