ernie-renderer 0.1.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 (639) hide show
  1. ernie_renderer-0.1.0/.clang-format +16 -0
  2. ernie_renderer-0.1.0/.clang-tidy +30 -0
  3. ernie_renderer-0.1.0/.dockerignore +9 -0
  4. ernie_renderer-0.1.0/.gersemirc +5 -0
  5. ernie_renderer-0.1.0/.gitattributes +11 -0
  6. ernie_renderer-0.1.0/.github/actions/msvc/action.yml +27 -0
  7. ernie_renderer-0.1.0/.github/actions/vulkan-validation/action.yml +42 -0
  8. ernie_renderer-0.1.0/.github/workflows/build.yml +180 -0
  9. ernie_renderer-0.1.0/.github/workflows/ci.yml +106 -0
  10. ernie_renderer-0.1.0/.github/workflows/coverage.yml +97 -0
  11. ernie_renderer-0.1.0/.github/workflows/docker.yml +34 -0
  12. ernie_renderer-0.1.0/.github/workflows/docs.yml +24 -0
  13. ernie_renderer-0.1.0/.github/workflows/lint.yml +25 -0
  14. ernie_renderer-0.1.0/.github/workflows/packages.yml +139 -0
  15. ernie_renderer-0.1.0/.github/workflows/release.yml +40 -0
  16. ernie_renderer-0.1.0/.github/workflows/version.yml +22 -0
  17. ernie_renderer-0.1.0/.github/workflows/wheels.yml +71 -0
  18. ernie_renderer-0.1.0/.gitignore +16 -0
  19. ernie_renderer-0.1.0/.gitmodules +5 -0
  20. ernie_renderer-0.1.0/.pre-commit-config.yaml +35 -0
  21. ernie_renderer-0.1.0/AGENTS.md +1 -0
  22. ernie_renderer-0.1.0/CHANGELOG.md +33 -0
  23. ernie_renderer-0.1.0/CITATION.cff +22 -0
  24. ernie_renderer-0.1.0/CLAUDE.md +19 -0
  25. ernie_renderer-0.1.0/CMakeLists.txt +86 -0
  26. ernie_renderer-0.1.0/CMakePresets.json +206 -0
  27. ernie_renderer-0.1.0/CONTRIBUTING.md +1 -0
  28. ernie_renderer-0.1.0/Dockerfile +41 -0
  29. ernie_renderer-0.1.0/LICENSE +28 -0
  30. ernie_renderer-0.1.0/PKG-INFO +242 -0
  31. ernie_renderer-0.1.0/README.md +225 -0
  32. ernie_renderer-0.1.0/benchmarks/.gitignore +9 -0
  33. ernie_renderer-0.1.0/benchmarks/README.md +119 -0
  34. ernie_renderer-0.1.0/benchmarks/configs/scenes/hide_and_seek.toml +9 -0
  35. ernie_renderer-0.1.0/benchmarks/configs/suites/compare-full.toml +19 -0
  36. ernie_renderer-0.1.0/benchmarks/configs/suites/compare.toml +19 -0
  37. ernie_renderer-0.1.0/benchmarks/configs/suites/quality.toml +24 -0
  38. ernie_renderer-0.1.0/benchmarks/configs/suites/smoke.toml +21 -0
  39. ernie_renderer-0.1.0/benchmarks/configs/workloads/throughput.toml +20 -0
  40. ernie_renderer-0.1.0/benchmarks/envs/ernie/requirements.txt +3 -0
  41. ernie_renderer-0.1.0/benchmarks/envs/madrona/paths.txt +1 -0
  42. ernie_renderer-0.1.0/benchmarks/envs/madrona/requirements.txt +2 -0
  43. ernie_renderer-0.1.0/benchmarks/envs/mitsuba/requirements.txt +3 -0
  44. ernie_renderer-0.1.0/benchmarks/envs/newton/requirements.txt +3 -0
  45. ernie_renderer-0.1.0/benchmarks/envs/ovrtx/requirements.txt +4 -0
  46. ernie_renderer-0.1.0/benchmarks/ernie_bench/__init__.py +2 -0
  47. ernie_renderer-0.1.0/benchmarks/ernie_bench/analysis.py +144 -0
  48. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/__init__.py +33 -0
  49. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/base.py +111 -0
  50. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/ernie.py +213 -0
  51. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/madrona.py +167 -0
  52. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/mitsuba.py +144 -0
  53. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/newton.py +139 -0
  54. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/null.py +42 -0
  55. ernie_renderer-0.1.0/benchmarks/ernie_bench/backends/ovrtx.py +255 -0
  56. ernie_renderer-0.1.0/benchmarks/ernie_bench/cli.py +388 -0
  57. ernie_renderer-0.1.0/benchmarks/ernie_bench/config.py +173 -0
  58. ernie_renderer-0.1.0/benchmarks/ernie_bench/datasets/__init__.py +16 -0
  59. ernie_renderer-0.1.0/benchmarks/ernie_bench/datasets/hide_and_seek.py +175 -0
  60. ernie_renderer-0.1.0/benchmarks/ernie_bench/datasets/shapes.py +58 -0
  61. ernie_renderer-0.1.0/benchmarks/ernie_bench/harness.py +493 -0
  62. ernie_renderer-0.1.0/benchmarks/ernie_bench/media.py +279 -0
  63. ernie_renderer-0.1.0/benchmarks/ernie_bench/paper.py +135 -0
  64. ernie_renderer-0.1.0/benchmarks/ernie_bench/profile.py +136 -0
  65. ernie_renderer-0.1.0/benchmarks/ernie_bench/quality.py +179 -0
  66. ernie_renderer-0.1.0/benchmarks/ernie_bench/reference.py +125 -0
  67. ernie_renderer-0.1.0/benchmarks/ernie_bench/report.py +376 -0
  68. ernie_renderer-0.1.0/benchmarks/ernie_bench/results.py +85 -0
  69. ernie_renderer-0.1.0/benchmarks/ernie_bench/scene.py +171 -0
  70. ernie_renderer-0.1.0/benchmarks/ernie_bench/stats.py +47 -0
  71. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/__init__.py +1 -0
  72. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/cuda.py +159 -0
  73. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/load.py +68 -0
  74. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/machine.py +154 -0
  75. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/monitor.py +95 -0
  76. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/nvml.py +26 -0
  77. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/perf.py +135 -0
  78. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/process.py +61 -0
  79. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/sampler.py +80 -0
  80. ernie_renderer-0.1.0/benchmarks/ernie_bench/system/tuning.py +140 -0
  81. ernie_renderer-0.1.0/benchmarks/ernie_bench/worker.py +45 -0
  82. ernie_renderer-0.1.0/benchmarks/native/madrona/CMakeLists.txt +23 -0
  83. ernie_renderer-0.1.0/benchmarks/native/madrona/patches/0001-header-updates-for-cuda-12.8.patch +37 -0
  84. ernie_renderer-0.1.0/benchmarks/native/madrona/patches/0002-rt-depth-conversion-for-last-stack-node.patch +24 -0
  85. ernie_renderer-0.1.0/benchmarks/native/madrona/src/CMakeLists.txt +61 -0
  86. ernie_renderer-0.1.0/benchmarks/native/madrona/src/bindings.cpp +94 -0
  87. ernie_renderer-0.1.0/benchmarks/native/madrona/src/mgr.cpp +252 -0
  88. ernie_renderer-0.1.0/benchmarks/native/madrona/src/mgr.hpp +67 -0
  89. ernie_renderer-0.1.0/benchmarks/native/madrona/src/sim.cpp +76 -0
  90. ernie_renderer-0.1.0/benchmarks/native/madrona/src/sim.hpp +58 -0
  91. ernie_renderer-0.1.0/benchmarks/native/madrona/src/sim.inl +9 -0
  92. ernie_renderer-0.1.0/benchmarks/native/madrona/src/types.hpp +25 -0
  93. ernie_renderer-0.1.0/benchmarks/pyproject.toml +28 -0
  94. ernie_renderer-0.1.0/benchmarks/scripts/make-env +35 -0
  95. ernie_renderer-0.1.0/benchmarks/scripts/setup-madrona +37 -0
  96. ernie_renderer-0.1.0/benchmarks/scripts/system-prep +268 -0
  97. ernie_renderer-0.1.0/benchmarks/tests/conftest.py +148 -0
  98. ernie_renderer-0.1.0/benchmarks/tests/test_accuracy.py +170 -0
  99. ernie_renderer-0.1.0/benchmarks/tests/test_analysis.py +147 -0
  100. ernie_renderer-0.1.0/benchmarks/tests/test_backends.py +92 -0
  101. ernie_renderer-0.1.0/benchmarks/tests/test_config.py +45 -0
  102. ernie_renderer-0.1.0/benchmarks/tests/test_counters.py +317 -0
  103. ernie_renderer-0.1.0/benchmarks/tests/test_device.py +59 -0
  104. ernie_renderer-0.1.0/benchmarks/tests/test_ernie.py +67 -0
  105. ernie_renderer-0.1.0/benchmarks/tests/test_harness.py +150 -0
  106. ernie_renderer-0.1.0/benchmarks/tests/test_hide_and_seek.py +74 -0
  107. ernie_renderer-0.1.0/benchmarks/tests/test_media.py +155 -0
  108. ernie_renderer-0.1.0/benchmarks/tests/test_paper.py +70 -0
  109. ernie_renderer-0.1.0/benchmarks/tests/test_profile.py +56 -0
  110. ernie_renderer-0.1.0/benchmarks/tests/test_quality.py +85 -0
  111. ernie_renderer-0.1.0/benchmarks/tests/test_reference.py +126 -0
  112. ernie_renderer-0.1.0/benchmarks/tests/test_stats.py +57 -0
  113. ernie_renderer-0.1.0/benchmarks/tests/test_system.py +134 -0
  114. ernie_renderer-0.1.0/benchmarks/tests/test_worker.py +171 -0
  115. ernie_renderer-0.1.0/benchmarks/tests/worker_backends.py +89 -0
  116. ernie_renderer-0.1.0/cmake/ErnieBuildInfo.cmake +68 -0
  117. ernie_renderer-0.1.0/cmake/ErnieConfig.cmake.in +84 -0
  118. ernie_renderer-0.1.0/cmake/ErnieEmbed.cmake +104 -0
  119. ernie_renderer-0.1.0/cmake/ErnieInstall.cmake +395 -0
  120. ernie_renderer-0.1.0/cmake/ErnieLibraries.cmake +251 -0
  121. ernie_renderer-0.1.0/cmake/ErniePackaging.cmake +148 -0
  122. ernie_renderer-0.1.0/cmake/ErniePrelude.cmake +113 -0
  123. ernie_renderer-0.1.0/cmake/ErnieSchema.cmake +2203 -0
  124. ernie_renderer-0.1.0/cmake/ernie.pc.in +11 -0
  125. ernie_renderer-0.1.0/cmake/third_party/basisu.cmake +109 -0
  126. ernie_renderer-0.1.0/cmake/third_party/bc7enc.cmake +24 -0
  127. ernie_renderer-0.1.0/cmake/third_party/cgltf.cmake +24 -0
  128. ernie_renderer-0.1.0/cmake/third_party/dear_imgui.cmake +114 -0
  129. ernie_renderer-0.1.0/cmake/third_party/dlpack.cmake +24 -0
  130. ernie_renderer-0.1.0/cmake/third_party/fonts.cmake +73 -0
  131. ernie_renderer-0.1.0/cmake/third_party/glfw.cmake +13 -0
  132. ernie_renderer-0.1.0/cmake/third_party/google_benchmark.cmake +13 -0
  133. ernie_renderer-0.1.0/cmake/third_party/google_test.cmake +10 -0
  134. ernie_renderer-0.1.0/cmake/third_party/imguizmo.cmake +15 -0
  135. ernie_renderer-0.1.0/cmake/third_party/json.cmake +12 -0
  136. ernie_renderer-0.1.0/cmake/third_party/meshoptimizer.cmake +20 -0
  137. ernie_renderer-0.1.0/cmake/third_party/mikktspace.cmake +18 -0
  138. ernie_renderer-0.1.0/cmake/third_party/nanobind.cmake +24 -0
  139. ernie_renderer-0.1.0/cmake/third_party/nvtx.cmake +13 -0
  140. ernie_renderer-0.1.0/cmake/third_party/openexr.cmake +75 -0
  141. ernie_renderer-0.1.0/cmake/third_party/openxr.cmake +21 -0
  142. ernie_renderer-0.1.0/cmake/third_party/slang.cmake +56 -0
  143. ernie_renderer-0.1.0/cmake/third_party/stb.cmake +31 -0
  144. ernie_renderer-0.1.0/cmake/third_party/tinyobjloader.cmake +18 -0
  145. ernie_renderer-0.1.0/cmake/third_party/vma.cmake +29 -0
  146. ernie_renderer-0.1.0/cmake/third_party/volk.cmake +9 -0
  147. ernie_renderer-0.1.0/cmake/third_party/vulkan_headers.cmake +8 -0
  148. ernie_renderer-0.1.0/docs/Makefile +14 -0
  149. ernie_renderer-0.1.0/docs/_src/acknowledgements.md +3 -0
  150. ernie_renderer-0.1.0/docs/_src/changelog.md +1 -0
  151. ernie_renderer-0.1.0/docs/_src/citing.md +7 -0
  152. ernie_renderer-0.1.0/docs/_src/concepts/index.md +1 -0
  153. ernie_renderer-0.1.0/docs/_src/coverage.md +5 -0
  154. ernie_renderer-0.1.0/docs/_src/gallery/index.md +1 -0
  155. ernie_renderer-0.1.0/docs/_src/guides/index.md +1 -0
  156. ernie_renderer-0.1.0/docs/_src/images/readme_front_DistanceToCamera.png +0 -0
  157. ernie_renderer-0.1.0/docs/_src/images/readme_front_LdrColor.png +0 -0
  158. ernie_renderer-0.1.0/docs/_src/images/readme_front_Normal.png +0 -0
  159. ernie_renderer-0.1.0/docs/_src/images/readme_front_SemanticSegmentation.png +0 -0
  160. ernie_renderer-0.1.0/docs/_src/images/readme_top_DistanceToCamera.png +0 -0
  161. ernie_renderer-0.1.0/docs/_src/images/readme_top_LdrColor.png +0 -0
  162. ernie_renderer-0.1.0/docs/_src/images/readme_top_Normal.png +0 -0
  163. ernie_renderer-0.1.0/docs/_src/images/readme_top_SemanticSegmentation.png +0 -0
  164. ernie_renderer-0.1.0/docs/_src/index.md +13 -0
  165. ernie_renderer-0.1.0/docs/_src/installation.md +228 -0
  166. ernie_renderer-0.1.0/docs/_src/license.md +7 -0
  167. ernie_renderer-0.1.0/docs/_src/quickstart.md +1 -0
  168. ernie_renderer-0.1.0/docs/_src/reference/index.md +1 -0
  169. ernie_renderer-0.1.0/docs/overrides/css/extra.css +596 -0
  170. ernie_renderer-0.1.0/docs/overrides/js/katex.js +12 -0
  171. ernie_renderer-0.1.0/docs/overrides/partials/header.html +45 -0
  172. ernie_renderer-0.1.0/docs/overrides/partials/nav.html +34 -0
  173. ernie_renderer-0.1.0/docs/requirements.txt +2 -0
  174. ernie_renderer-0.1.0/docs/snippets/readme.py +20 -0
  175. ernie_renderer-0.1.0/ernie/CMakeLists.txt +68 -0
  176. ernie_renderer-0.1.0/ernie/algorithms/CMakeLists.txt +23 -0
  177. ernie_renderer-0.1.0/ernie/algorithms/kernels/group.slang +132 -0
  178. ernie_renderer-0.1.0/ernie/algorithms/kernels/radix_sort.h +31 -0
  179. ernie_renderer-0.1.0/ernie/algorithms/kernels/radix_sort.slang +180 -0
  180. ernie_renderer-0.1.0/ernie/algorithms/kernels/scan.h +23 -0
  181. ernie_renderer-0.1.0/ernie/algorithms/kernels/scan.slang +79 -0
  182. ernie_renderer-0.1.0/ernie/algorithms/radix_sort.cpp +117 -0
  183. ernie_renderer-0.1.0/ernie/algorithms/radix_sort.h +50 -0
  184. ernie_renderer-0.1.0/ernie/algorithms/scan.cpp +96 -0
  185. ernie_renderer-0.1.0/ernie/algorithms/scan.h +57 -0
  186. ernie_renderer-0.1.0/ernie/app/CMakeLists.txt +39 -0
  187. ernie_renderer-0.1.0/ernie/app/cli.cpp +323 -0
  188. ernie_renderer-0.1.0/ernie/app/cli.h +51 -0
  189. ernie_renderer-0.1.0/ernie/app/main.cpp +9 -0
  190. ernie_renderer-0.1.0/ernie/app/render.cpp +244 -0
  191. ernie_renderer-0.1.0/ernie/app/render.h +20 -0
  192. ernie_renderer-0.1.0/ernie/app/viewer/CMakeLists.txt +146 -0
  193. ernie_renderer-0.1.0/ernie/app/viewer/imgui_config.h +6 -0
  194. ernie_renderer-0.1.0/ernie/app/viewer/overlays/hud.cpp +67 -0
  195. ernie_renderer-0.1.0/ernie/app/viewer/overlays/hud.h +28 -0
  196. ernie_renderer-0.1.0/ernie/app/viewer/overlays/toolbar.cpp +643 -0
  197. ernie_renderer-0.1.0/ernie/app/viewer/overlays/toolbar.h +68 -0
  198. ernie_renderer-0.1.0/ernie/app/viewer/panels/capture.cpp +120 -0
  199. ernie_renderer-0.1.0/ernie/app/viewer/panels/help.cpp +139 -0
  200. ernie_renderer-0.1.0/ernie/app/viewer/panels/memory.cpp +132 -0
  201. ernie_renderer-0.1.0/ernie/app/viewer/panels/panels.h +48 -0
  202. ernie_renderer-0.1.0/ernie/app/viewer/panels/profiler.cpp +467 -0
  203. ernie_renderer-0.1.0/ernie/app/viewer/panels/properties.cpp +820 -0
  204. ernie_renderer-0.1.0/ernie/app/viewer/panels/stage.cpp +549 -0
  205. ernie_renderer-0.1.0/ernie/app/viewer/panels/status.cpp +196 -0
  206. ernie_renderer-0.1.0/ernie/app/viewer/presenter/presenter.h +40 -0
  207. ernie_renderer-0.1.0/ernie/app/viewer/presenter/vulkan_presenter.cpp +762 -0
  208. ernie_renderer-0.1.0/ernie/app/viewer/shell/capture.cpp +283 -0
  209. ernie_renderer-0.1.0/ernie/app/viewer/shell/capture.h +92 -0
  210. ernie_renderer-0.1.0/ernie/app/viewer/shell/editor.cpp +319 -0
  211. ernie_renderer-0.1.0/ernie/app/viewer/shell/editor.h +55 -0
  212. ernie_renderer-0.1.0/ernie/app/viewer/shell/history.h +75 -0
  213. ernie_renderer-0.1.0/ernie/app/viewer/shell/selection.h +35 -0
  214. ernie_renderer-0.1.0/ernie/app/viewer/theme/theme.cpp +333 -0
  215. ernie_renderer-0.1.0/ernie/app/viewer/theme/theme.h +101 -0
  216. ernie_renderer-0.1.0/ernie/app/viewer/viewer.cpp +1720 -0
  217. ernie_renderer-0.1.0/ernie/app/viewer/viewer.h +324 -0
  218. ernie_renderer-0.1.0/ernie/app/viewer/viewport/gizmo.cpp +581 -0
  219. ernie_renderer-0.1.0/ernie/app/viewer/viewport/gizmo.h +110 -0
  220. ernie_renderer-0.1.0/ernie/app/viewer/viewport/orbit_camera.cpp +55 -0
  221. ernie_renderer-0.1.0/ernie/app/viewer/viewport/orbit_camera.h +27 -0
  222. ernie_renderer-0.1.0/ernie/app/viewer/viewport/viewport.cpp +1710 -0
  223. ernie_renderer-0.1.0/ernie/app/viewer/viewport/viewport.h +455 -0
  224. ernie_renderer-0.1.0/ernie/app/viewer/viewport/viewport.slang +29 -0
  225. ernie_renderer-0.1.0/ernie/app/viewer/widgets/asset_path.cpp +65 -0
  226. ernie_renderer-0.1.0/ernie/app/viewer/widgets/asset_path.h +24 -0
  227. ernie_renderer-0.1.0/ernie/app/viewer/widgets/file_dialog.cpp +379 -0
  228. ernie_renderer-0.1.0/ernie/app/viewer/widgets/file_dialog.h +89 -0
  229. ernie_renderer-0.1.0/ernie/app/viewer/widgets/widgets.cpp +61 -0
  230. ernie_renderer-0.1.0/ernie/app/viewer/widgets/widgets.h +18 -0
  231. ernie_renderer-0.1.0/ernie/bvh/CMakeLists.txt +28 -0
  232. ernie_renderer-0.1.0/ernie/bvh/builder.cpp +59 -0
  233. ernie_renderer-0.1.0/ernie/bvh/builder.h +108 -0
  234. ernie_renderer-0.1.0/ernie/bvh/common.cpp +107 -0
  235. ernie_renderer-0.1.0/ernie/bvh/common.h +68 -0
  236. ernie_renderer-0.1.0/ernie/bvh/hardware_builder.cpp +278 -0
  237. ernie_renderer-0.1.0/ernie/bvh/inspect.cpp +295 -0
  238. ernie_renderer-0.1.0/ernie/bvh/inspect.h +27 -0
  239. ernie_renderer-0.1.0/ernie/bvh/kernels/bvh.h +376 -0
  240. ernie_renderer-0.1.0/ernie/bvh/kernels/common.slang +56 -0
  241. ernie_renderer-0.1.0/ernie/bvh/kernels/instances.h +37 -0
  242. ernie_renderer-0.1.0/ernie/bvh/kernels/instances.slang +34 -0
  243. ernie_renderer-0.1.0/ernie/bvh/kernels/lbvh.h +87 -0
  244. ernie_renderer-0.1.0/ernie/bvh/kernels/lbvh.slang +461 -0
  245. ernie_renderer-0.1.0/ernie/bvh/kernels/refit.h +30 -0
  246. ernie_renderer-0.1.0/ernie/bvh/kernels/refit.slang +192 -0
  247. ernie_renderer-0.1.0/ernie/bvh/lbvh.cpp +271 -0
  248. ernie_renderer-0.1.0/ernie/bvh/lbvh.h +70 -0
  249. ernie_renderer-0.1.0/ernie/bvh/reference.cpp +321 -0
  250. ernie_renderer-0.1.0/ernie/bvh/reference.h +21 -0
  251. ernie_renderer-0.1.0/ernie/bvh/software_builder.cpp +319 -0
  252. ernie_renderer-0.1.0/ernie/bvh/software_builder.h +58 -0
  253. ernie_renderer-0.1.0/ernie/device/CMakeLists.txt +96 -0
  254. ernie_renderer-0.1.0/ernie/device/accel.h +116 -0
  255. ernie_renderer-0.1.0/ernie/device/adapter.h +85 -0
  256. ernie_renderer-0.1.0/ernie/device/buffer.cpp +47 -0
  257. ernie_renderer-0.1.0/ernie/device/buffer.h +162 -0
  258. ernie_renderer-0.1.0/ernie/device/commands.cpp +390 -0
  259. ernie_renderer-0.1.0/ernie/device/commands.h +218 -0
  260. ernie_renderer-0.1.0/ernie/device/compute/compute.h +784 -0
  261. ernie_renderer-0.1.0/ernie/device/compute/prelude.cuh +24 -0
  262. ernie_renderer-0.1.0/ernie/device/compute/runtime_compiler.cpp +154 -0
  263. ernie_renderer-0.1.0/ernie/device/compute/runtime_compiler.h +87 -0
  264. ernie_renderer-0.1.0/ernie/device/cuda/adapters.cpp +69 -0
  265. ernie_renderer-0.1.0/ernie/device/cuda/api.cpp +198 -0
  266. ernie_renderer-0.1.0/ernie/device/cuda/api.h +352 -0
  267. ernie_renderer-0.1.0/ernie/device/cuda/device.cpp +341 -0
  268. ernie_renderer-0.1.0/ernie/device/cuda/device.h +138 -0
  269. ernie_renderer-0.1.0/ernie/device/device.cpp +839 -0
  270. ernie_renderer-0.1.0/ernie/device/device.h +277 -0
  271. ernie_renderer-0.1.0/ernie/device/hip/adapters.cpp +70 -0
  272. ernie_renderer-0.1.0/ernie/device/hip/api.cpp +180 -0
  273. ernie_renderer-0.1.0/ernie/device/hip/api.h +357 -0
  274. ernie_renderer-0.1.0/ernie/device/hip/device.cpp +337 -0
  275. ernie_renderer-0.1.0/ernie/device/hip/device.h +132 -0
  276. ernie_renderer-0.1.0/ernie/device/hip/prelude.hip +150 -0
  277. ernie_renderer-0.1.0/ernie/device/kernels/device.h +38 -0
  278. ernie_renderer-0.1.0/ernie/device/kernels/device.slang +153 -0
  279. ernie_renderer-0.1.0/ernie/device/kernels/shared.h +56 -0
  280. ernie_renderer-0.1.0/ernie/device/kernels/texture.h +137 -0
  281. ernie_renderer-0.1.0/ernie/device/operation.h +49 -0
  282. ernie_renderer-0.1.0/ernie/device/program.cpp +406 -0
  283. ernie_renderer-0.1.0/ernie/device/program.h +144 -0
  284. ernie_renderer-0.1.0/ernie/device/queue.cpp +796 -0
  285. ernie_renderer-0.1.0/ernie/device/queue.h +142 -0
  286. ernie_renderer-0.1.0/ernie/device/ref.h +112 -0
  287. ernie_renderer-0.1.0/ernie/device/resource.h +38 -0
  288. ernie_renderer-0.1.0/ernie/device/slang/compiler.cpp +504 -0
  289. ernie_renderer-0.1.0/ernie/device/slang/compiler.h +57 -0
  290. ernie_renderer-0.1.0/ernie/device/slang/debug.cpp +151 -0
  291. ernie_renderer-0.1.0/ernie/device/slang/debug.h +56 -0
  292. ernie_renderer-0.1.0/ernie/device/slang/dispatch.h +24 -0
  293. ernie_renderer-0.1.0/ernie/device/slang/kernel_library.h +20 -0
  294. ernie_renderer-0.1.0/ernie/device/stream.h +55 -0
  295. ernie_renderer-0.1.0/ernie/device/tensor.cpp +179 -0
  296. ernie_renderer-0.1.0/ernie/device/tensor.h +119 -0
  297. ernie_renderer-0.1.0/ernie/device/texture.h +54 -0
  298. ernie_renderer-0.1.0/ernie/device/vulkan/adapters.cpp +229 -0
  299. ernie_renderer-0.1.0/ernie/device/vulkan/api.cpp +236 -0
  300. ernie_renderer-0.1.0/ernie/device/vulkan/api.h +63 -0
  301. ernie_renderer-0.1.0/ernie/device/vulkan/device.cpp +1144 -0
  302. ernie_renderer-0.1.0/ernie/device/vulkan/device.h +338 -0
  303. ernie_renderer-0.1.0/ernie/device/vulkan/interop.cpp +675 -0
  304. ernie_renderer-0.1.0/ernie/device/vulkan/interop.h +49 -0
  305. ernie_renderer-0.1.0/ernie/device/vulkan/native.cpp +68 -0
  306. ernie_renderer-0.1.0/ernie/device/vulkan/native.h +52 -0
  307. ernie_renderer-0.1.0/ernie/device/vulkan/queue.cpp +516 -0
  308. ernie_renderer-0.1.0/ernie/ernie.h +18 -0
  309. ernie_renderer-0.1.0/ernie/import/CMakeLists.txt +16 -0
  310. ernie_renderer-0.1.0/ernie/import/importer.cpp +454 -0
  311. ernie_renderer-0.1.0/ernie/import/importer.h +137 -0
  312. ernie_renderer-0.1.0/ernie/import/obj.cpp +396 -0
  313. ernie_renderer-0.1.0/ernie/import/obj.h +12 -0
  314. ernie_renderer-0.1.0/ernie/io/CMakeLists.txt +34 -0
  315. ernie_renderer-0.1.0/ernie/io/ies.cpp +158 -0
  316. ernie_renderer-0.1.0/ernie/io/ies.h +16 -0
  317. ernie_renderer-0.1.0/ernie/io/image.cpp +736 -0
  318. ernie_renderer-0.1.0/ernie/io/image.h +150 -0
  319. ernie_renderer-0.1.0/ernie/io/kernels/colorize.h +175 -0
  320. ernie_renderer-0.1.0/ernie/io/kernels/colorize.slang +88 -0
  321. ernie_renderer-0.1.0/ernie/io/kernels/encoding.h +63 -0
  322. ernie_renderer-0.1.0/ernie/io/kernels/encoding.slang +3 -0
  323. ernie_renderer-0.1.0/ernie/io/kernels/ies.h +11 -0
  324. ernie_renderer-0.1.0/ernie/python/CMakeLists.txt +184 -0
  325. ernie_renderer-0.1.0/ernie/python/ernie/__init__.py +153 -0
  326. ernie_renderer-0.1.0/ernie/python/ernie/__main__.py +12 -0
  327. ernie_renderer-0.1.0/ernie/python/ernie/_typed.py +151 -0
  328. ernie_renderer-0.1.0/ernie/python/ernie/py.typed +0 -0
  329. ernie_renderer-0.1.0/ernie/python/ernie/viewer.py +188 -0
  330. ernie_renderer-0.1.0/ernie/python/src/bindings.h +132 -0
  331. ernie_renderer-0.1.0/ernie/python/src/device.cpp +244 -0
  332. ernie_renderer-0.1.0/ernie/python/src/dlpack.cpp +283 -0
  333. ernie_renderer-0.1.0/ernie/python/src/imgui.cpp +251 -0
  334. ernie_renderer-0.1.0/ernie/python/src/importer.cpp +269 -0
  335. ernie_renderer-0.1.0/ernie/python/src/io.cpp +177 -0
  336. ernie_renderer-0.1.0/ernie/python/src/module.cpp +27 -0
  337. ernie_renderer-0.1.0/ernie/python/src/render.cpp +982 -0
  338. ernie_renderer-0.1.0/ernie/python/src/rotation.cpp +56 -0
  339. ernie_renderer-0.1.0/ernie/python/src/scene.cpp +990 -0
  340. ernie_renderer-0.1.0/ernie/python/src/values.cpp +141 -0
  341. ernie_renderer-0.1.0/ernie/python/src/values.h +64 -0
  342. ernie_renderer-0.1.0/ernie/python/src/viewer.cpp +570 -0
  343. ernie_renderer-0.1.0/ernie/render/CMakeLists.txt +43 -0
  344. ernie_renderer-0.1.0/ernie/render/kernels/background/background.slang +22 -0
  345. ernie_renderer-0.1.0/ernie/render/kernels/background/color.slang +22 -0
  346. ernie_renderer-0.1.0/ernie/render/kernels/background/gradient.slang +25 -0
  347. ernie_renderer-0.1.0/ernie/render/kernels/background/ibackground.slang +11 -0
  348. ernie_renderer-0.1.0/ernie/render/kernels/basis.slang +27 -0
  349. ernie_renderer-0.1.0/ernie/render/kernels/light/area.slang +373 -0
  350. ernie_renderer-0.1.0/ernie/render/kernels/light/distant.slang +79 -0
  351. ernie_renderer-0.1.0/ernie/render/kernels/light/dome.slang +188 -0
  352. ernie_renderer-0.1.0/ernie/render/kernels/light/ilight.slang +28 -0
  353. ernie_renderer-0.1.0/ernie/render/kernels/light/scatter.slang +91 -0
  354. ernie_renderer-0.1.0/ernie/render/kernels/material/diffuse.slang +55 -0
  355. ernie_renderer-0.1.0/ernie/render/kernels/material/ggx.slang +69 -0
  356. ernie_renderer-0.1.0/ernie/render/kernels/material/ibsdf.slang +46 -0
  357. ernie_renderer-0.1.0/ernie/render/kernels/material/imaterial.slang +28 -0
  358. ernie_renderer-0.1.0/ernie/render/kernels/material/imedium.slang +28 -0
  359. ernie_renderer-0.1.0/ernie/render/kernels/material/lambert.slang +42 -0
  360. ernie_renderer-0.1.0/ernie/render/kernels/material/mapping.slang +311 -0
  361. ernie_renderer-0.1.0/ernie/render/kernels/material/preview.slang +280 -0
  362. ernie_renderer-0.1.0/ernie/render/kernels/overlay/overlay.h +383 -0
  363. ernie_renderer-0.1.0/ernie/render/kernels/overlay/overlay.slang +1815 -0
  364. ernie_renderer-0.1.0/ernie/render/kernels/overlay/style.h +36 -0
  365. ernie_renderer-0.1.0/ernie/render/kernels/query/hit.slang +145 -0
  366. ernie_renderer-0.1.0/ernie/render/kernels/query/material.slang +50 -0
  367. ernie_renderer-0.1.0/ernie/render/kernels/query/ray_cast.h +36 -0
  368. ernie_renderer-0.1.0/ernie/render/kernels/query/ray_cast.slang +101 -0
  369. ernie_renderer-0.1.0/ernie/render/kernels/random.slang +42 -0
  370. ernie_renderer-0.1.0/ernie/render/kernels/render/irender.slang +39 -0
  371. ernie_renderer-0.1.0/ernie/render/kernels/render/minimal.slang +148 -0
  372. ernie_renderer-0.1.0/ernie/render/kernels/render/output.slang +122 -0
  373. ernie_renderer-0.1.0/ernie/render/kernels/render/realtime.slang +316 -0
  374. ernie_renderer-0.1.0/ernie/render/kernels/render/render.h +103 -0
  375. ernie_renderer-0.1.0/ernie/render/kernels/render/render.slang +127 -0
  376. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/camera.slang +15 -0
  377. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/frame.slang +126 -0
  378. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/icamera.slang +45 -0
  379. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/orthographic.slang +55 -0
  380. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/pattern.slang +33 -0
  381. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/perspective.slang +67 -0
  382. ernie_renderer-0.1.0/ernie/render/kernels/sensors/camera/response.slang +59 -0
  383. ernie_renderer-0.1.0/ernie/render/kernels/sensors/frame.slang +58 -0
  384. ernie_renderer-0.1.0/ernie/render/kernels/sensors/ipattern.slang +13 -0
  385. ernie_renderer-0.1.0/ernie/render/kernels/sensors/iresponse.slang +15 -0
  386. ernie_renderer-0.1.0/ernie/render/kernels/sensors/isensor.slang +12 -0
  387. ernie_renderer-0.1.0/ernie/render/kernels/sensors/lidar/pattern.slang +63 -0
  388. ernie_renderer-0.1.0/ernie/render/kernels/sensors/lidar/response.slang +158 -0
  389. ernie_renderer-0.1.0/ernie/render/kernels/sensors/points.slang +74 -0
  390. ernie_renderer-0.1.0/ernie/render/kernels/sensors/radar/pattern.slang +41 -0
  391. ernie_renderer-0.1.0/ernie/render/kernels/sensors/radar/response.slang +85 -0
  392. ernie_renderer-0.1.0/ernie/render/kernels/shapes/box.slang +57 -0
  393. ernie_renderer-0.1.0/ernie/render/kernels/shapes/capsule.slang +89 -0
  394. ernie_renderer-0.1.0/ernie/render/kernels/shapes/cone.slang +87 -0
  395. ernie_renderer-0.1.0/ernie/render/kernels/shapes/cylinder.slang +90 -0
  396. ernie_renderer-0.1.0/ernie/render/kernels/shapes/intersector.slang +92 -0
  397. ernie_renderer-0.1.0/ernie/render/kernels/shapes/ishape.slang +32 -0
  398. ernie_renderer-0.1.0/ernie/render/kernels/shapes/plane.slang +74 -0
  399. ernie_renderer-0.1.0/ernie/render/kernels/shapes/sphere.slang +52 -0
  400. ernie_renderer-0.1.0/ernie/render/kernels/spectrum/band.slang +90 -0
  401. ernie_renderer-0.1.0/ernie/render/kernels/spectrum/ispectrum.slang +77 -0
  402. ernie_renderer-0.1.0/ernie/render/kernels/spectrum/rgb.slang +68 -0
  403. ernie_renderer-0.1.0/ernie/render/kernels/spectrum/spectrum.slang +4 -0
  404. ernie_renderer-0.1.0/ernie/render/kernels/surface/compute.slang +74 -0
  405. ernie_renderer-0.1.0/ernie/render/kernels/surface/element.slang +58 -0
  406. ernie_renderer-0.1.0/ernie/render/kernels/surface/point.slang +38 -0
  407. ernie_renderer-0.1.0/ernie/render/kernels/surface/primvars.slang +130 -0
  408. ernie_renderer-0.1.0/ernie/render/kernels/trace/hardware.slang +104 -0
  409. ernie_renderer-0.1.0/ernie/render/kernels/trace/itracer.slang +24 -0
  410. ernie_renderer-0.1.0/ernie/render/kernels/trace/ray.slang +92 -0
  411. ernie_renderer-0.1.0/ernie/render/kernels/trace/software.slang +284 -0
  412. ernie_renderer-0.1.0/ernie/render/kernels/trace/tracer.slang +10 -0
  413. ernie_renderer-0.1.0/ernie/render/kernels/trace/triangle.slang +52 -0
  414. ernie_renderer-0.1.0/ernie/render/overlay/font.cpp +356 -0
  415. ernie_renderer-0.1.0/ernie/render/overlay/overlay.cpp +1941 -0
  416. ernie_renderer-0.1.0/ernie/render/overlay/overlay.h +330 -0
  417. ernie_renderer-0.1.0/ernie/render/overlay/overlay_impl.h +212 -0
  418. ernie_renderer-0.1.0/ernie/render/ray_cast/ray_cast.cpp +177 -0
  419. ernie_renderer-0.1.0/ernie/render/ray_cast/ray_cast.h +81 -0
  420. ernie_renderer-0.1.0/ernie/render/render_output.cpp +373 -0
  421. ernie_renderer-0.1.0/ernie/render/render_output.h +122 -0
  422. ernie_renderer-0.1.0/ernie/render/renderer.cpp +1084 -0
  423. ernie_renderer-0.1.0/ernie/render/renderer.h +47 -0
  424. ernie_renderer-0.1.0/ernie/render/renderer_impl.h +178 -0
  425. ernie_renderer-0.1.0/ernie/scene/CMakeLists.txt +86 -0
  426. ernie_renderer-0.1.0/ernie/scene/access/attribute.cpp +960 -0
  427. ernie_renderer-0.1.0/ernie/scene/access/attribute.h +302 -0
  428. ernie_renderer-0.1.0/ernie/scene/access/layout.cpp +135 -0
  429. ernie_renderer-0.1.0/ernie/scene/access/layout.h +36 -0
  430. ernie_renderer-0.1.0/ernie/scene/access/mapping.cpp +71 -0
  431. ernie_renderer-0.1.0/ernie/scene/access/mapping.h +80 -0
  432. ernie_renderer-0.1.0/ernie/scene/access/poses.cpp +201 -0
  433. ernie_renderer-0.1.0/ernie/scene/access/poses.h +52 -0
  434. ernie_renderer-0.1.0/ernie/scene/access/view.cpp +234 -0
  435. ernie_renderer-0.1.0/ernie/scene/access/view.h +88 -0
  436. ernie_renderer-0.1.0/ernie/scene/access/view_state.h +85 -0
  437. ernie_renderer-0.1.0/ernie/scene/catalog/catalog.cpp +772 -0
  438. ernie_renderer-0.1.0/ernie/scene/catalog/catalog.h +348 -0
  439. ernie_renderer-0.1.0/ernie/scene/catalog/packing.cpp +118 -0
  440. ernie_renderer-0.1.0/ernie/scene/catalog/packing.h +18 -0
  441. ernie_renderer-0.1.0/ernie/scene/catalog/paths.cpp +322 -0
  442. ernie_renderer-0.1.0/ernie/scene/catalog/paths.h +101 -0
  443. ernie_renderer-0.1.0/ernie/scene/catalog/prims.cpp +473 -0
  444. ernie_renderer-0.1.0/ernie/scene/catalog/prims.h +123 -0
  445. ernie_renderer-0.1.0/ernie/scene/catalog/tokens.cpp +34 -0
  446. ernie_renderer-0.1.0/ernie/scene/catalog/tokens.h +45 -0
  447. ernie_renderer-0.1.0/ernie/scene/kernels/attributes.h +93 -0
  448. ernie_renderer-0.1.0/ernie/scene/kernels/attributes.slang +157 -0
  449. ernie_renderer-0.1.0/ernie/scene/kernels/bounds.h +27 -0
  450. ernie_renderer-0.1.0/ernie/scene/kernels/bounds.slang +180 -0
  451. ernie_renderer-0.1.0/ernie/scene/kernels/changes.h +80 -0
  452. ernie_renderer-0.1.0/ernie/scene/kernels/changes.slang +55 -0
  453. ernie_renderer-0.1.0/ernie/scene/kernels/doubles.h +58 -0
  454. ernie_renderer-0.1.0/ernie/scene/kernels/geometry.h +77 -0
  455. ernie_renderer-0.1.0/ernie/scene/kernels/geometry.slang +208 -0
  456. ernie_renderer-0.1.0/ernie/scene/kernels/hierarchy.h +35 -0
  457. ernie_renderer-0.1.0/ernie/scene/kernels/hierarchy.slang +189 -0
  458. ernie_renderer-0.1.0/ernie/scene/kernels/ids.h +12 -0
  459. ernie_renderer-0.1.0/ernie/scene/kernels/instance_layout.h +353 -0
  460. ernie_renderer-0.1.0/ernie/scene/kernels/instances.h +24 -0
  461. ernie_renderer-0.1.0/ernie/scene/kernels/instances.slang +122 -0
  462. ernie_renderer-0.1.0/ernie/scene/kernels/lights.h +405 -0
  463. ernie_renderer-0.1.0/ernie/scene/kernels/lights.slang +538 -0
  464. ernie_renderer-0.1.0/ernie/scene/kernels/paged.h +38 -0
  465. ernie_renderer-0.1.0/ernie/scene/kernels/primvars.h +42 -0
  466. ernie_renderer-0.1.0/ernie/scene/kernels/scene.h +78 -0
  467. ernie_renderer-0.1.0/ernie/scene/kernels/scene.slang +7 -0
  468. ernie_renderer-0.1.0/ernie/scene/kernels/schema/schema.h +369 -0
  469. ernie_renderer-0.1.0/ernie/scene/kernels/schema/types.h +222 -0
  470. ernie_renderer-0.1.0/ernie/scene/kernels/semantics.h +24 -0
  471. ernie_renderer-0.1.0/ernie/scene/kernels/shapes.h +137 -0
  472. ernie_renderer-0.1.0/ernie/scene/kernels/tangents.h +28 -0
  473. ernie_renderer-0.1.0/ernie/scene/kernels/tangents.slang +81 -0
  474. ernie_renderer-0.1.0/ernie/scene/kernels/textures.h +27 -0
  475. ernie_renderer-0.1.0/ernie/scene/prim.cpp +119 -0
  476. ernie_renderer-0.1.0/ernie/scene/prim.h +161 -0
  477. ernie_renderer-0.1.0/ernie/scene/primvar.h +60 -0
  478. ernie_renderer-0.1.0/ernie/scene/rotation.cpp +128 -0
  479. ernie_renderer-0.1.0/ernie/scene/rotation.h +22 -0
  480. ernie_renderer-0.1.0/ernie/scene/scene.cpp +819 -0
  481. ernie_renderer-0.1.0/ernie/scene/scene.h +271 -0
  482. ernie_renderer-0.1.0/ernie/scene/scene_impl.h +168 -0
  483. ernie_renderer-0.1.0/ernie/scene/store/arrays.cpp +209 -0
  484. ernie_renderer-0.1.0/ernie/scene/store/arrays.h +85 -0
  485. ernie_renderer-0.1.0/ernie/scene/store/heap.cpp +68 -0
  486. ernie_renderer-0.1.0/ernie/scene/store/heap.h +58 -0
  487. ernie_renderer-0.1.0/ernie/scene/store/store.cpp +654 -0
  488. ernie_renderer-0.1.0/ernie/scene/store/store.h +233 -0
  489. ernie_renderer-0.1.0/ernie/scene/store/table.cpp +355 -0
  490. ernie_renderer-0.1.0/ernie/scene/store/table.h +112 -0
  491. ernie_renderer-0.1.0/ernie/scene/systems/bounds.cpp +204 -0
  492. ernie_renderer-0.1.0/ernie/scene/systems/bounds.h +63 -0
  493. ernie_renderer-0.1.0/ernie/scene/systems/geometry.cpp +531 -0
  494. ernie_renderer-0.1.0/ernie/scene/systems/geometry.h +143 -0
  495. ernie_renderer-0.1.0/ernie/scene/systems/hierarchy.cpp +267 -0
  496. ernie_renderer-0.1.0/ernie/scene/systems/hierarchy.h +71 -0
  497. ernie_renderer-0.1.0/ernie/scene/systems/instances.cpp +785 -0
  498. ernie_renderer-0.1.0/ernie/scene/systems/instances.h +168 -0
  499. ernie_renderer-0.1.0/ernie/scene/systems/lights.cpp +443 -0
  500. ernie_renderer-0.1.0/ernie/scene/systems/lights.h +79 -0
  501. ernie_renderer-0.1.0/ernie/scene/systems/regions.cpp +42 -0
  502. ernie_renderer-0.1.0/ernie/scene/systems/regions.h +45 -0
  503. ernie_renderer-0.1.0/ernie/scene/systems/semantics.cpp +396 -0
  504. ernie_renderer-0.1.0/ernie/scene/systems/semantics.h +113 -0
  505. ernie_renderer-0.1.0/ernie/scene/systems/system.h +38 -0
  506. ernie_renderer-0.1.0/ernie/scene/systems/tangents.cpp +572 -0
  507. ernie_renderer-0.1.0/ernie/scene/systems/tangents.h +177 -0
  508. ernie_renderer-0.1.0/ernie/scene/systems/textures.cpp +391 -0
  509. ernie_renderer-0.1.0/ernie/scene/systems/textures.h +110 -0
  510. ernie_renderer-0.1.0/ernie/scene/timeline/changes.cpp +56 -0
  511. ernie_renderer-0.1.0/ernie/scene/timeline/changes.h +64 -0
  512. ernie_renderer-0.1.0/ernie/scene/timeline/timeline.cpp +217 -0
  513. ernie_renderer-0.1.0/ernie/scene/timeline/timeline.h +70 -0
  514. ernie_renderer-0.1.0/ernie/scene/types.h +67 -0
  515. ernie_renderer-0.1.0/ernie/schema/geom.schema +551 -0
  516. ernie_renderer-0.1.0/ernie/schema/lux.schema +396 -0
  517. ernie_renderer-0.1.0/ernie/schema/render.schema +219 -0
  518. ernie_renderer-0.1.0/ernie/schema/sensor.schema +340 -0
  519. ernie_renderer-0.1.0/ernie/schema/shade.schema +298 -0
  520. ernie_renderer-0.1.0/ernie/texture/CMakeLists.txt +19 -0
  521. ernie_renderer-0.1.0/ernie/texture/cache.cpp +399 -0
  522. ernie_renderer-0.1.0/ernie/texture/cache.h +141 -0
  523. ernie_renderer-0.1.0/ernie/texture/kernels/hardware.slang +261 -0
  524. ernie_renderer-0.1.0/ernie/texture/kernels/itexture.slang +25 -0
  525. ernie_renderer-0.1.0/ernie/texture/kernels/mips.h +35 -0
  526. ernie_renderer-0.1.0/ernie/texture/kernels/mips.slang +75 -0
  527. ernie_renderer-0.1.0/ernie/texture/kernels/software.slang +324 -0
  528. ernie_renderer-0.1.0/ernie/texture/kernels/texel.h +76 -0
  529. ernie_renderer-0.1.0/ernie/texture/kernels/texture.slang +25 -0
  530. ernie_renderer-0.1.0/ernie/texture/kernels/tiling.slang +129 -0
  531. ernie_renderer-0.1.0/ernie/util/CMakeLists.txt +46 -0
  532. ernie_renderer-0.1.0/ernie/util/disk_cache.cpp +148 -0
  533. ernie_renderer-0.1.0/ernie/util/disk_cache.h +33 -0
  534. ernie_renderer-0.1.0/ernie/util/environment.cpp +23 -0
  535. ernie_renderer-0.1.0/ernie/util/environment.h +43 -0
  536. ernie_renderer-0.1.0/ernie/util/error.cpp +33 -0
  537. ernie_renderer-0.1.0/ernie/util/error.h +69 -0
  538. ernie_renderer-0.1.0/ernie/util/library.cpp +70 -0
  539. ernie_renderer-0.1.0/ernie/util/library.h +91 -0
  540. ernie_renderer-0.1.0/ernie/util/log.cpp +83 -0
  541. ernie_renderer-0.1.0/ernie/util/log.h +40 -0
  542. ernie_renderer-0.1.0/ernie/util/profiler.cpp +470 -0
  543. ernie_renderer-0.1.0/ernie/util/profiler.h +140 -0
  544. ernie_renderer-0.1.0/ernie/util/span.h +137 -0
  545. ernie_renderer-0.1.0/ernie/util/text.cpp +92 -0
  546. ernie_renderer-0.1.0/ernie/util/text.h +25 -0
  547. ernie_renderer-0.1.0/ernie/util/thread_pool.cpp +67 -0
  548. ernie_renderer-0.1.0/ernie/util/thread_pool.h +43 -0
  549. ernie_renderer-0.1.0/ernie/util/version.cpp +26 -0
  550. ernie_renderer-0.1.0/ernie/util/version.h +54 -0
  551. ernie_renderer-0.1.0/mkdocs.yml +116 -0
  552. ernie_renderer-0.1.0/pyproject.toml +69 -0
  553. ernie_renderer-0.1.0/tests/CMakeLists.txt +205 -0
  554. ernie_renderer-0.1.0/tests/bench/CMakeLists.txt +79 -0
  555. ernie_renderer-0.1.0/tests/bench/algorithms/btest_algorithms_radix_sort.cpp +60 -0
  556. ernie_renderer-0.1.0/tests/bench/algorithms/btest_algorithms_scan.cpp +48 -0
  557. ernie_renderer-0.1.0/tests/bench/bench.cpp +132 -0
  558. ernie_renderer-0.1.0/tests/bench/bench.h +45 -0
  559. ernie_renderer-0.1.0/tests/bench/bvh/btest_bvh_lbvh.cpp +93 -0
  560. ernie_renderer-0.1.0/tests/bench/bvh/btest_bvh_trace.cpp +102 -0
  561. ernie_renderer-0.1.0/tests/bench/main.cpp +125 -0
  562. ernie_renderer-0.1.0/tests/bench/render/btest_render_instancers.cpp +337 -0
  563. ernie_renderer-0.1.0/tests/bench/render/btest_render_overlay.cpp +570 -0
  564. ernie_renderer-0.1.0/tests/bench/render/btest_render_renderer.cpp +116 -0
  565. ernie_renderer-0.1.0/tests/bench/render/btest_render_scaling.cpp +464 -0
  566. ernie_renderer-0.1.0/tests/bench/render/btest_render_throughput.cpp +237 -0
  567. ernie_renderer-0.1.0/tests/bench/render/btest_render_workloads.cpp +510 -0
  568. ernie_renderer-0.1.0/tests/consumer/CMakeLists.txt +25 -0
  569. ernie_renderer-0.1.0/tests/consumer/main.cpp +51 -0
  570. ernie_renderer-0.1.0/tests/consumer/vulkan.cpp +32 -0
  571. ernie_renderer-0.1.0/tests/python/conftest.py +17 -0
  572. ernie_renderer-0.1.0/tests/python/test_cuda.py +37 -0
  573. ernie_renderer-0.1.0/tests/python/test_import.py +111 -0
  574. ernie_renderer-0.1.0/tests/python/test_io.py +29 -0
  575. ernie_renderer-0.1.0/tests/python/test_package.py +21 -0
  576. ernie_renderer-0.1.0/tests/python/test_poses.py +106 -0
  577. ernie_renderer-0.1.0/tests/python/test_render.py +104 -0
  578. ernie_renderer-0.1.0/tests/python/test_rotation.py +37 -0
  579. ernie_renderer-0.1.0/tests/python/test_scene.py +103 -0
  580. ernie_renderer-0.1.0/tests/support/buffers.h +50 -0
  581. ernie_renderer-0.1.0/tests/support/devices.h +78 -0
  582. ernie_renderer-0.1.0/tests/support/geometry.h +113 -0
  583. ernie_renderer-0.1.0/tests/support/support.h +110 -0
  584. ernie_renderer-0.1.0/tests/unit/algorithms/utest_algorithms_radix_sort.cpp +167 -0
  585. ernie_renderer-0.1.0/tests/unit/algorithms/utest_algorithms_scan.cpp +95 -0
  586. ernie_renderer-0.1.0/tests/unit/app/utest_app_cli.cpp +143 -0
  587. ernie_renderer-0.1.0/tests/unit/app/viewer/utest_viewer_editor.cpp +152 -0
  588. ernie_renderer-0.1.0/tests/unit/app/viewer/utest_viewer_history.cpp +56 -0
  589. ernie_renderer-0.1.0/tests/unit/app/viewer/utest_viewer_orbit_camera.cpp +59 -0
  590. ernie_renderer-0.1.0/tests/unit/bvh/utest_bvh_builder.cpp +256 -0
  591. ernie_renderer-0.1.0/tests/unit/bvh/utest_bvh_inspect.cpp +139 -0
  592. ernie_renderer-0.1.0/tests/unit/bvh/utest_bvh_lbvh.cpp +256 -0
  593. ernie_renderer-0.1.0/tests/unit/bvh/utest_bvh_reference.cpp +52 -0
  594. ernie_renderer-0.1.0/tests/unit/device/utest_device_buffer.cpp +123 -0
  595. ernie_renderer-0.1.0/tests/unit/device/utest_device_commands.cpp +112 -0
  596. ernie_renderer-0.1.0/tests/unit/device/utest_device_device.cpp +85 -0
  597. ernie_renderer-0.1.0/tests/unit/device/utest_device_program.cpp +107 -0
  598. ernie_renderer-0.1.0/tests/unit/device/utest_device_ref.cpp +61 -0
  599. ernie_renderer-0.1.0/tests/unit/device/utest_device_runtime_compilers.cpp +147 -0
  600. ernie_renderer-0.1.0/tests/unit/device/utest_device_shared.cpp +20 -0
  601. ernie_renderer-0.1.0/tests/unit/device/utest_device_tensor.cpp +108 -0
  602. ernie_renderer-0.1.0/tests/unit/import/utest_import_importer.cpp +200 -0
  603. ernie_renderer-0.1.0/tests/unit/io/utest_io_encoding.cpp +82 -0
  604. ernie_renderer-0.1.0/tests/unit/io/utest_io_ies.cpp +59 -0
  605. ernie_renderer-0.1.0/tests/unit/io/utest_io_image.cpp +354 -0
  606. ernie_renderer-0.1.0/tests/unit/render/utest_render_overlay.cpp +109 -0
  607. ernie_renderer-0.1.0/tests/unit/render/utest_render_ray_cast.cpp +146 -0
  608. ernie_renderer-0.1.0/tests/unit/render/utest_render_renderer.cpp +144 -0
  609. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_access.cpp +654 -0
  610. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_attachment.cpp +527 -0
  611. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_bounds.cpp +115 -0
  612. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_catalog.cpp +338 -0
  613. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_geometry.cpp +334 -0
  614. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_hierarchy.cpp +212 -0
  615. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_instancers.cpp +217 -0
  616. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_instances.cpp +230 -0
  617. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_lights.cpp +340 -0
  618. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_move.cpp +194 -0
  619. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_paths.cpp +191 -0
  620. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_rotation.cpp +143 -0
  621. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_scene.cpp +542 -0
  622. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_semantics.cpp +201 -0
  623. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_store.cpp +425 -0
  624. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_tangents.cpp +261 -0
  625. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_textures.cpp +167 -0
  626. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_timeline.cpp +249 -0
  627. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_tokens.cpp +43 -0
  628. ernie_renderer-0.1.0/tests/unit/scene/utest_scene_updates.cpp +231 -0
  629. ernie_renderer-0.1.0/tests/unit/texture/utest_texture_cache.cpp +185 -0
  630. ernie_renderer-0.1.0/tests/unit/util/utest_util_disk_cache.cpp +151 -0
  631. ernie_renderer-0.1.0/tests/unit/util/utest_util_environment.cpp +54 -0
  632. ernie_renderer-0.1.0/tests/unit/util/utest_util_error.cpp +36 -0
  633. ernie_renderer-0.1.0/tests/unit/util/utest_util_library.cpp +134 -0
  634. ernie_renderer-0.1.0/tests/unit/util/utest_util_log.cpp +80 -0
  635. ernie_renderer-0.1.0/tests/unit/util/utest_util_profiler.cpp +367 -0
  636. ernie_renderer-0.1.0/tests/unit/util/utest_util_span.cpp +83 -0
  637. ernie_renderer-0.1.0/tests/unit/util/utest_util_text.cpp +88 -0
  638. ernie_renderer-0.1.0/tests/unit/util/utest_util_thread_pool.cpp +104 -0
  639. ernie_renderer-0.1.0/tests/unit/util/utest_util_version.cpp +41 -0
@@ -0,0 +1,16 @@
1
+ BasedOnStyle: LLVM
2
+ Standard: c++20
3
+ IndentWidth: 4
4
+ ColumnLimit: 100
5
+ PointerAlignment: Left
6
+ ReferenceAlignment: Left
7
+ BreakBeforeBraces: Attach
8
+ AllowShortFunctionsOnASingleLine: Empty
9
+ AllowShortIfStatementsOnASingleLine: Never
10
+ SortIncludes: CaseSensitive
11
+ IncludeBlocks: Preserve
12
+ SpacesBeforeTrailingComments: 2
13
+ FixNamespaceComments: false
14
+ SeparateDefinitionBlocks: Always
15
+ Macros:
16
+ - 'ERNIE_ENUM(name)=enum class name : uint32_t'
@@ -0,0 +1,30 @@
1
+ ---
2
+ Checks: >
3
+ -*,
4
+ bugprone-*,
5
+ performance-*,
6
+ portability-*,
7
+ clang-analyzer-*,
8
+ modernize-use-nullptr,
9
+ modernize-use-override,
10
+ modernize-use-equals-default,
11
+ modernize-use-equals-delete,
12
+ readability-else-after-return,
13
+ readability-redundant-*,
14
+ readability-function-size,
15
+ readability-function-cognitive-complexity,
16
+ -bugprone-easily-swappable-parameters,
17
+ -portability-avoid-pragma-once,
18
+ -performance-enum-size,
19
+ -performance-no-int-to-ptr,
20
+ -clang-analyzer-optin.core.EnumCastOutOfRange
21
+ CheckOptions:
22
+ readability-function-size.LineThreshold: 60
23
+ readability-function-size.NestingThreshold: 4
24
+ readability-function-cognitive-complexity.Threshold: 25
25
+ bugprone-signed-bitwise.IgnorePositiveIntegerLiterals: true
26
+ bugprone-exception-escape.IgnoredExceptions: format_error
27
+ bugprone-invalid-enum-default-initialization.IgnoredEnums: '::std::errc;::Vk.*'
28
+ WarningsAsErrors: ''
29
+ HeaderFilterRegex: '.*/ernie/[a-z_/]+\.h$'
30
+ FormatStyle: file
@@ -0,0 +1,9 @@
1
+ .git/lfs
2
+ build/
3
+ build-*/
4
+ benchmarks/
5
+ dist/
6
+ site/
7
+ .venv/
8
+ .vscode/
9
+ .claude/
@@ -0,0 +1,5 @@
1
+ line_length: 100
2
+ indent: 4
3
+ definitions: [cmake]
4
+ warn_about_unknown_commands: false
5
+ list_expansion: favour-expansion
@@ -0,0 +1,11 @@
1
+ * text=auto eol=lf
2
+
3
+ *.exr binary
4
+ *.jpeg binary
5
+ *.jpg binary
6
+ *.ktx2 binary
7
+ *.png binary
8
+ *.spv binary
9
+ *.tif binary
10
+ *.tiff binary
11
+ *.vdb binary
@@ -0,0 +1,27 @@
1
+ name: MSVC developer environment
2
+ description: Visual Studio's compilers and tools on the environment of the steps after this one
3
+ inputs:
4
+ arch:
5
+ description: The architecture to build for, as vcvarsall.bat names it, such as x64 or arm64
6
+ default: x64
7
+ runs:
8
+ using: composite
9
+ steps:
10
+ - shell: pwsh
11
+ env:
12
+ ARCH: ${{ inputs.arch }}
13
+ run: |
14
+ $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
15
+ $installation = & $vswhere -latest -products * -property installationPath
16
+ $vcvars = Join-Path $installation "VC\Auxiliary\Build\vcvarsall.bat"
17
+ $before = @{}
18
+ Get-ChildItem env: | ForEach-Object { $before[$_.Name] = $_.Value }
19
+ $after = cmd /c "`"$vcvars`" $env:ARCH >nul && set"
20
+ if ($LASTEXITCODE -ne 0) {
21
+ throw "vcvarsall.bat $env:ARCH failed"
22
+ }
23
+ foreach ($line in $after) {
24
+ if ($line -match '^([^=]+)=(.*)$' -and $before[$Matches[1]] -ne $Matches[2]) {
25
+ "$($Matches[1])=$($Matches[2])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
26
+ }
27
+ }
@@ -0,0 +1,42 @@
1
+ name: Vulkan validation layer
2
+ description: The LunarG SDK's Khronos validation layer on x86-64 Linux, on VK_LAYER_PATH for the steps after this one
3
+ inputs:
4
+ version:
5
+ description: LunarG SDK release
6
+ default: "1.4.341.0"
7
+ sha256:
8
+ description: Hash of the SDK's archive
9
+ default: "ed66477d587a5587dc3601b1c2cdcc1fab5529c505f53a00171876cecd9b4fbe"
10
+ runs:
11
+ using: composite
12
+ steps:
13
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
14
+ id: cache
15
+ with:
16
+ path: ~/.cache/vulkan-validation-${{ inputs.version }}
17
+ key: vulkan-validation-${{ inputs.version }}
18
+ - if: steps.cache.outputs.cache-hit != 'true'
19
+ shell: bash
20
+ run: |
21
+ version=${{ inputs.version }}
22
+ out=~/.cache/vulkan-validation-$version
23
+ work=$(mktemp -d)
24
+ curl -sSfL --retry 6 --retry-all-errors --retry-delay 15 -o "$work/sdk.tar.xz" \
25
+ "https://sdk.lunarg.com/sdk/download/$version/linux/vulkansdk-linux-x86_64-$version.tar.xz"
26
+ echo "${{ inputs.sha256 }} $work/sdk.tar.xz" | sha256sum -c -
27
+ tar xJf "$work/sdk.tar.xz" -C "$work" \
28
+ "$version/x86_64/lib/libVkLayer_khronos_validation.so" \
29
+ "$version/x86_64/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json"
30
+ mkdir -p "$out"
31
+ cp "$work/$version/x86_64/lib/libVkLayer_khronos_validation.so" "$out/"
32
+ strip --strip-unneeded "$out/libVkLayer_khronos_validation.so"
33
+ sed 's#"library_path": "libVkLayer#"library_path": "./libVkLayer#' \
34
+ "$work/$version/x86_64/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json" \
35
+ > "$out/VkLayer_khronos_validation.json"
36
+ rm -rf "$work"
37
+ - shell: bash
38
+ run: |
39
+ {
40
+ echo "VK_LAYER_PATH=$HOME/.cache/vulkan-validation-${{ inputs.version }}"
41
+ echo "ERNIE_VALIDATION=1"
42
+ } >> "$GITHUB_ENV"
@@ -0,0 +1,180 @@
1
+ name: Build
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ build:
11
+ name: ${{ matrix.name }}
12
+ runs-on: ${{ matrix.os }}
13
+ timeout-minutes: 120
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - { name: linux-gcc, os: ubuntu-24.04, cc: gcc, cxx: g++ }
19
+ - { name: linux-clang, os: ubuntu-24.04, cc: clang-18, cxx: clang++-18 }
20
+ - { name: linux-arm, os: ubuntu-24.04-arm, cc: gcc, cxx: g++ }
21
+ - { name: windows, os: windows-2025 }
22
+ - { name: macos, os: macos-26 }
23
+ env:
24
+ CC: ${{ matrix.cc }}
25
+ CXX: ${{ matrix.cxx }}
26
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
27
+ CCACHE_BASEDIR: ${{ github.workspace }}
28
+ CCACHE_MAXSIZE: 1G
29
+ steps:
30
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
31
+ - name: Install Ninja, ccache, the windowing libraries and lavapipe
32
+ if: runner.os == 'Linux'
33
+ run: |
34
+ sudo apt-get update
35
+ sudo apt-get install -y ninja-build ccache \
36
+ libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev \
37
+ libwayland-dev libxkbcommon-dev mesa-vulkan-drivers libvulkan1
38
+ icd=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
39
+ {
40
+ echo "VK_DRIVER_FILES=$icd"
41
+ echo "VK_ICD_FILENAMES=$icd"
42
+ echo "KERNEL_CACHE=$HOME/.cache/ernie"
43
+ } >> "$GITHUB_ENV"
44
+ - uses: ./.github/actions/vulkan-validation
45
+ if: runner.os == 'Linux' && runner.arch == 'X64'
46
+ - name: Install Ninja, ccache and lavapipe
47
+ if: runner.os == 'macOS'
48
+ run: |
49
+ brew install ninja ccache mesa vulkan-loader vulkan-validationlayers
50
+ prefix=$(brew --prefix)
51
+ icd=$(find "$prefix/share/vulkan/icd.d" -name 'lvp_icd*.json' | head -n1)
52
+ {
53
+ echo "VK_DRIVER_FILES=$icd"
54
+ echo "VK_ICD_FILENAMES=$icd"
55
+ echo "VK_LAYER_PATH=$prefix/share/vulkan/explicit_layer.d"
56
+ echo "ERNIE_VALIDATION=1"
57
+ echo "DYLD_FALLBACK_LIBRARY_PATH=$prefix/lib"
58
+ echo "KERNEL_CACHE=$HOME/Library/Caches/ernie"
59
+ } >> "$GITHUB_ENV"
60
+ - name: Install Ninja and ccache
61
+ if: runner.os == 'Windows'
62
+ run: choco install ninja ccache --no-progress -y
63
+ - name: Install lavapipe
64
+ if: runner.os == 'Windows'
65
+ shell: bash
66
+ run: |
67
+ vulkan="$RUNNER_TEMP/vulkan"
68
+ mkdir -p "$vulkan" && cd "$vulkan"
69
+ curl -fsSL -o mesa.7z https://github.com/pal1000/mesa-dist-win/releases/download/26.2.4/mesa3d-26.2.4-release-msvc.7z
70
+ curl -fsSL -o loader.zip https://sdk.lunarg.com/sdk/download/1.4.363.0/windows/VulkanRT-X64-1.4.363.0-Components.zip
71
+ echo "351fc8c8b695878ffb3eaa044b3ead08672a48b1a045e3c3e3975811df0f6695 mesa.7z" | sha256sum -c -
72
+ echo "a25a927aa8b9f0371048f1861cf88ac3b9bc9b1fb332c42d897c8ab32695769a loader.zip" | sha256sum -c -
73
+ 7z x -y -omesa mesa.7z > /dev/null
74
+ 7z x -y -oloader loader.zip > /dev/null
75
+ cp loader/*/x64/vulkan-1.dll mesa/x64/
76
+ cygpath -w "$vulkan/mesa/x64" >> "$GITHUB_PATH"
77
+ reg add 'HKLM\SOFTWARE\Khronos\Vulkan\Drivers' //f //t REG_DWORD //d 0 \
78
+ //v "$(cygpath -w "$vulkan/mesa/x64/lvp_icd.x86_64.json")"
79
+ echo "KERNEL_CACHE=$LOCALAPPDATA/ernie/cache" >> "$GITHUB_ENV"
80
+ - uses: ./.github/actions/msvc
81
+ if: runner.os == 'Windows'
82
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
83
+ with:
84
+ python-version: "3.10"
85
+ - run: python -m pip install nanobind numpy pytest
86
+ - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
87
+ id: ccache
88
+ with:
89
+ path: .ccache
90
+ key: ccache-${{ matrix.name }}-${{ github.sha }}
91
+ restore-keys: ccache-${{ matrix.name }}-
92
+ - name: Configure
93
+ run: >
94
+ cmake --preset ci -DERNIE_INSTALL=ON -DERNIE_BUILD_PYTHON=ON -DERNIE_BUILD_VIEWER=ON
95
+ "-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
96
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
97
+ - name: Build
98
+ shell: bash
99
+ run: |
100
+ ccache --zero-stats
101
+ cmake --build --preset ci --parallel 4
102
+ ccache --show-stats
103
+ - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
104
+ if: always() && steps.ccache.outputs.cache-hit != 'true'
105
+ with:
106
+ path: .ccache
107
+ key: ccache-${{ matrix.name }}-${{ github.sha }}
108
+ - name: Install and build a consumer
109
+ shell: bash
110
+ run: |
111
+ prefix="$RUNNER_TEMP/ernie"
112
+ for component in runtime dev viewer viewer_dev; do
113
+ cmake --install build-ci --prefix "$prefix" --component "$component"
114
+ done
115
+ cmake -S tests/consumer -B build-consumer -G Ninja -DCMAKE_BUILD_TYPE=Release \
116
+ "-DCMAKE_PREFIX_PATH=$prefix"
117
+ cmake --build build-consumer
118
+ - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
119
+ id: kernels
120
+ with:
121
+ path: ${{ env.KERNEL_CACHE }}
122
+ key: kernels-${{ matrix.name }}-${{ github.sha }}
123
+ restore-keys: kernels-${{ matrix.name }}-
124
+ - name: Test
125
+ shell: bash
126
+ env:
127
+ LP_NUM_THREADS: "1"
128
+ ERNIE_TEST_REQUIRE_DEVICE: "1"
129
+ ERNIE_TEST_FULL: "1"
130
+ run: ctest --preset ci -j4
131
+ - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
132
+ if: always() && steps.kernels.outputs.cache-hit != 'true'
133
+ with:
134
+ path: ${{ env.KERNEL_CACHE }}
135
+ key: kernels-${{ matrix.name }}-${{ github.sha }}
136
+
137
+ kernels:
138
+ name: kernels (nvrtc, hiprtc)
139
+ runs-on: ubuntu-24.04
140
+ timeout-minutes: 60
141
+ env:
142
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
143
+ CCACHE_BASEDIR: ${{ github.workspace }}
144
+ CCACHE_MAXSIZE: 1G
145
+ ERNIE_TEST_REQUIRE_COMPILERS: "1"
146
+ ERNIE_TEST_FULL: "1"
147
+ KERNEL_CACHE: /home/runner/.cache/ernie
148
+ steps:
149
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
150
+ - name: Install Ninja, ccache, NVRTC and hiprtc
151
+ run: |
152
+ sudo apt-get update
153
+ sudo apt-get install -y ninja-build ccache
154
+ wget -q https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
155
+ sudo dpkg -i cuda-keyring_1.1-1_all.deb
156
+ sudo mkdir -p /etc/apt/keyrings
157
+ wget -qO- https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
158
+ echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/7.2 noble main" \
159
+ | sudo tee /etc/apt/sources.list.d/rocm.list
160
+ sudo apt-get update
161
+ sudo apt-get install -y --no-install-recommends cuda-nvrtc-13-0 hip-runtime-amd
162
+ echo "LD_LIBRARY_PATH=/usr/local/cuda-13.0/targets/x86_64-linux/lib:/opt/rocm/lib" >> "$GITHUB_ENV"
163
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
164
+ with:
165
+ path: .ccache
166
+ key: ccache-kernels-${{ github.sha }}
167
+ restore-keys: ccache-kernels-
168
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
169
+ with:
170
+ path: ${{ env.KERNEL_CACHE }}
171
+ key: kernels-compilers-${{ github.sha }}
172
+ restore-keys: kernels-compilers-
173
+ - name: Configure
174
+ run: >
175
+ cmake --preset ci
176
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
177
+ - name: Build
178
+ run: cmake --build --preset ci --parallel 4 --target ernie_runtime_compiler_tests
179
+ - name: Compile every kernel with NVRTC and hiprtc
180
+ run: build-ci/bin/ernie_runtime_compiler_tests
@@ -0,0 +1,106 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ["v*"]
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
16
+
17
+ jobs:
18
+ version:
19
+ uses: ./.github/workflows/version.yml
20
+
21
+ lint:
22
+ uses: ./.github/workflows/lint.yml
23
+
24
+ docs:
25
+ uses: ./.github/workflows/docs.yml
26
+
27
+ pages:
28
+ needs: [docs, coverage]
29
+ if: >
30
+ always() && github.event_name == 'push' && github.ref == 'refs/heads/main'
31
+ && needs.docs.result == 'success'
32
+ runs-on: ubuntu-24.04
33
+ timeout-minutes: 10
34
+ permissions:
35
+ pages: write
36
+ id-token: write
37
+ environment:
38
+ name: github-pages
39
+ url: ${{ steps.deploy.outputs.page_url }}
40
+ steps:
41
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
42
+ with:
43
+ name: docs
44
+ path: site
45
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
46
+ if: needs.coverage.result == 'success'
47
+ with:
48
+ name: coverage
49
+ path: site/coverage/report
50
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
51
+ with:
52
+ path: site
53
+ - id: deploy
54
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
55
+
56
+ build:
57
+ needs: version
58
+ uses: ./.github/workflows/build.yml
59
+
60
+ coverage:
61
+ needs: version
62
+ uses: ./.github/workflows/coverage.yml
63
+
64
+ packages:
65
+ needs: version
66
+ uses: ./.github/workflows/packages.yml
67
+
68
+ wheels:
69
+ needs: version
70
+ uses: ./.github/workflows/wheels.yml
71
+
72
+ docker:
73
+ needs: [lint, build]
74
+ uses: ./.github/workflows/docker.yml
75
+ permissions:
76
+ contents: read
77
+ packages: write
78
+
79
+ pypi:
80
+ needs: [lint, build, packages, wheels]
81
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
82
+ runs-on: ubuntu-24.04
83
+ timeout-minutes: 10
84
+ environment:
85
+ name: pypi
86
+ url: https://pypi.org/project/ernie-renderer/
87
+ permissions:
88
+ id-token: write
89
+ steps:
90
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
91
+ with:
92
+ pattern: wheel-*
93
+ merge-multiple: true
94
+ path: dist
95
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
96
+ with:
97
+ name: sdist
98
+ path: dist
99
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
100
+
101
+ release:
102
+ needs: [lint, build, packages, wheels]
103
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
104
+ uses: ./.github/workflows/release.yml
105
+ permissions:
106
+ contents: write
@@ -0,0 +1,97 @@
1
+ name: Coverage
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ coverage:
11
+ runs-on: ubuntu-24.04
12
+ timeout-minutes: 90
13
+ env:
14
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
15
+ CCACHE_BASEDIR: ${{ github.workspace }}
16
+ CCACHE_MAXSIZE: 1G
17
+ LP_NUM_THREADS: "1"
18
+ ERNIE_TEST_REQUIRE_DEVICE: "1"
19
+ ERNIE_TEST_FULL: "1"
20
+ steps:
21
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
23
+ with:
24
+ python-version: "3.12"
25
+ - run: python -m pip install gcovr nanobind numpy pytest pytest-cov
26
+ - name: Install Ninja, ccache and lavapipe
27
+ run: |
28
+ sudo apt-get update
29
+ sudo apt-get install -y ninja-build ccache mesa-vulkan-drivers libvulkan1
30
+ icd=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
31
+ {
32
+ echo "VK_DRIVER_FILES=$icd"
33
+ echo "VK_ICD_FILENAMES=$icd"
34
+ } >> "$GITHUB_ENV"
35
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
36
+ with:
37
+ path: .ccache
38
+ key: ccache-coverage-${{ github.sha }}
39
+ restore-keys: ccache-coverage-
40
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
41
+ with:
42
+ path: ~/.cache/ernie
43
+ key: kernels-coverage-${{ github.sha }}
44
+ restore-keys: kernels-coverage-
45
+ - name: Configure
46
+ run: >
47
+ cmake --preset coverage
48
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
49
+ "-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
50
+ - name: Build
51
+ run: |
52
+ ccache --zero-stats
53
+ cmake --build --preset coverage --parallel 4
54
+ ccache --show-stats
55
+ - name: Test
56
+ run: ctest --preset coverage -j4
57
+ - name: Report
58
+ run: |
59
+ mkdir -p coverage
60
+ gcovr --root . --filter 'ernie/' --object-directory build-coverage \
61
+ --exclude-unreachable-branches --exclude-throw-branches \
62
+ --html-details coverage/index.html --json-summary coverage/summary.json \
63
+ --cobertura coverage/cobertura.xml --print-summary
64
+ gcovr --root . --filter 'ernie/[^/]+/kernels/' --object-directory build-coverage \
65
+ --exclude-unreachable-branches --exclude-throw-branches \
66
+ --json-summary coverage/kernel-summary.json
67
+ cp build-coverage/python-coverage.xml coverage/
68
+ - name: Summary
69
+ shell: python
70
+ run: |
71
+ import json, os
72
+ import xml.etree.ElementTree as tree
73
+
74
+ summary = json.load(open("coverage/summary.json"))
75
+ kernels = json.load(open("coverage/kernel-summary.json"))
76
+ python = float(tree.parse("build-coverage/python-coverage.xml").getroot().get("line-rate"))
77
+
78
+ def badge(name, label, percent):
79
+ color = next(c for limit, c in [(90, "brightgreen"), (75, "green"), (60, "yellow"),
80
+ (40, "orange"), (0, "red")] if percent >= limit)
81
+ json.dump({"schemaVersion": 1, "label": label, "message": f"{percent:.0f}%",
82
+ "color": color}, open(f"coverage/{name}", "w"))
83
+
84
+ badge("badge.json", "coverage", summary["line_percent"])
85
+ badge("kernel-badge.json", "kernel coverage", kernels["line_percent"])
86
+ with open(os.environ["GITHUB_STEP_SUMMARY"], "a") as out:
87
+ out.write(f"### Coverage\n\n"
88
+ f"- C++ lines: {summary['line_percent']:.1f}%\n"
89
+ f"- C++ branches: {summary['branch_percent']:.1f}%\n"
90
+ f"- C++ functions: {summary['function_percent']:.1f}%\n"
91
+ f"- Kernel lines: {kernels['line_percent']:.1f}%\n"
92
+ f"- Python lines: {python * 100:.1f}%\n")
93
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
94
+ with:
95
+ name: coverage
96
+ path: coverage
97
+ retention-days: 14
@@ -0,0 +1,34 @@
1
+ name: Docker
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+ packages: write
9
+
10
+ jobs:
11
+ docker:
12
+ runs-on: ubuntu-24.04
13
+ timeout-minutes: 60
14
+ steps:
15
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
16
+ - name: Build
17
+ run: docker build --target dev -t ernie:test .
18
+ - name: Smoke test
19
+ run: >
20
+ docker run --rm -e LP_NUM_THREADS=1 -v "$PWD/tests/consumer:/consumer:ro" ernie:test
21
+ sh -c "cmake -S /consumer -B /tmp/consumer -G Ninja -DCMAKE_BUILD_TYPE=Release
22
+ && cmake --build /tmp/consumer && ctest --test-dir /tmp/consumer --output-on-failure"
23
+ - name: Push
24
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
25
+ env:
26
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27
+ run: |
28
+ image=ghcr.io/${GITHUB_REPOSITORY,,}
29
+ echo "$GH_TOKEN" | docker login ghcr.io -u "$GITHUB_ACTOR" --password-stdin
30
+ version=${GITHUB_REF_NAME#v}
31
+ for tag in "$version" "${version%.*}" latest; do
32
+ docker tag ernie:test "$image:$tag"
33
+ docker push "$image:$tag"
34
+ done
@@ -0,0 +1,24 @@
1
+ name: Docs
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ docs:
11
+ runs-on: ubuntu-24.04
12
+ timeout-minutes: 10
13
+ steps:
14
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
15
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
16
+ with:
17
+ python-version: "3.12"
18
+ - run: python -m pip install -r docs/requirements.txt
19
+ - run: mkdocs build --strict
20
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
21
+ with:
22
+ name: docs
23
+ path: site
24
+ retention-days: 14
@@ -0,0 +1,25 @@
1
+ name: Lint
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-24.04
12
+ timeout-minutes: 15
13
+ steps:
14
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
15
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
16
+ with:
17
+ python-version: "3.12"
18
+ - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
19
+ with:
20
+ path: ~/.cache/pre-commit
21
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
22
+ - run: python -m pip install pre-commit
23
+ - run: pre-commit run --all-files --show-diff-on-failure
24
+ - name: Lint workflows
25
+ run: docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.12 -color