ernie-renderer 0.2.0.dev5__tar.gz → 0.2.0.dev13__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.

Potentially problematic release.


This version of ernie-renderer might be problematic. Click here for more details.

Files changed (209) hide show
  1. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.dockerignore +2 -1
  2. ernie_renderer-0.2.0.dev13/.gitattributes +15 -0
  3. ernie_renderer-0.2.0.dev13/.github/scripts/coverage_badge.py +37 -0
  4. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.github/workflows/ci.yml +107 -7
  5. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.gitignore +4 -2
  6. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.pre-commit-config.yaml +5 -0
  7. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/CMakeLists.txt +21 -2
  8. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/CMakePresets.json +28 -5
  9. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/PKG-INFO +3 -2
  10. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/README.md +1 -0
  11. ernie_renderer-0.2.0.dev13/cmake/ErnieFetch.cmake +41 -0
  12. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/ErnieTesting.cmake +10 -0
  13. ernie_renderer-0.2.0.dev13/cmake/third_party/bc7enc.cmake +26 -0
  14. ernie_renderer-0.2.0.dev13/cmake/third_party/dlpack.cmake +13 -0
  15. ernie_renderer-0.2.0.dev13/cmake/third_party/glm.cmake +13 -0
  16. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/googletest.cmake +3 -6
  17. ernie_renderer-0.2.0.dev13/cmake/third_party/json.cmake +12 -0
  18. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/nanobind.cmake +2 -4
  19. ernie_renderer-0.2.0.dev13/cmake/third_party/openexr.cmake +71 -0
  20. ernie_renderer-0.2.0.dev13/cmake/third_party/stb.cmake +28 -0
  21. ernie_renderer-0.2.0.dev13/cmake/third_party/tracy.cmake +25 -0
  22. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/volk.cmake +2 -6
  23. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/vulkan_headers.cmake +3 -6
  24. ernie_renderer-0.2.0.dev13/docs/README.md +7 -0
  25. ernie_renderer-0.2.0.dev13/docs/index.md +1 -0
  26. ernie_renderer-0.2.0.dev13/docs/requirements.txt +1 -0
  27. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/CMakeLists.txt +1 -1
  28. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/app/main.cpp +1 -1
  29. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/CMakeLists.txt +1 -1
  30. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.cpp +4 -4
  31. ernie_renderer-0.2.0.dev13/ernie/io/CMakeLists.txt +22 -0
  32. ernie_renderer-0.2.0.dev13/ernie/io/ies.cpp +229 -0
  33. ernie_renderer-0.2.0.dev13/ernie/io/ies.h +119 -0
  34. ernie_renderer-0.2.0.dev13/ernie/io/image.cpp +312 -0
  35. ernie_renderer-0.2.0.dev13/ernie/io/image.h +144 -0
  36. ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.cpp +651 -0
  37. ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.h +176 -0
  38. ernie_renderer-0.2.0.dev13/ernie/io/raster.cpp +1352 -0
  39. ernie_renderer-0.2.0.dev13/ernie/io/raster.h +593 -0
  40. ernie_renderer-0.2.0.dev13/ernie/io/texture.cpp +1478 -0
  41. ernie_renderer-0.2.0.dev13/ernie/io/texture.h +406 -0
  42. ernie_renderer-0.2.0.dev13/ernie/physics/CMakeLists.txt +14 -0
  43. ernie_renderer-0.2.0.dev13/ernie/physics/astronomy.cpp +142 -0
  44. ernie_renderer-0.2.0.dev13/ernie/physics/astronomy.h +110 -0
  45. ernie_renderer-0.2.0.dev13/ernie/physics/atmosphere.cpp +451 -0
  46. ernie_renderer-0.2.0.dev13/ernie/physics/atmosphere.h +330 -0
  47. ernie_renderer-0.2.0.dev13/ernie/physics/cloud.cpp +580 -0
  48. ernie_renderer-0.2.0.dev13/ernie/physics/cloud.h +223 -0
  49. ernie_renderer-0.2.0.dev13/ernie/physics/constants.h +26 -0
  50. ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_library.cpp +48 -0
  51. ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_library.h +47 -0
  52. ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_table.h +5596 -0
  53. ernie_renderer-0.2.0.dev13/ernie/physics/regolith.cpp +302 -0
  54. ernie_renderer-0.2.0.dev13/ernie/physics/regolith.h +160 -0
  55. ernie_renderer-0.2.0.dev13/ernie/physics/scattering.cpp +371 -0
  56. ernie_renderer-0.2.0.dev13/ernie/physics/scattering.h +284 -0
  57. ernie_renderer-0.2.0.dev13/ernie/physics/solar.cpp +38 -0
  58. ernie_renderer-0.2.0.dev13/ernie/physics/solar.h +30 -0
  59. ernie_renderer-0.2.0.dev13/ernie/physics/solar_table.h +3069 -0
  60. ernie_renderer-0.2.0.dev13/ernie/physics/spectrum.cpp +546 -0
  61. ernie_renderer-0.2.0.dev13/ernie/physics/spectrum.h +270 -0
  62. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/CMakeLists.txt +5 -1
  63. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/module.cpp +1 -1
  64. ernie_renderer-0.2.0.dev13/ernie/util/CMakeLists.txt +28 -0
  65. ernie_renderer-0.2.0.dev13/ernie/util/bytes.h +78 -0
  66. ernie_renderer-0.2.0.dev13/ernie/util/disk_cache.cpp +94 -0
  67. ernie_renderer-0.2.0.dev13/ernie/util/disk_cache.h +59 -0
  68. ernie_renderer-0.2.0.dev13/ernie/util/file.cpp +40 -0
  69. ernie_renderer-0.2.0.dev13/ernie/util/file.h +26 -0
  70. ernie_renderer-0.2.0.dev13/ernie/util/linear_algebra.h +125 -0
  71. ernie_renderer-0.2.0.dev13/ernie/util/log.cpp +65 -0
  72. ernie_renderer-0.2.0.dev13/ernie/util/log.h +40 -0
  73. ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.cpp +98 -0
  74. ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.h +39 -0
  75. ernie_renderer-0.2.0.dev13/ernie/util/math.h +97 -0
  76. ernie_renderer-0.2.0.dev13/ernie/util/noise.cpp +160 -0
  77. ernie_renderer-0.2.0.dev13/ernie/util/noise.h +87 -0
  78. ernie_renderer-0.2.0.dev13/ernie/util/numbers.h +41 -0
  79. ernie_renderer-0.2.0.dev13/ernie/util/parallel.h +38 -0
  80. ernie_renderer-0.2.0.dev13/ernie/util/profile.h +45 -0
  81. ernie_renderer-0.2.0.dev13/ernie/util/profile_report.cpp +242 -0
  82. ernie_renderer-0.2.0.dev13/ernie/util/profile_report.h +110 -0
  83. ernie_renderer-0.2.0.dev13/ernie/util/profiler.cpp +189 -0
  84. ernie_renderer-0.2.0.dev13/ernie/util/profiler.h +125 -0
  85. ernie_renderer-0.2.0.dev13/ernie/util/random.h +126 -0
  86. ernie_renderer-0.2.0.dev13/ernie/util/tensor.cpp +330 -0
  87. ernie_renderer-0.2.0.dev13/ernie/util/tensor.h +249 -0
  88. ernie_renderer-0.2.0.dev13/ernie/util/text.h +100 -0
  89. ernie_renderer-0.2.0.dev13/ernie/util/version.cpp +37 -0
  90. ernie_renderer-0.2.0.dev13/ernie/util/version.h +26 -0
  91. ernie_renderer-0.2.0.dev13/ernie/util/worker_pool.h +97 -0
  92. ernie_renderer-0.2.0.dev13/mkdocs.yml +21 -0
  93. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/pyproject.toml +7 -5
  94. ernie_renderer-0.2.0.dev13/tests/CMakeLists.txt +78 -0
  95. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/README.md +5 -0
  96. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/make_exr.py +110 -0
  97. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgb_float_zip.exr +0 -0
  98. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgba_half_window.exr +0 -0
  99. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/y_half_zips.exr +0 -0
  100. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/README.md +4 -0
  101. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/downlight_quadrant.ies +14 -0
  102. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/floodlight_type_b.ies +16 -0
  103. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/lamp.tilt +4 -0
  104. ernie_renderer-0.2.0.dev13/tests/fixtures/images/grey16.png +0 -0
  105. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/README.md +13 -0
  106. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
  107. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
  108. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
  109. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
  110. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/README.md +8 -0
  111. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
  112. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_raw.tif +0 -0
  113. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
  114. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
  115. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
  116. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
  117. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
  118. ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/cube.nvdb +0 -0
  119. ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/make_nvdb.py +38 -0
  120. ernie_renderer-0.2.0.dev13/tests/io/ies_test.cpp +223 -0
  121. ernie_renderer-0.2.0.dev13/tests/io/image_test.cpp +310 -0
  122. ernie_renderer-0.2.0.dev13/tests/io/nanovdb_test.cpp +190 -0
  123. ernie_renderer-0.2.0.dev13/tests/io/raster_test.cpp +501 -0
  124. ernie_renderer-0.2.0.dev13/tests/io/texture_test.cpp +755 -0
  125. ernie_renderer-0.2.0.dev13/tests/physics/astronomy_test.cpp +66 -0
  126. ernie_renderer-0.2.0.dev13/tests/physics/atmosphere_test.cpp +239 -0
  127. ernie_renderer-0.2.0.dev13/tests/physics/cloud_test.cpp +201 -0
  128. ernie_renderer-0.2.0.dev13/tests/physics/reflectance_library_test.cpp +50 -0
  129. ernie_renderer-0.2.0.dev13/tests/physics/regolith_test.cpp +110 -0
  130. ernie_renderer-0.2.0.dev13/tests/physics/scattering_test.cpp +266 -0
  131. ernie_renderer-0.2.0.dev13/tests/physics/solar_test.cpp +47 -0
  132. ernie_renderer-0.2.0.dev13/tests/physics/spectrum_test.cpp +178 -0
  133. ernie_renderer-0.2.0.dev13/tests/util/bytes_test.cpp +59 -0
  134. ernie_renderer-0.2.0.dev13/tests/util/disk_cache_test.cpp +65 -0
  135. ernie_renderer-0.2.0.dev13/tests/util/file_test.cpp +41 -0
  136. ernie_renderer-0.2.0.dev13/tests/util/linear_algebra_test.cpp +52 -0
  137. ernie_renderer-0.2.0.dev13/tests/util/log_test.cpp +35 -0
  138. ernie_renderer-0.2.0.dev13/tests/util/mapped_file_test.cpp +50 -0
  139. ernie_renderer-0.2.0.dev13/tests/util/math_test.cpp +66 -0
  140. ernie_renderer-0.2.0.dev13/tests/util/noise_test.cpp +85 -0
  141. ernie_renderer-0.2.0.dev13/tests/util/parallel_test.cpp +29 -0
  142. ernie_renderer-0.2.0.dev13/tests/util/profile_report_test.cpp +120 -0
  143. ernie_renderer-0.2.0.dev13/tests/util/profiler_test.cpp +62 -0
  144. ernie_renderer-0.2.0.dev13/tests/util/random_test.cpp +140 -0
  145. ernie_renderer-0.2.0.dev13/tests/util/tensor_test.cpp +236 -0
  146. ernie_renderer-0.2.0.dev13/tests/util/text_test.cpp +42 -0
  147. ernie_renderer-0.2.0.dev13/tests/util/version_test.cpp +26 -0
  148. ernie_renderer-0.2.0.dev13/tests/util/worker_pool_test.cpp +69 -0
  149. ernie_renderer-0.2.0.dev13/third_party/CMakeLists.txt +20 -0
  150. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSE +201 -0
  151. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/Apache-2.0.txt +208 -0
  152. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/BSD-3-clause.txt +96 -0
  153. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/MIT.txt +47 -0
  154. ernie_renderer-0.2.0.dev13/third_party/basisu/NOTICE +15 -0
  155. ernie_renderer-0.2.0.dev13/third_party/basisu/README.md +3 -0
  156. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu.h +821 -0
  157. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_cfgs.inl +648 -0
  158. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_hdr_core.h +211 -0
  159. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_helpers.h +5335 -0
  160. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers.h +4354 -0
  161. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers_impl.h +818 -0
  162. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_dds_transcoder.inl +1372 -0
  163. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_etc1_mods.inl +258 -0
  164. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_file_headers.h +264 -0
  165. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_idct.h +1446 -0
  166. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.cpp +45962 -0
  167. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.h +1786 -0
  168. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_internal.h +4044 -0
  169. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +481 -0
  170. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +481 -0
  171. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +481 -0
  172. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +481 -0
  173. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +49 -0
  174. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +481 -0
  175. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +494 -0
  176. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +494 -0
  177. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +481 -0
  178. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +481 -0
  179. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_uastc.h +289 -0
  180. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.h +1467 -0
  181. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +1515 -0
  182. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/LICENSE +30 -0
  183. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd.h +3198 -0
  184. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd_errors.h +107 -0
  185. ernie_renderer-0.2.0.dev13/third_party/nanovdb/LICENSE +176 -0
  186. ernie_renderer-0.2.0.dev13/third_party/nanovdb/PNanoVDB.h +3590 -0
  187. ernie_renderer-0.2.0.dev5/.gitattributes +0 -2
  188. ernie_renderer-0.2.0.dev5/ernie/core/CMakeLists.txt +0 -5
  189. ernie_renderer-0.2.0.dev5/ernie/core/version.cpp +0 -12
  190. ernie_renderer-0.2.0.dev5/ernie/core/version.h +0 -14
  191. ernie_renderer-0.2.0.dev5/ernie/io/CMakeLists.txt +0 -3
  192. ernie_renderer-0.2.0.dev5/ernie/physics/CMakeLists.txt +0 -3
  193. ernie_renderer-0.2.0.dev5/ernie/test/CMakeLists.txt +0 -29
  194. ernie_renderer-0.2.0.dev5/ernie/test/core/version_test.cpp +0 -14
  195. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.clang-format +0 -0
  196. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.clang-tidy +0 -0
  197. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.gersemirc +0 -0
  198. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.github/scripts/install-lavapipe-windows.sh +0 -0
  199. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/Dockerfile +0 -0
  200. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/LICENSE +0 -0
  201. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/ErniePackaging.cmake +0 -0
  202. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/app/CMakeLists.txt +0 -0
  203. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.h +0 -0
  204. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/graph/CMakeLists.txt +0 -0
  205. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/ernie/__init__.py +0 -0
  206. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/render/CMakeLists.txt +0 -0
  207. {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/scene/CMakeLists.txt +0 -0
  208. {ernie_renderer-0.2.0.dev5/ernie/test → ernie_renderer-0.2.0.dev13/tests}/device/vulkan_devices_test.cpp +0 -0
  209. {ernie_renderer-0.2.0.dev5/ernie/test → ernie_renderer-0.2.0.dev13/tests}/python/test_package.py +0 -0
@@ -3,4 +3,5 @@ build
3
3
  dist
4
4
  .deps
5
5
  .venv
6
- docs/requirements
6
+ requirements
7
+ site
@@ -0,0 +1,15 @@
1
+ * text=auto eol=lf
2
+ *.sh text eol=lf
3
+
4
+ # Binary formats, never normalised or diffed as text whatever their bytes look like.
5
+ *.dds binary
6
+ *.exr binary
7
+ *.img binary
8
+ *.jpeg binary
9
+ *.jpg binary
10
+ *.ktx2 binary
11
+ *.nvdb binary
12
+ *.png binary
13
+ *.tif binary
14
+ *.tiff binary
15
+ *.vdb binary
@@ -0,0 +1,37 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ """Writes a shields.io endpoint badge and a job summary from gcovr's JSON summary."""
3
+
4
+ import json
5
+ import os
6
+ import sys
7
+ from pathlib import Path
8
+
9
+
10
+ def badge_colour(percent: float) -> str:
11
+ if percent >= 80.0:
12
+ return "brightgreen"
13
+ if percent >= 70.0:
14
+ return "green"
15
+ if percent >= 60.0:
16
+ return "yellow"
17
+ return "red"
18
+
19
+
20
+ def main(report: Path) -> None:
21
+ summary = json.loads((report / "summary.json").read_text())
22
+ lines = summary["line_percent"]
23
+ branches = summary["branch_percent"]
24
+ badge = {
25
+ "schemaVersion": 1,
26
+ "label": "coverage",
27
+ "message": f"{lines:.1f}%",
28
+ "color": badge_colour(lines),
29
+ }
30
+ (report / "badge.json").write_text(json.dumps(badge))
31
+ if step_summary := os.environ.get("GITHUB_STEP_SUMMARY"):
32
+ with open(step_summary, "a") as out:
33
+ out.write(f"### Coverage\n\nLines {lines:.1f}%, branches {branches:.1f}%\n")
34
+
35
+
36
+ if __name__ == "__main__":
37
+ main(Path(sys.argv[1]))
@@ -80,13 +80,12 @@ jobs:
80
80
  # MSVC on the path for the Ninja generator.
81
81
  - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
82
82
  if: runner.os == 'Windows'
83
- # Fetched dependencies' sources, keyed on their pins. Compiled objects are not cached.
83
+ # Fetched dependencies' sources (ERNIE_DEPS_DIR), keyed on their pins; they are built in the
84
+ # build tree, so compiled objects are not cached.
84
85
  - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
85
86
  with:
86
- path: |
87
- .deps/*-src
88
- .deps/*-subbuild
89
- key: deps-${{ runner.os }}-${{ hashFiles('cmake/third_party/**') }}
87
+ path: .deps
88
+ key: deps-${{ runner.os }}-${{ hashFiles('cmake/ErnieFetch.cmake', 'cmake/third_party/**') }}
90
89
  - name: Configure
91
90
  shell: bash
92
91
  run: >
@@ -156,19 +155,120 @@ jobs:
156
155
  - name: Test
157
156
  run: ctest --preset ci -j4
158
157
 
158
+ # Line and branch coverage of the C++ library from every test on Linux and lavapipe.
159
+ coverage:
160
+ needs: version
161
+ runs-on: ubuntu-24.04
162
+ timeout-minutes: 60
163
+ env:
164
+ ERNIE_TEST_REQUIRE_VULKAN: "1"
165
+ steps:
166
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
167
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
168
+ with:
169
+ python-version: "3.12"
170
+ - run: python -m pip install nanobind ninja pytest gcovr
171
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
172
+ with:
173
+ path: .deps
174
+ key: deps-${{ runner.os }}-${{ hashFiles('cmake/ErnieFetch.cmake', 'cmake/third_party/**') }}
175
+ - name: Install lavapipe
176
+ run: |
177
+ sudo apt-get update
178
+ sudo apt-get install -y mesa-vulkan-drivers libvulkan1
179
+ icd=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
180
+ echo "VK_DRIVER_FILES=$icd" >> "$GITHUB_ENV"
181
+ echo "VK_ICD_FILENAMES=$icd" >> "$GITHUB_ENV"
182
+ - name: Configure
183
+ run: >
184
+ cmake --preset coverage
185
+ "-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
186
+ -DERNIE_TEST_PYTHON=python
187
+ - name: Build
188
+ run: cmake --build --preset coverage --parallel 4
189
+ - name: Test
190
+ run: ctest --preset coverage -j4
191
+ - name: Report
192
+ run: |
193
+ mkdir -p coverage
194
+ gcovr --root . --filter 'ernie/' --exclude '.*_table\.h' \
195
+ --object-directory build/coverage \
196
+ --html-details coverage/index.html --json-summary coverage/summary.json --print-summary
197
+ python .github/scripts/coverage_badge.py coverage
198
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
199
+ with:
200
+ name: coverage
201
+ path: coverage
202
+ retention-days: 14
203
+
204
+ # The documentation, built strictly so broken links and warnings fail.
205
+ docs:
206
+ runs-on: ubuntu-24.04
207
+ timeout-minutes: 10
208
+ steps:
209
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
210
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
211
+ with:
212
+ python-version: "3.12"
213
+ - run: python -m pip install -r docs/requirements.txt
214
+ - run: mkdocs build --strict
215
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
216
+ with:
217
+ name: docs
218
+ path: site
219
+ retention-days: 14
220
+
221
+ # The project site on GitHub Pages, from main: the docs, with the coverage report and its badge
222
+ # under coverage/.
223
+ # The site follows main whenever its docs build, so a failing test elsewhere never takes it down;
224
+ # the coverage report is included when the coverage job passed.
225
+ pages:
226
+ needs: [docs, coverage]
227
+ if: >
228
+ always() && github.event_name == 'push' && github.ref == 'refs/heads/main'
229
+ && needs.docs.result == 'success'
230
+ runs-on: ubuntu-24.04
231
+ timeout-minutes: 10
232
+ permissions:
233
+ pages: write
234
+ id-token: write
235
+ environment:
236
+ name: github-pages
237
+ url: ${{ steps.deploy.outputs.page_url }}
238
+ steps:
239
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
240
+ with:
241
+ name: docs
242
+ path: site
243
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
244
+ if: needs.coverage.result == 'success'
245
+ with:
246
+ name: coverage
247
+ path: site/coverage
248
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
249
+ with:
250
+ path: site
251
+ - id: deploy
252
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
253
+
159
254
  wheel:
160
- name: wheel (${{ matrix.platform }})
255
+ name: wheel (${{ matrix.platform }}, ${{ matrix.python }})
161
256
  needs: version
162
257
  runs-on: ${{ matrix.runner }}
163
258
  timeout-minutes: 45
164
259
  strategy:
165
260
  fail-fast: false
166
261
  matrix:
262
+ # cp312 is the stable-ABI wheel for every CPython from 3.12.
263
+ python: [cp310, cp311, cp312]
264
+ platform: [linux-x86_64, linux-aarch64, windows-amd64, macos-arm64]
167
265
  include:
168
266
  - { platform: linux-x86_64, runner: ubuntu-24.04 }
169
267
  - { platform: linux-aarch64, runner: ubuntu-24.04-arm }
170
268
  - { platform: windows-amd64, runner: windows-2025 }
171
269
  - { platform: macos-arm64, runner: macos-15 }
270
+ env:
271
+ CIBW_BUILD: ${{ matrix.python }}-*
172
272
  steps:
173
273
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
174
274
  - name: Version
@@ -183,7 +283,7 @@ jobs:
183
283
  output-dir: wheelhouse
184
284
  - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
185
285
  with:
186
- name: wheel-${{ matrix.platform }}
286
+ name: wheel-${{ matrix.platform }}-${{ matrix.python }}
187
287
  path: wheelhouse/*.whl
188
288
 
189
289
  # The sdist, then a wheel built from it and imported, as pip does for platforms without wheels.
@@ -1,9 +1,11 @@
1
- # Local design documents
2
- docs/requirements/
1
+ # Local design documents and tools, not yet part of the repository
2
+ /requirements/
3
+ /tools/
3
4
 
4
5
  # Build output and fetched dependencies
5
6
  build/
6
7
  dist/
8
+ site/
7
9
  .deps/
8
10
  *.egg-info/
9
11
  __pycache__/
@@ -1,3 +1,6 @@
1
+ # Vendored sources stay byte for byte as their upstream release.
2
+ exclude: ^third_party/(basisu|nanovdb)/
3
+
1
4
  repos:
2
5
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
6
  rev: v6.0.0
@@ -16,6 +19,8 @@ repos:
16
19
  hooks:
17
20
  - id: clang-format
18
21
  types_or: [c++, c]
22
+ # Data tables written by tools/, kept exactly as generated.
23
+ exclude: _table\.h$
19
24
 
20
25
  - repo: https://github.com/astral-sh/ruff-pre-commit
21
26
  rev: v0.17.1
@@ -1,5 +1,9 @@
1
1
  # SPDX-License-Identifier: BSD-3-Clause
2
2
  cmake_minimum_required(VERSION 3.21)
3
+ # Extracted downloads get the time they were extracted, so they rebuild when they change.
4
+ if(POLICY CMP0135)
5
+ cmake_policy(SET CMP0135 NEW)
6
+ endif()
3
7
 
4
8
  project(
5
9
  Ernie
@@ -10,7 +14,7 @@ project(
10
14
  )
11
15
 
12
16
  # Pre-release suffix such as .dev12, written by CI.
13
- set(ERNIE_VERSION_SUFFIX ".dev5" CACHE STRING "Pre-release suffix of Ernie's version")
17
+ set(ERNIE_VERSION_SUFFIX ".dev13" CACHE STRING "Pre-release suffix of Ernie's version")
14
18
  set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
15
19
 
16
20
  option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
@@ -18,6 +22,8 @@ option(ERNIE_BUILD_PYTHON "Build Ernie's Python module" OFF)
18
22
  option(ERNIE_BUILD_APP "Build the ernie program" ON)
19
23
  option(ERNIE_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
20
24
  option(ERNIE_ASSERTS "Keep assertions in optimised builds" OFF)
25
+ option(ERNIE_TRACY "Send profiling zones to the Tracy profiler too" OFF)
26
+ option(ERNIE_COVERAGE "Instrument Ernie for code coverage (GCC or Clang)" OFF)
21
27
 
22
28
  get_property(ernie_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
23
29
  if(PROJECT_IS_TOP_LEVEL AND NOT ernie_multi_config AND NOT CMAKE_BUILD_TYPE)
@@ -34,8 +40,17 @@ if(ERNIE_BUILD_PYTHON)
34
40
  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
35
41
  endif()
36
42
 
43
+ include(cmake/ErnieFetch.cmake)
44
+ include(cmake/third_party/glm.cmake)
45
+ include(cmake/third_party/dlpack.cmake)
46
+ include(cmake/third_party/json.cmake)
47
+ include(cmake/third_party/openexr.cmake)
48
+ include(cmake/third_party/bc7enc.cmake)
49
+ include(cmake/third_party/stb.cmake)
50
+ include(cmake/third_party/tracy.cmake)
37
51
  include(cmake/third_party/vulkan_headers.cmake)
38
52
  include(cmake/third_party/volk.cmake)
53
+ add_subdirectory(third_party)
39
54
 
40
55
  add_library(ernie_build_options INTERFACE)
41
56
  if(MSVC)
@@ -68,12 +83,16 @@ if(ERNIE_ASSERTS)
68
83
  INTERFACE $<IF:$<CXX_COMPILER_ID:MSVC>,/UNDEBUG,-UNDEBUG>
69
84
  )
70
85
  endif()
86
+ if(ERNIE_COVERAGE)
87
+ target_compile_options(ernie_build_options INTERFACE --coverage -fprofile-update=atomic -Og -g)
88
+ target_link_options(ernie_build_options INTERFACE --coverage)
89
+ endif()
71
90
 
72
91
  add_subdirectory(ernie)
73
92
 
74
93
  if(ERNIE_BUILD_TESTS)
75
94
  enable_testing()
76
- add_subdirectory(ernie/test)
95
+ add_subdirectory(tests)
77
96
  endif()
78
97
 
79
98
  if(PROJECT_IS_TOP_LEVEL AND NOT SKBUILD)
@@ -28,8 +28,19 @@
28
28
  "cacheVariables": {
29
29
  "CMAKE_BUILD_TYPE": "Release",
30
30
  "ERNIE_ASSERTS": "ON",
31
- "ERNIE_WARNINGS_AS_ERRORS": "ON",
32
- "FETCHCONTENT_BASE_DIR": "${sourceDir}/.deps"
31
+ "ERNIE_WARNINGS_AS_ERRORS": "ON"
32
+ }
33
+ },
34
+ {
35
+ "name": "coverage",
36
+ "displayName": "Coverage",
37
+ "description": "Instrumented for code coverage, as CI measures it, in build/coverage",
38
+ "inherits": "dev",
39
+ "binaryDir": "${sourceDir}/build/coverage",
40
+ "cacheVariables": {
41
+ "CMAKE_BUILD_TYPE": "Debug",
42
+ "ERNIE_COVERAGE": "ON",
43
+ "ERNIE_WARNINGS_AS_ERRORS": "ON"
33
44
  }
34
45
  },
35
46
  {
@@ -43,8 +54,7 @@
43
54
  "CMAKE_INSTALL_PREFIX": "/usr",
44
55
  "ERNIE_BUILD_APP": "ON",
45
56
  "ERNIE_BUILD_TESTS": "OFF",
46
- "ERNIE_BUILD_PYTHON": "OFF",
47
- "FETCHCONTENT_BASE_DIR": "${sourceDir}/.deps"
57
+ "ERNIE_BUILD_PYTHON": "OFF"
48
58
  }
49
59
  }
50
60
  ],
@@ -55,7 +65,13 @@
55
65
  },
56
66
  {
57
67
  "name": "ci",
58
- "configurePreset": "ci"
68
+ "configurePreset": "ci",
69
+ "nativeToolOptions": ["-k", "0"]
70
+ },
71
+ {
72
+ "name": "coverage",
73
+ "configurePreset": "coverage",
74
+ "nativeToolOptions": ["-k", "0"]
59
75
  },
60
76
  {
61
77
  "name": "package",
@@ -76,6 +92,13 @@
76
92
  "output": {
77
93
  "outputOnFailure": true
78
94
  }
95
+ },
96
+ {
97
+ "name": "coverage",
98
+ "configurePreset": "coverage",
99
+ "output": {
100
+ "outputOnFailure": true
101
+ }
79
102
  }
80
103
  ]
81
104
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ernie-renderer
3
- Version: 0.2.0.dev5
3
+ Version: 0.2.0.dev13
4
4
  Summary: Efficient Renderer for Natural and Interplanetary Environments: a physically based, spectral Vulkan ray tracer
5
5
  Author: Alex Maietta
6
6
  License-Expression: BSD-3-Clause
@@ -8,7 +8,7 @@ License-File: LICENSE
8
8
  Project-URL: Homepage, https://github.com/alexmaietta/ernie
9
9
  Project-URL: Repository, https://github.com/alexmaietta/ernie
10
10
  Project-URL: Issues, https://github.com/alexmaietta/ernie/issues
11
- Requires-Python: >=3.12
11
+ Requires-Python: >=3.10
12
12
  Provides-Extra: test
13
13
  Requires-Dist: pytest>=8; extra == "test"
14
14
  Description-Content-Type: text/markdown
@@ -16,6 +16,7 @@ Description-Content-Type: text/markdown
16
16
  > 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
17
17
 
18
18
  [![CI](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
19
+ [![Coverage](https://img.shields.io/endpoint?url=https%3A%2F%2Falexmaietta.github.io%2Fernie%2Fcoverage%2Fbadge.json)](https://alexmaietta.github.io/ernie/coverage/)
19
20
  [![Release](https://img.shields.io/github/v/release/alexmaietta/ernie?include_prereleases&sort=semver&color=orange)](https://github.com/alexmaietta/ernie/releases)
20
21
  [![PyPI](https://img.shields.io/pypi/v/ernie-renderer?color=3775A9&logo=pypi&logoColor=white)](https://pypi.org/project/ernie-renderer/)
21
22
  [![Docs](https://img.shields.io/badge/docs-latest-8A2BE2)](https://alexmaietta.github.io/ernie/)
@@ -1,6 +1,7 @@
1
1
  > 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
2
2
 
3
3
  [![CI](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
4
+ [![Coverage](https://img.shields.io/endpoint?url=https%3A%2F%2Falexmaietta.github.io%2Fernie%2Fcoverage%2Fbadge.json)](https://alexmaietta.github.io/ernie/coverage/)
4
5
  [![Release](https://img.shields.io/github/v/release/alexmaietta/ernie?include_prereleases&sort=semver&color=orange)](https://github.com/alexmaietta/ernie/releases)
5
6
  [![PyPI](https://img.shields.io/pypi/v/ernie-renderer?color=3775A9&logo=pypi&logoColor=white)](https://pypi.org/project/ernie-renderer/)
6
7
  [![Docs](https://img.shields.io/badge/docs-latest-8A2BE2)](https://alexmaietta.github.io/ernie/)
@@ -0,0 +1,41 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ include_guard(GLOBAL)
3
+ include(FetchContent)
4
+
5
+ set(ERNIE_DEPS_DIR
6
+ "${PROJECT_SOURCE_DIR}/.deps"
7
+ CACHE PATH
8
+ "Where fetched dependency sources are kept"
9
+ )
10
+
11
+ function(ernie_fetch name)
12
+ # The FetchContent_Declare arguments recipes use, declared so others are rejected and gersemi
13
+ # formats calls by keyword.
14
+ cmake_parse_arguments(
15
+ ARG
16
+ ""
17
+ "URL;GIT_REPOSITORY;GIT_TAG;GIT_SHALLOW;SOURCE_SUBDIR"
18
+ "GIT_SUBMODULES"
19
+ ${ARGN}
20
+ )
21
+ if(ARG_UNPARSED_ARGUMENTS)
22
+ message(FATAL_ERROR "ernie_fetch(${name}): unexpected ${ARG_UNPARSED_ARGUMENTS}")
23
+ endif()
24
+ string(TOLOWER "${name}" lower)
25
+ string(TOUPPER "${name}" upper)
26
+ set(source "${ERNIE_DEPS_DIR}/${lower}-src")
27
+ set(stamp "${source}/.ernie-fetched")
28
+ if(EXISTS "${stamp}")
29
+ file(READ "${stamp}" fetched)
30
+ if(fetched STREQUAL "${ARGN}")
31
+ set(FETCHCONTENT_SOURCE_DIR_${upper} "${source}")
32
+ else()
33
+ file(REMOVE_RECURSE "${source}")
34
+ endif()
35
+ endif()
36
+ FetchContent_Declare(${name} ${ARGN} SOURCE_DIR "${source}")
37
+ FetchContent_MakeAvailable(${name})
38
+ file(WRITE "${stamp}" "${ARGN}")
39
+ set(${lower}_SOURCE_DIR "${${lower}_SOURCE_DIR}" PARENT_SCOPE)
40
+ set(${lower}_BINARY_DIR "${${lower}_BINARY_DIR}" PARENT_SCOPE)
41
+ endfunction()
@@ -9,6 +9,12 @@ set(ERNIE_TEST_TIMEOUT_unit 10)
9
9
  set(ERNIE_TEST_TIMEOUT_gpu 60)
10
10
  set(ERNIE_TEST_TIMEOUT_accuracy 120)
11
11
  set(ERNIE_TEST_TIMEOUT_python 120)
12
+ # Unoptimised, instrumented coverage builds run several times slower.
13
+ if(ERNIE_COVERAGE)
14
+ foreach(label unit gpu accuracy python)
15
+ math(EXPR ERNIE_TEST_TIMEOUT_${label} "${ERNIE_TEST_TIMEOUT_${label}} * 10")
16
+ endforeach()
17
+ endif()
12
18
 
13
19
  # Adds the gtest executable ernie_tests_<name> and registers its tests as ernie.<name>.<test>.
14
20
  function(ernie_add_test_suite name)
@@ -19,6 +25,10 @@ function(ernie_add_test_suite name)
19
25
  set(target ernie_tests_${name})
20
26
  add_executable(${target} ${ARG_SOURCES})
21
27
  target_link_libraries(${target} PRIVATE ${ARG_LIBRARIES} GTest::gtest_main ernie_build_options)
28
+ target_compile_definitions(
29
+ ${target}
30
+ PRIVATE ERNIE_TEST_FIXTURES="${PROJECT_SOURCE_DIR}/tests/fixtures"
31
+ )
22
32
  gtest_discover_tests(
23
33
  ${target}
24
34
  TEST_PREFIX "ernie.${name}."
@@ -0,0 +1,26 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # bc7enc_rdo has no releases, so a commit is pinned.
3
+ set(ERNIE_DEP_VERSION_bc7enc
4
+ b9438627eef73a1157e84201b6fa6eb2ffd6d9f0
5
+ CACHE STRING
6
+ "Commit of bc7enc_rdo to fetch"
7
+ )
8
+ mark_as_advanced(ERNIE_DEP_VERSION_bc7enc)
9
+
10
+ ernie_fetch(
11
+ bc7enc
12
+ URL https://github.com/richgel999/bc7enc_rdo/archive/${ERNIE_DEP_VERSION_bc7enc}.tar.gz
13
+ SOURCE_SUBDIR no-build
14
+ )
15
+
16
+ # bc7enc_rdo (MIT or public domain): its BC7 encoder (bc7enc), BC1 to BC5 encoders and decoders
17
+ # (rgbcx) and BC7 decoder (bc7decomp), for baking and decoding textures.
18
+ add_library(
19
+ ernie_bc7enc
20
+ STATIC
21
+ "${bc7enc_SOURCE_DIR}/bc7enc.cpp"
22
+ "${bc7enc_SOURCE_DIR}/rgbcx.cpp"
23
+ "${bc7enc_SOURCE_DIR}/bc7decomp.cpp"
24
+ )
25
+ target_include_directories(ernie_bc7enc SYSTEM PUBLIC "${bc7enc_SOURCE_DIR}")
26
+ set_target_properties(ernie_bc7enc PROPERTIES POSITION_INDEPENDENT_CODE ON)
@@ -0,0 +1,13 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ set(ERNIE_DEP_VERSION_dlpack v1.3 CACHE STRING "Tag of DLPack to fetch")
3
+ mark_as_advanced(ERNIE_DEP_VERSION_dlpack)
4
+
5
+ ernie_fetch(
6
+ dlpack
7
+ URL https://github.com/dmlc/dlpack/archive/refs/tags/${ERNIE_DEP_VERSION_dlpack}.tar.gz
8
+ SOURCE_SUBDIR no-build
9
+ )
10
+
11
+ # The tensor exchange header, nothing to build.
12
+ add_library(ernie_dlpack INTERFACE)
13
+ target_include_directories(ernie_dlpack SYSTEM INTERFACE "${dlpack_SOURCE_DIR}/include")
@@ -0,0 +1,13 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ set(ERNIE_DEP_VERSION_glm 1.0.3 CACHE STRING "Tag of glm to fetch")
3
+ mark_as_advanced(ERNIE_DEP_VERSION_glm)
4
+
5
+ set(GLM_BUILD_LIBRARY OFF)
6
+ set(GLM_BUILD_TESTS OFF)
7
+ set(GLM_BUILD_INSTALL OFF)
8
+
9
+ ernie_fetch(glm URL https://github.com/g-truc/glm/archive/refs/tags/${ERNIE_DEP_VERSION_glm}.tar.gz)
10
+
11
+ add_library(ernie_glm INTERFACE)
12
+ target_include_directories(ernie_glm SYSTEM INTERFACE "${glm_SOURCE_DIR}")
13
+ target_compile_definitions(ernie_glm INTERFACE GLM_FORCE_DEPTH_ZERO_TO_ONE)
@@ -6,11 +6,8 @@ set(BUILD_GMOCK OFF)
6
6
  set(INSTALL_GTEST OFF)
7
7
  set(gtest_force_shared_crt ON)
8
8
 
9
- include(FetchContent)
10
- FetchContent_Declare(
9
+ ernie_fetch(
11
10
  googletest
12
- GIT_REPOSITORY https://github.com/google/googletest.git
13
- GIT_TAG ${ERNIE_DEP_VERSION_googletest}
14
- GIT_SHALLOW TRUE
11
+ URL
12
+ https://github.com/google/googletest/archive/refs/tags/${ERNIE_DEP_VERSION_googletest}.tar.gz
15
13
  )
16
- FetchContent_MakeAvailable(googletest)
@@ -0,0 +1,12 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ set(ERNIE_DEP_VERSION_json v3.12.0 CACHE STRING "Release of nlohmann/json to fetch")
3
+ mark_as_advanced(ERNIE_DEP_VERSION_json)
4
+
5
+ # The release's single-include archive, without the repository's tests and history.
6
+ ernie_fetch(
7
+ nlohmann_json
8
+ URL https://github.com/nlohmann/json/releases/download/${ERNIE_DEP_VERSION_json}/include.zip
9
+ )
10
+
11
+ add_library(ernie_json INTERFACE)
12
+ target_include_directories(ernie_json SYSTEM INTERFACE "${nlohmann_json_SOURCE_DIR}/single_include")
@@ -8,7 +8,7 @@ mark_as_advanced(ERNIE_DEP_VERSION_nanobind)
8
8
 
9
9
  find_package(
10
10
  Python
11
- 3.12
11
+ 3.10
12
12
  REQUIRED
13
13
  COMPONENTS Interpreter Development.Module ${SKBUILD_SABI_COMPONENT}
14
14
  )
@@ -22,13 +22,11 @@ execute_process(
22
22
  )
23
23
  find_package(nanobind CONFIG QUIET)
24
24
  if(NOT nanobind_FOUND)
25
- include(FetchContent)
26
- FetchContent_Declare(
25
+ ernie_fetch(
27
26
  nanobind
28
27
  GIT_REPOSITORY https://github.com/wjakob/nanobind.git
29
28
  GIT_TAG ${ERNIE_DEP_VERSION_nanobind}
30
29
  GIT_SHALLOW TRUE
31
30
  GIT_SUBMODULES ext/robin_map
32
31
  )
33
- FetchContent_MakeAvailable(nanobind)
34
32
  endif()
@@ -0,0 +1,71 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ set(ERNIE_DEP_VERSION_openexr v3.5.2 CACHE STRING "Tag of OpenEXR to fetch")
3
+ set(ERNIE_DEP_VERSION_imath v3.2.3 CACHE STRING "Tag of Imath to fetch for OpenEXR")
4
+ mark_as_advanced(ERNIE_DEP_VERSION_openexr ERNIE_DEP_VERSION_imath)
5
+
6
+ set(OPENEXR_BUILD_TOOLS OFF)
7
+ set(OPENEXR_BUILD_EXAMPLES OFF)
8
+ set(OPENEXR_BUILD_DOCS OFF)
9
+ set(OPENEXR_BUILD_PYTHON OFF)
10
+ set(OPENEXR_INSTALL OFF)
11
+ set(OPENEXR_INSTALL_TOOLS OFF)
12
+ set(OPENEXR_INSTALL_PKG_CONFIG OFF)
13
+ set(OPENEXR_TEST_LIBRARIES OFF)
14
+ set(OPENEXR_TEST_TOOLS OFF)
15
+ set(OPENEXR_TEST_PYTHON OFF)
16
+ set(OPENEXR_FORCE_INTERNAL_IMATH ON)
17
+ set(OPENEXR_FORCE_INTERNAL_DEFLATE ON)
18
+ set(OPENEXR_FORCE_INTERNAL_ZSTD ON)
19
+ set(OPENEXR_FORCE_INTERNAL_OPENJPH ON)
20
+ set(IMATH_INSTALL_PKG_CONFIG OFF)
21
+ set(IMATH_INSTALL OFF)
22
+ set(BUILD_SHARED_LIBS OFF)
23
+
24
+ # Their own tests stay out of Ernie's ctest. Imath is made available first, so OpenEXR finds it
25
+ # populated and skips its own git clone of it.
26
+ set(ernie_saved_build_testing ${BUILD_TESTING})
27
+ set(BUILD_TESTING OFF)
28
+ ernie_fetch(
29
+ Imath
30
+ URL
31
+ https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/${ERNIE_DEP_VERSION_imath}.tar.gz
32
+ )
33
+ ernie_fetch(
34
+ openexr
35
+ URL
36
+ https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/${ERNIE_DEP_VERSION_openexr}.tar.gz
37
+ )
38
+ set(BUILD_TESTING ${ernie_saved_build_testing})
39
+
40
+ # Its headers and Imath's are system headers to Ernie, kept out of its warnings.
41
+ foreach(
42
+ target
43
+ OpenEXR
44
+ OpenEXRCore
45
+ OpenEXRUtil
46
+ Iex
47
+ IlmThread
48
+ Imath
49
+ ImathConfig
50
+ OpenEXRConfig
51
+ )
52
+ if(TARGET ${target})
53
+ get_target_property(directories ${target} INTERFACE_INCLUDE_DIRECTORIES)
54
+ if(directories)
55
+ set_property(
56
+ TARGET ${target}
57
+ APPEND
58
+ PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${directories}
59
+ )
60
+ endif()
61
+ endif()
62
+ endforeach()
63
+
64
+ add_library(ernie_openexr INTERFACE)
65
+ target_link_libraries(ernie_openexr INTERFACE OpenEXR::OpenEXR)
66
+
67
+ # The zstd built into OpenEXRCore exports its API, so KTX2's zstd supercompression is decoded with
68
+ # it rather than a second copy.
69
+ add_library(ernie_zstd INTERFACE)
70
+ target_include_directories(ernie_zstd SYSTEM INTERFACE "${openexr_SOURCE_DIR}/external/zstd/lib")
71
+ target_link_libraries(ernie_zstd INTERFACE OpenEXR::OpenEXRCore)