ernie-renderer 0.2.0.dev7__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 (203) hide show
  1. ernie_renderer-0.2.0.dev13/.gitattributes +15 -0
  2. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.github/workflows/ci.yml +21 -14
  3. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.pre-commit-config.yaml +3 -0
  4. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/CMakeLists.txt +8 -5
  5. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/CMakePresets.json +7 -8
  6. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/PKG-INFO +2 -2
  7. ernie_renderer-0.2.0.dev13/cmake/ErnieFetch.cmake +41 -0
  8. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/ErnieTesting.cmake +4 -0
  9. ernie_renderer-0.2.0.dev13/cmake/third_party/bc7enc.cmake +26 -0
  10. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/dlpack.cmake +2 -6
  11. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/glm.cmake +1 -8
  12. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/googletest.cmake +3 -6
  13. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/json.cmake +1 -3
  14. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/nanobind.cmake +2 -4
  15. ernie_renderer-0.2.0.dev13/cmake/third_party/openexr.cmake +71 -0
  16. ernie_renderer-0.2.0.dev13/cmake/third_party/stb.cmake +28 -0
  17. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/tracy.cmake +2 -6
  18. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/volk.cmake +2 -6
  19. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/third_party/vulkan_headers.cmake +3 -6
  20. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/CMakeLists.txt +1 -1
  21. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/app/main.cpp +1 -1
  22. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/device/CMakeLists.txt +1 -1
  23. ernie_renderer-0.2.0.dev13/ernie/io/CMakeLists.txt +22 -0
  24. ernie_renderer-0.2.0.dev13/ernie/io/ies.cpp +229 -0
  25. ernie_renderer-0.2.0.dev13/ernie/io/ies.h +119 -0
  26. ernie_renderer-0.2.0.dev13/ernie/io/image.cpp +312 -0
  27. ernie_renderer-0.2.0.dev13/ernie/io/image.h +144 -0
  28. ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.cpp +651 -0
  29. ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.h +176 -0
  30. ernie_renderer-0.2.0.dev13/ernie/io/raster.cpp +1352 -0
  31. ernie_renderer-0.2.0.dev13/ernie/io/raster.h +593 -0
  32. ernie_renderer-0.2.0.dev13/ernie/io/texture.cpp +1478 -0
  33. ernie_renderer-0.2.0.dev13/ernie/io/texture.h +406 -0
  34. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/CMakeLists.txt +1 -1
  35. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/cloud.cpp +5 -5
  36. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/cloud.h +1 -1
  37. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/regolith.cpp +2 -2
  38. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/scattering.cpp +1 -1
  39. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/spectrum.cpp +2 -2
  40. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/python/CMakeLists.txt +5 -1
  41. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/python/module.cpp +1 -1
  42. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/CMakeLists.txt +5 -4
  43. ernie_renderer-0.2.0.dev13/ernie/util/bytes.h +78 -0
  44. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/disk_cache.cpp +1 -1
  45. ernie_renderer-0.2.0.dev13/ernie/util/file.cpp +40 -0
  46. ernie_renderer-0.2.0.dev13/ernie/util/file.h +26 -0
  47. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/log.cpp +1 -1
  48. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/mapped_file.cpp +5 -3
  49. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/math.h +16 -3
  50. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/noise.cpp +2 -2
  51. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/profile.h +1 -1
  52. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/profile_report.cpp +1 -1
  53. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/profile_report.h +1 -1
  54. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/profiler.cpp +1 -1
  55. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/tensor.cpp +1 -1
  56. ernie_renderer-0.2.0.dev13/ernie/util/text.h +100 -0
  57. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/version.cpp +1 -1
  58. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/worker_pool.h +1 -1
  59. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/pyproject.toml +7 -5
  60. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/CMakeLists.txt +28 -15
  61. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/README.md +5 -0
  62. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/make_exr.py +110 -0
  63. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgb_float_zip.exr +0 -0
  64. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgba_half_window.exr +0 -0
  65. ernie_renderer-0.2.0.dev13/tests/fixtures/exr/y_half_zips.exr +0 -0
  66. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/README.md +4 -0
  67. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/downlight_quadrant.ies +14 -0
  68. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/floodlight_type_b.ies +16 -0
  69. ernie_renderer-0.2.0.dev13/tests/fixtures/ies/lamp.tilt +4 -0
  70. ernie_renderer-0.2.0.dev13/tests/fixtures/images/grey16.png +0 -0
  71. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/README.md +13 -0
  72. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
  73. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
  74. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
  75. ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
  76. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/README.md +8 -0
  77. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
  78. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_raw.tif +0 -0
  79. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
  80. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
  81. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
  82. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
  83. ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
  84. ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/cube.nvdb +0 -0
  85. ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/make_nvdb.py +38 -0
  86. ernie_renderer-0.2.0.dev13/tests/io/ies_test.cpp +223 -0
  87. ernie_renderer-0.2.0.dev13/tests/io/image_test.cpp +310 -0
  88. ernie_renderer-0.2.0.dev13/tests/io/nanovdb_test.cpp +190 -0
  89. ernie_renderer-0.2.0.dev13/tests/io/raster_test.cpp +501 -0
  90. ernie_renderer-0.2.0.dev13/tests/io/texture_test.cpp +755 -0
  91. ernie_renderer-0.2.0.dev13/tests/util/bytes_test.cpp +59 -0
  92. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/disk_cache_test.cpp +1 -1
  93. ernie_renderer-0.2.0.dev13/tests/util/file_test.cpp +41 -0
  94. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/linear_algebra_test.cpp +1 -1
  95. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/log_test.cpp +1 -1
  96. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/mapped_file_test.cpp +10 -1
  97. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/math_test.cpp +12 -1
  98. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/noise_test.cpp +1 -1
  99. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/parallel_test.cpp +1 -1
  100. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/profile_report_test.cpp +1 -1
  101. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/profiler_test.cpp +1 -1
  102. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/random_test.cpp +1 -1
  103. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/tensor_test.cpp +1 -1
  104. ernie_renderer-0.2.0.dev13/tests/util/text_test.cpp +42 -0
  105. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/version_test.cpp +1 -1
  106. {ernie_renderer-0.2.0.dev7/ernie/test/core → ernie_renderer-0.2.0.dev13/tests/util}/worker_pool_test.cpp +1 -1
  107. ernie_renderer-0.2.0.dev13/third_party/CMakeLists.txt +20 -0
  108. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSE +201 -0
  109. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/Apache-2.0.txt +208 -0
  110. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/BSD-3-clause.txt +96 -0
  111. ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/MIT.txt +47 -0
  112. ernie_renderer-0.2.0.dev13/third_party/basisu/NOTICE +15 -0
  113. ernie_renderer-0.2.0.dev13/third_party/basisu/README.md +3 -0
  114. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu.h +821 -0
  115. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_cfgs.inl +648 -0
  116. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_hdr_core.h +211 -0
  117. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_helpers.h +5335 -0
  118. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers.h +4354 -0
  119. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers_impl.h +818 -0
  120. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_dds_transcoder.inl +1372 -0
  121. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_etc1_mods.inl +258 -0
  122. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_file_headers.h +264 -0
  123. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_idct.h +1446 -0
  124. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.cpp +45962 -0
  125. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.h +1786 -0
  126. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_internal.h +4044 -0
  127. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +481 -0
  128. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +481 -0
  129. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +481 -0
  130. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +481 -0
  131. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +49 -0
  132. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +481 -0
  133. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +494 -0
  134. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +494 -0
  135. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +481 -0
  136. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +481 -0
  137. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_uastc.h +289 -0
  138. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.h +1467 -0
  139. ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +1515 -0
  140. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/LICENSE +30 -0
  141. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd.h +3198 -0
  142. ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd_errors.h +107 -0
  143. ernie_renderer-0.2.0.dev13/third_party/nanovdb/LICENSE +176 -0
  144. ernie_renderer-0.2.0.dev13/third_party/nanovdb/PNanoVDB.h +3590 -0
  145. ernie_renderer-0.2.0.dev7/.gitattributes +0 -2
  146. ernie_renderer-0.2.0.dev7/ernie/io/CMakeLists.txt +0 -3
  147. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.clang-format +0 -0
  148. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.clang-tidy +0 -0
  149. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.dockerignore +0 -0
  150. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.gersemirc +0 -0
  151. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.github/scripts/coverage_badge.py +0 -0
  152. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.github/scripts/install-lavapipe-windows.sh +0 -0
  153. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/.gitignore +0 -0
  154. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/Dockerfile +0 -0
  155. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/LICENSE +0 -0
  156. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/README.md +0 -0
  157. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/cmake/ErniePackaging.cmake +0 -0
  158. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/docs/README.md +0 -0
  159. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/docs/index.md +0 -0
  160. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/docs/requirements.txt +0 -0
  161. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/app/CMakeLists.txt +0 -0
  162. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.cpp +0 -0
  163. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.h +0 -0
  164. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/graph/CMakeLists.txt +0 -0
  165. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/astronomy.cpp +0 -0
  166. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/astronomy.h +0 -0
  167. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/atmosphere.cpp +0 -0
  168. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/atmosphere.h +0 -0
  169. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/constants.h +0 -0
  170. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/reflectance_library.cpp +0 -0
  171. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/reflectance_library.h +0 -0
  172. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/reflectance_table.h +0 -0
  173. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/regolith.h +0 -0
  174. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/scattering.h +0 -0
  175. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/solar.cpp +0 -0
  176. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/solar.h +0 -0
  177. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/solar_table.h +0 -0
  178. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/physics/spectrum.h +0 -0
  179. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/python/ernie/__init__.py +0 -0
  180. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/render/CMakeLists.txt +0 -0
  181. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/ernie/scene/CMakeLists.txt +0 -0
  182. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/disk_cache.h +0 -0
  183. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/linear_algebra.h +0 -0
  184. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/log.h +0 -0
  185. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/mapped_file.h +0 -0
  186. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/noise.h +0 -0
  187. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/numbers.h +0 -0
  188. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/parallel.h +0 -0
  189. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/profiler.h +0 -0
  190. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/random.h +0 -0
  191. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/tensor.h +0 -0
  192. {ernie_renderer-0.2.0.dev7/ernie/core → ernie_renderer-0.2.0.dev13/ernie/util}/version.h +0 -0
  193. {ernie_renderer-0.2.0.dev7 → ernie_renderer-0.2.0.dev13}/mkdocs.yml +0 -0
  194. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/device/vulkan_devices_test.cpp +0 -0
  195. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/astronomy_test.cpp +0 -0
  196. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/atmosphere_test.cpp +0 -0
  197. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/cloud_test.cpp +0 -0
  198. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/reflectance_library_test.cpp +0 -0
  199. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/regolith_test.cpp +0 -0
  200. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/scattering_test.cpp +0 -0
  201. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/solar_test.cpp +0 -0
  202. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/physics/spectrum_test.cpp +0 -0
  203. {ernie_renderer-0.2.0.dev7/ernie/test → ernie_renderer-0.2.0.dev13/tests}/python/test_package.py +0 -0
@@ -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
@@ -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: >
@@ -171,10 +170,8 @@ jobs:
171
170
  - run: python -m pip install nanobind ninja pytest gcovr
172
171
  - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
173
172
  with:
174
- path: |
175
- .deps/*-src
176
- .deps/*-subbuild
177
- key: deps-${{ runner.os }}-${{ hashFiles('cmake/third_party/**') }}
173
+ path: .deps
174
+ key: deps-${{ runner.os }}-${{ hashFiles('cmake/ErnieFetch.cmake', 'cmake/third_party/**') }}
178
175
  - name: Install lavapipe
179
176
  run: |
180
177
  sudo apt-get update
@@ -194,7 +191,7 @@ jobs:
194
191
  - name: Report
195
192
  run: |
196
193
  mkdir -p coverage
197
- gcovr --root . --filter 'ernie/' --exclude 'ernie/test/' --exclude '.*_table\.h' \
194
+ gcovr --root . --filter 'ernie/' --exclude '.*_table\.h' \
198
195
  --object-directory build/coverage \
199
196
  --html-details coverage/index.html --json-summary coverage/summary.json --print-summary
200
197
  python .github/scripts/coverage_badge.py coverage
@@ -223,9 +220,13 @@ jobs:
223
220
 
224
221
  # The project site on GitHub Pages, from main: the docs, with the coverage report and its badge
225
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.
226
225
  pages:
227
- needs: [lint, test, docs, coverage]
228
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
226
+ needs: [docs, coverage]
227
+ if: >
228
+ always() && github.event_name == 'push' && github.ref == 'refs/heads/main'
229
+ && needs.docs.result == 'success'
229
230
  runs-on: ubuntu-24.04
230
231
  timeout-minutes: 10
231
232
  permissions:
@@ -240,6 +241,7 @@ jobs:
240
241
  name: docs
241
242
  path: site
242
243
  - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
244
+ if: needs.coverage.result == 'success'
243
245
  with:
244
246
  name: coverage
245
247
  path: site/coverage
@@ -250,18 +252,23 @@ jobs:
250
252
  uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
251
253
 
252
254
  wheel:
253
- name: wheel (${{ matrix.platform }})
255
+ name: wheel (${{ matrix.platform }}, ${{ matrix.python }})
254
256
  needs: version
255
257
  runs-on: ${{ matrix.runner }}
256
258
  timeout-minutes: 45
257
259
  strategy:
258
260
  fail-fast: false
259
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]
260
265
  include:
261
266
  - { platform: linux-x86_64, runner: ubuntu-24.04 }
262
267
  - { platform: linux-aarch64, runner: ubuntu-24.04-arm }
263
268
  - { platform: windows-amd64, runner: windows-2025 }
264
269
  - { platform: macos-arm64, runner: macos-15 }
270
+ env:
271
+ CIBW_BUILD: ${{ matrix.python }}-*
265
272
  steps:
266
273
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
267
274
  - name: Version
@@ -276,7 +283,7 @@ jobs:
276
283
  output-dir: wheelhouse
277
284
  - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
278
285
  with:
279
- name: wheel-${{ matrix.platform }}
286
+ name: wheel-${{ matrix.platform }}-${{ matrix.python }}
280
287
  path: wheelhouse/*.whl
281
288
 
282
289
  # The sdist, then a wheel built from it and imported, as pip does for platforms without wheels.
@@ -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
@@ -14,7 +14,7 @@ project(
14
14
  )
15
15
 
16
16
  # Pre-release suffix such as .dev12, written by CI.
17
- set(ERNIE_VERSION_SUFFIX ".dev7" CACHE STRING "Pre-release suffix of Ernie's version")
17
+ set(ERNIE_VERSION_SUFFIX ".dev13" CACHE STRING "Pre-release suffix of Ernie's version")
18
18
  set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
19
19
 
20
20
  option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
@@ -40,12 +40,17 @@ if(ERNIE_BUILD_PYTHON)
40
40
  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
41
41
  endif()
42
42
 
43
+ include(cmake/ErnieFetch.cmake)
43
44
  include(cmake/third_party/glm.cmake)
44
45
  include(cmake/third_party/dlpack.cmake)
45
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)
46
50
  include(cmake/third_party/tracy.cmake)
47
51
  include(cmake/third_party/vulkan_headers.cmake)
48
52
  include(cmake/third_party/volk.cmake)
53
+ add_subdirectory(third_party)
49
54
 
50
55
  add_library(ernie_build_options INTERFACE)
51
56
  if(MSVC)
@@ -79,9 +84,7 @@ if(ERNIE_ASSERTS)
79
84
  )
80
85
  endif()
81
86
  if(ERNIE_COVERAGE)
82
- # Unoptimised, so every line maps to its own counters; atomic, as ParallelFor's threads share
83
- # them.
84
- target_compile_options(ernie_build_options INTERFACE --coverage -fprofile-update=atomic -O0 -g)
87
+ target_compile_options(ernie_build_options INTERFACE --coverage -fprofile-update=atomic -Og -g)
85
88
  target_link_options(ernie_build_options INTERFACE --coverage)
86
89
  endif()
87
90
 
@@ -89,7 +92,7 @@ add_subdirectory(ernie)
89
92
 
90
93
  if(ERNIE_BUILD_TESTS)
91
94
  enable_testing()
92
- add_subdirectory(ernie/test)
95
+ add_subdirectory(tests)
93
96
  endif()
94
97
 
95
98
  if(PROJECT_IS_TOP_LEVEL AND NOT SKBUILD)
@@ -28,8 +28,7 @@
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"
33
32
  }
34
33
  },
35
34
  {
@@ -41,8 +40,7 @@
41
40
  "cacheVariables": {
42
41
  "CMAKE_BUILD_TYPE": "Debug",
43
42
  "ERNIE_COVERAGE": "ON",
44
- "ERNIE_WARNINGS_AS_ERRORS": "ON",
45
- "FETCHCONTENT_BASE_DIR": "${sourceDir}/.deps"
43
+ "ERNIE_WARNINGS_AS_ERRORS": "ON"
46
44
  }
47
45
  },
48
46
  {
@@ -56,8 +54,7 @@
56
54
  "CMAKE_INSTALL_PREFIX": "/usr",
57
55
  "ERNIE_BUILD_APP": "ON",
58
56
  "ERNIE_BUILD_TESTS": "OFF",
59
- "ERNIE_BUILD_PYTHON": "OFF",
60
- "FETCHCONTENT_BASE_DIR": "${sourceDir}/.deps"
57
+ "ERNIE_BUILD_PYTHON": "OFF"
61
58
  }
62
59
  }
63
60
  ],
@@ -68,11 +65,13 @@
68
65
  },
69
66
  {
70
67
  "name": "ci",
71
- "configurePreset": "ci"
68
+ "configurePreset": "ci",
69
+ "nativeToolOptions": ["-k", "0"]
72
70
  },
73
71
  {
74
72
  "name": "coverage",
75
- "configurePreset": "coverage"
73
+ "configurePreset": "coverage",
74
+ "nativeToolOptions": ["-k", "0"]
76
75
  },
77
76
  {
78
77
  "name": "package",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ernie-renderer
3
- Version: 0.2.0.dev7
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
@@ -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()
@@ -25,6 +25,10 @@ function(ernie_add_test_suite name)
25
25
  set(target ernie_tests_${name})
26
26
  add_executable(${target} ${ARG_SOURCES})
27
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
+ )
28
32
  gtest_discover_tests(
29
33
  ${target}
30
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)
@@ -2,15 +2,11 @@
2
2
  set(ERNIE_DEP_VERSION_dlpack v1.3 CACHE STRING "Tag of DLPack to fetch")
3
3
  mark_as_advanced(ERNIE_DEP_VERSION_dlpack)
4
4
 
5
- include(FetchContent)
6
- FetchContent_Declare(
5
+ ernie_fetch(
7
6
  dlpack
8
- GIT_REPOSITORY https://github.com/dmlc/dlpack.git
9
- GIT_TAG ${ERNIE_DEP_VERSION_dlpack}
10
- GIT_SHALLOW TRUE
7
+ URL https://github.com/dmlc/dlpack/archive/refs/tags/${ERNIE_DEP_VERSION_dlpack}.tar.gz
11
8
  SOURCE_SUBDIR no-build
12
9
  )
13
- FetchContent_MakeAvailable(dlpack)
14
10
 
15
11
  # The tensor exchange header, nothing to build.
16
12
  add_library(ernie_dlpack INTERFACE)
@@ -6,14 +6,7 @@ set(GLM_BUILD_LIBRARY OFF)
6
6
  set(GLM_BUILD_TESTS OFF)
7
7
  set(GLM_BUILD_INSTALL OFF)
8
8
 
9
- include(FetchContent)
10
- FetchContent_Declare(
11
- glm
12
- GIT_REPOSITORY https://github.com/g-truc/glm.git
13
- GIT_TAG ${ERNIE_DEP_VERSION_glm}
14
- GIT_SHALLOW TRUE
15
- )
16
- FetchContent_MakeAvailable(glm)
9
+ ernie_fetch(glm URL https://github.com/g-truc/glm/archive/refs/tags/${ERNIE_DEP_VERSION_glm}.tar.gz)
17
10
 
18
11
  add_library(ernie_glm INTERFACE)
19
12
  target_include_directories(ernie_glm SYSTEM INTERFACE "${glm_SOURCE_DIR}")
@@ -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)
@@ -3,12 +3,10 @@ set(ERNIE_DEP_VERSION_json v3.12.0 CACHE STRING "Release of nlohmann/json to fet
3
3
  mark_as_advanced(ERNIE_DEP_VERSION_json)
4
4
 
5
5
  # The release's single-include archive, without the repository's tests and history.
6
- include(FetchContent)
7
- FetchContent_Declare(
6
+ ernie_fetch(
8
7
  nlohmann_json
9
8
  URL https://github.com/nlohmann/json/releases/download/${ERNIE_DEP_VERSION_json}/include.zip
10
9
  )
11
- FetchContent_MakeAvailable(nlohmann_json)
12
10
 
13
11
  add_library(ernie_json INTERFACE)
14
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)
@@ -0,0 +1,28 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ # stb has no releases, so a commit is pinned.
3
+ set(ERNIE_DEP_VERSION_stb
4
+ 2c980bb59875b0d32144a71867fbdebb2f77cd20
5
+ CACHE STRING
6
+ "Commit of stb to fetch"
7
+ )
8
+ mark_as_advanced(ERNIE_DEP_VERSION_stb)
9
+
10
+ ernie_fetch(
11
+ stb
12
+ URL https://github.com/nothings/stb/archive/${ERNIE_DEP_VERSION_stb}.tar.gz
13
+ SOURCE_SUBDIR no-build
14
+ )
15
+
16
+ # stb is header-only: its implementations of stb_image (PNG, JPEG) and stb_image_write are compiled
17
+ # once, from a source written into the build tree.
18
+ set(ernie_stb_source "${CMAKE_BINARY_DIR}/stb/stb.cpp")
19
+ file(
20
+ CONFIGURE
21
+ OUTPUT "${ernie_stb_source}"
22
+ CONTENT
23
+ "#define STB_IMAGE_IMPLEMENTATION\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include <stb_image.h>\n#include <stb_image_write.h>\n"
24
+ )
25
+ add_library(ernie_stb STATIC "${ernie_stb_source}")
26
+ target_include_directories(ernie_stb SYSTEM PUBLIC "${stb_SOURCE_DIR}")
27
+ target_compile_definitions(ernie_stb PUBLIC STBI_ONLY_PNG STBI_ONLY_JPEG)
28
+ set_target_properties(ernie_stb PROPERTIES POSITION_INDEPENDENT_CODE ON)
@@ -12,14 +12,10 @@ endif()
12
12
  set(TRACY_ENABLE ON CACHE BOOL "" FORCE)
13
13
  set(TRACY_ON_DEMAND ON CACHE BOOL "" FORCE)
14
14
 
15
- include(FetchContent)
16
- FetchContent_Declare(
15
+ ernie_fetch(
17
16
  tracy
18
- GIT_REPOSITORY https://github.com/wolfpld/tracy.git
19
- GIT_TAG ${ERNIE_DEP_VERSION_tracy}
20
- GIT_SHALLOW TRUE
17
+ URL https://github.com/wolfpld/tracy/archive/refs/tags/${ERNIE_DEP_VERSION_tracy}.tar.gz
21
18
  )
22
- FetchContent_MakeAvailable(tracy)
23
19
  set_target_properties(
24
20
  TracyClient
25
21
  PROPERTIES POSITION_INDEPENDENT_CODE ON COMPILE_WARNING_AS_ERROR OFF
@@ -2,15 +2,11 @@
2
2
  set(ERNIE_DEP_VERSION_volk vulkan-sdk-1.4.363.0 CACHE STRING "Tag of volk to fetch")
3
3
  mark_as_advanced(ERNIE_DEP_VERSION_volk)
4
4
 
5
- include(FetchContent)
6
- FetchContent_Declare(
5
+ ernie_fetch(
7
6
  volk
8
- GIT_REPOSITORY https://github.com/zeux/volk.git
9
- GIT_TAG ${ERNIE_DEP_VERSION_volk}
10
- GIT_SHALLOW TRUE
7
+ URL https://github.com/zeux/volk/archive/refs/tags/${ERNIE_DEP_VERSION_volk}.tar.gz
11
8
  SOURCE_SUBDIR no-build
12
9
  )
13
- FetchContent_MakeAvailable(volk)
14
10
 
15
11
  # Loads the Vulkan loader at run time, so nothing links against libvulkan.
16
12
  add_library(ernie_volk STATIC "${volk_SOURCE_DIR}/volk.c")
@@ -6,15 +6,12 @@ set(ERNIE_DEP_VERSION_vulkan_headers
6
6
  )
7
7
  mark_as_advanced(ERNIE_DEP_VERSION_vulkan_headers)
8
8
 
9
- include(FetchContent)
10
- FetchContent_Declare(
9
+ ernie_fetch(
11
10
  vulkan_headers
12
- GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git
13
- GIT_TAG ${ERNIE_DEP_VERSION_vulkan_headers}
14
- GIT_SHALLOW TRUE
11
+ URL
12
+ https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/${ERNIE_DEP_VERSION_vulkan_headers}.tar.gz
15
13
  SOURCE_SUBDIR no-build
16
14
  )
17
- FetchContent_MakeAvailable(vulkan_headers)
18
15
 
19
16
  add_library(ernie_vulkan_headers INTERFACE)
20
17
  target_include_directories(
@@ -1,7 +1,7 @@
1
1
  # SPDX-License-Identifier: BSD-3-Clause
2
2
 
3
3
  # One target per layer; a layer links only the layers below it.
4
- add_subdirectory(core)
4
+ add_subdirectory(util)
5
5
  add_subdirectory(physics)
6
6
  add_subdirectory(io)
7
7
  add_subdirectory(scene)
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: BSD-3-Clause
2
2
  /// @file main.cpp
3
3
  /// @brief The ernie program.
4
- #include "ernie/core/version.h"
5
4
  #include "ernie/device/vulkan_devices.h"
5
+ #include "ernie/util/version.h"
6
6
 
7
7
  #include <cstdio>
8
8
  #include <exception>
@@ -1,3 +1,3 @@
1
1
  # SPDX-License-Identifier: BSD-3-Clause
2
2
  add_library(ernie_device STATIC vulkan_devices.cpp)
3
- target_link_libraries(ernie_device PUBLIC ernie_core PRIVATE ernie_volk ernie_build_options)
3
+ target_link_libraries(ernie_device PUBLIC ernie_util PRIVATE ernie_volk ernie_build_options)
@@ -0,0 +1,22 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ add_library(
3
+ ernie_io
4
+ STATIC
5
+ ies.cpp
6
+ image.cpp
7
+ nanovdb.cpp
8
+ raster.cpp
9
+ texture.cpp
10
+ )
11
+ target_link_libraries(
12
+ ernie_io
13
+ PUBLIC ernie_util
14
+ PRIVATE
15
+ ernie_build_options
16
+ ernie_basisu
17
+ ernie_bc7enc
18
+ ernie_nanovdb
19
+ ernie_openexr
20
+ ernie_stb
21
+ ernie_zstd
22
+ )