ernie-renderer 0.2.0.dev70__tar.gz → 0.2.0.dev76__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 (879) hide show
  1. ernie_renderer-0.2.0.dev76/.pre-commit-config.yaml +45 -0
  2. ernie_renderer-0.2.0.dev76/CMakeLists.txt +114 -0
  3. ernie_renderer-0.2.0.dev76/Dockerfile +25 -0
  4. ernie_renderer-0.2.0.dev76/PKG-INFO +230 -0
  5. ernie_renderer-0.2.0.dev76/README.md +215 -0
  6. ernie_renderer-0.2.0.dev76/benchmarks/CMakeLists.txt +6 -0
  7. ernie_renderer-0.2.0.dev76/benchmarks/device/pose_step.cpp +36 -0
  8. ernie_renderer-0.2.0.dev76/cmake/ErnieInstall.cmake +153 -0
  9. ernie_renderer-0.2.0.dev76/ernie/device/column.cpp +92 -0
  10. ernie_renderer-0.2.0.dev76/ernie/device/column.h +107 -0
  11. ernie_renderer-0.2.0.dev76/ernie/device/cuda.cpp +480 -0
  12. ernie_renderer-0.2.0.dev76/ernie/device/cuda.h +215 -0
  13. ernie_renderer-0.2.0.dev76/ernie/device/external.cpp +217 -0
  14. ernie_renderer-0.2.0.dev76/ernie/device/queue.cpp +195 -0
  15. ernie_renderer-0.2.0.dev76/ernie/device/staging.cpp +140 -0
  16. ernie_renderer-0.2.0.dev76/ernie/device/staging.h +87 -0
  17. ernie_renderer-0.2.0.dev76/ernie/device/vulkan.cpp +300 -0
  18. ernie_renderer-0.2.0.dev76/ernie/device/vulkan.h +118 -0
  19. ernie_renderer-0.2.0.dev76/ernie/python/device.cpp +343 -0
  20. ernie_renderer-0.2.0.dev76/ernie/render/CMakeLists.txt +7 -0
  21. ernie_renderer-0.2.0.dev76/ernie/render/scene_columns.cpp +294 -0
  22. ernie_renderer-0.2.0.dev76/ernie/render/scene_columns.h +109 -0
  23. ernie_renderer-0.2.0.dev76/ernie/render/transform_graph.cpp +719 -0
  24. ernie_renderer-0.2.0.dev76/ernie/render/transform_graph.h +182 -0
  25. ernie_renderer-0.2.0.dev76/ernie/scene/storage.h +439 -0
  26. ernie_renderer-0.2.0.dev76/ernie/scene/xform.cpp +239 -0
  27. ernie_renderer-0.2.0.dev76/ernie/scene/xform.h +67 -0
  28. ernie_renderer-0.2.0.dev76/ernie/util/tensor.h +260 -0
  29. ernie_renderer-0.2.0.dev76/tests/CMakeLists.txt +124 -0
  30. ernie_renderer-0.2.0.dev76/tests/device/column_test.cpp +78 -0
  31. ernie_renderer-0.2.0.dev76/tests/device/columns.h +41 -0
  32. ernie_renderer-0.2.0.dev76/tests/device/cuda_test.cpp +187 -0
  33. ernie_renderer-0.2.0.dev76/tests/device/pose_step.h +125 -0
  34. ernie_renderer-0.2.0.dev76/tests/io/texture_test.cpp +756 -0
  35. ernie_renderer-0.2.0.dev76/tests/python/conftest.py +18 -0
  36. ernie_renderer-0.2.0.dev76/tests/python/test_device_dlpack.py +66 -0
  37. ernie_renderer-0.2.0.dev76/tests/python/test_device_torch.py +81 -0
  38. ernie_renderer-0.2.0.dev76/tests/render/scene_columns_test.cpp +113 -0
  39. ernie_renderer-0.2.0.dev76/tests/render/transform_graph_test.cpp +240 -0
  40. ernie_renderer-0.2.0.dev76/third_party/CMakeLists.txt +81 -0
  41. ernie_renderer-0.2.0.dev76/third_party/README.md +26 -0
  42. ernie_renderer-0.2.0.dev76/third_party/bc7enc/LICENSE +68 -0
  43. ernie_renderer-0.2.0.dev76/third_party/bc7enc/README.md +3 -0
  44. ernie_renderer-0.2.0.dev76/third_party/bc7enc/bc7decomp.cpp +679 -0
  45. ernie_renderer-0.2.0.dev76/third_party/bc7enc/bc7decomp.h +179 -0
  46. ernie_renderer-0.2.0.dev76/third_party/bc7enc/bc7enc.cpp +2580 -0
  47. ernie_renderer-0.2.0.dev76/third_party/bc7enc/bc7enc.h +123 -0
  48. ernie_renderer-0.2.0.dev76/third_party/bc7enc/rgbcx.cpp +3083 -0
  49. ernie_renderer-0.2.0.dev76/third_party/bc7enc/rgbcx.h +473 -0
  50. ernie_renderer-0.2.0.dev76/third_party/bc7enc/rgbcx_table4.h +969 -0
  51. ernie_renderer-0.2.0.dev76/third_party/bc7enc/rgbcx_table4_small.h +969 -0
  52. ernie_renderer-0.2.0.dev76/third_party/dlpack/LICENSE +201 -0
  53. ernie_renderer-0.2.0.dev76/third_party/dlpack/README.md +3 -0
  54. ernie_renderer-0.2.0.dev76/third_party/dlpack/include/dlpack/dlpack.h +647 -0
  55. ernie_renderer-0.2.0.dev76/third_party/glm/README.md +3 -0
  56. ernie_renderer-0.2.0.dev76/third_party/glm/copying.txt +54 -0
  57. ernie_renderer-0.2.0.dev76/third_party/glm/glm/common.hpp +539 -0
  58. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_features.hpp +394 -0
  59. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_fixes.hpp +27 -0
  60. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_noise.hpp +81 -0
  61. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_swizzle.hpp +809 -0
  62. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_swizzle_func.hpp +682 -0
  63. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/_vectorize.hpp +230 -0
  64. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/compute_common.hpp +50 -0
  65. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/compute_vector_decl.hpp +190 -0
  66. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/compute_vector_relational.hpp +30 -0
  67. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_common.inl +936 -0
  68. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_common_simd.inl +615 -0
  69. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_exponential.inl +152 -0
  70. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_exponential_simd.inl +37 -0
  71. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_geometric.inl +259 -0
  72. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_geometric_simd.inl +181 -0
  73. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_integer.inl +392 -0
  74. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_integer_simd.inl +65 -0
  75. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_matrix.inl +484 -0
  76. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_matrix_simd.inl +263 -0
  77. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_packing.inl +189 -0
  78. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_packing_simd.inl +6 -0
  79. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_trigonometric.inl +197 -0
  80. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_trigonometric_simd.inl +0 -0
  81. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_vector_relational.inl +87 -0
  82. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/func_vector_relational_simd.inl +6 -0
  83. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/qualifier.hpp +295 -0
  84. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/setup.hpp +1188 -0
  85. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_float.hpp +68 -0
  86. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_half.hpp +16 -0
  87. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_half.inl +241 -0
  88. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x2.hpp +177 -0
  89. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x2.inl +536 -0
  90. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x3.hpp +159 -0
  91. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x3.inl +495 -0
  92. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x4.hpp +161 -0
  93. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat2x4.inl +501 -0
  94. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x2.hpp +167 -0
  95. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x2.inl +517 -0
  96. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x3.hpp +184 -0
  97. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x3.inl +631 -0
  98. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x4.hpp +166 -0
  99. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat3x4.inl +551 -0
  100. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x2.hpp +171 -0
  101. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x2.inl +555 -0
  102. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x3.hpp +171 -0
  103. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x3.inl +571 -0
  104. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x4.hpp +189 -0
  105. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x4.inl +765 -0
  106. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_mat4x4_simd.inl +6 -0
  107. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_quat.hpp +193 -0
  108. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_quat.inl +424 -0
  109. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_quat_simd.inl +208 -0
  110. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec1.hpp +308 -0
  111. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec1.inl +553 -0
  112. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec2.hpp +406 -0
  113. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec2.inl +915 -0
  114. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec3.hpp +447 -0
  115. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec3.inl +985 -0
  116. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec4.hpp +514 -0
  117. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec4.inl +1130 -0
  118. ernie_renderer-0.2.0.dev76/third_party/glm/glm/detail/type_vec_simd.inl +1032 -0
  119. ernie_renderer-0.2.0.dev76/third_party/glm/glm/exponential.hpp +110 -0
  120. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/_matrix_vectorize.hpp +128 -0
  121. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_clip_space.hpp +576 -0
  122. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_clip_space.inl +615 -0
  123. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_common.hpp +39 -0
  124. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_common.inl +34 -0
  125. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x2.hpp +23 -0
  126. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x2_precision.hpp +49 -0
  127. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x3.hpp +18 -0
  128. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x3_precision.hpp +31 -0
  129. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x4.hpp +18 -0
  130. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double2x4_precision.hpp +31 -0
  131. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x2.hpp +18 -0
  132. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x2_precision.hpp +31 -0
  133. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x3.hpp +23 -0
  134. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x3_precision.hpp +49 -0
  135. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x4.hpp +18 -0
  136. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double3x4_precision.hpp +31 -0
  137. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x2.hpp +18 -0
  138. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x2_precision.hpp +31 -0
  139. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x3.hpp +18 -0
  140. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x3_precision.hpp +31 -0
  141. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x4.hpp +23 -0
  142. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_double4x4_precision.hpp +49 -0
  143. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x2.hpp +23 -0
  144. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x2_precision.hpp +49 -0
  145. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x3.hpp +18 -0
  146. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x3_precision.hpp +31 -0
  147. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x4.hpp +18 -0
  148. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float2x4_precision.hpp +31 -0
  149. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x2.hpp +18 -0
  150. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x2_precision.hpp +31 -0
  151. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x3.hpp +23 -0
  152. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x3_precision.hpp +49 -0
  153. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x4.hpp +18 -0
  154. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float3x4_precision.hpp +31 -0
  155. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x2.hpp +18 -0
  156. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x2_precision.hpp +31 -0
  157. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x3.hpp +18 -0
  158. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x3_precision.hpp +31 -0
  159. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x4.hpp +23 -0
  160. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_float4x4_precision.hpp +49 -0
  161. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x2.hpp +38 -0
  162. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x2_sized.hpp +70 -0
  163. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x3.hpp +33 -0
  164. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x3_sized.hpp +49 -0
  165. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x4.hpp +33 -0
  166. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int2x4_sized.hpp +49 -0
  167. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x2.hpp +33 -0
  168. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x2_sized.hpp +49 -0
  169. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x3.hpp +38 -0
  170. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x3_sized.hpp +70 -0
  171. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x4.hpp +33 -0
  172. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int3x4_sized.hpp +49 -0
  173. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x2.hpp +33 -0
  174. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x2_sized.hpp +49 -0
  175. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x3.hpp +33 -0
  176. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x3_sized.hpp +49 -0
  177. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x4.hpp +38 -0
  178. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_int4x4_sized.hpp +70 -0
  179. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_integer.hpp +91 -0
  180. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_integer.inl +38 -0
  181. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_projection.hpp +149 -0
  182. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_projection.inl +106 -0
  183. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_relational.hpp +132 -0
  184. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_relational.inl +88 -0
  185. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_transform.hpp +171 -0
  186. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_transform.inl +207 -0
  187. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x2.hpp +38 -0
  188. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x2_sized.hpp +70 -0
  189. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x3.hpp +33 -0
  190. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x3_sized.hpp +49 -0
  191. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x4.hpp +33 -0
  192. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint2x4_sized.hpp +49 -0
  193. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x2.hpp +33 -0
  194. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x2_sized.hpp +49 -0
  195. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x3.hpp +38 -0
  196. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x3_sized.hpp +70 -0
  197. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x4.hpp +33 -0
  198. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint3x4_sized.hpp +49 -0
  199. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x2.hpp +33 -0
  200. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x2_sized.hpp +49 -0
  201. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x3.hpp +33 -0
  202. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x3_sized.hpp +49 -0
  203. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x4.hpp +38 -0
  204. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/matrix_uint4x4_sized.hpp +70 -0
  205. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_common.hpp +135 -0
  206. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_common.inl +144 -0
  207. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_common_simd.inl +18 -0
  208. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_double.hpp +39 -0
  209. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_double_precision.hpp +42 -0
  210. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_exponential.hpp +63 -0
  211. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_exponential.inl +89 -0
  212. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_float.hpp +39 -0
  213. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_float_precision.hpp +36 -0
  214. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_geometric.hpp +70 -0
  215. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_geometric.inl +36 -0
  216. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_relational.hpp +62 -0
  217. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_relational.inl +35 -0
  218. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_transform.hpp +47 -0
  219. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_transform.inl +24 -0
  220. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_trigonometric.hpp +65 -0
  221. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/quaternion_trigonometric.inl +37 -0
  222. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_common.hpp +181 -0
  223. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_common.inl +170 -0
  224. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_constants.hpp +40 -0
  225. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_constants.inl +24 -0
  226. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_int_sized.hpp +70 -0
  227. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_integer.hpp +92 -0
  228. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_integer.inl +243 -0
  229. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_packing.hpp +32 -0
  230. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_packing.inl +0 -0
  231. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_reciprocal.hpp +135 -0
  232. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_reciprocal.inl +107 -0
  233. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_relational.hpp +68 -0
  234. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_relational.inl +40 -0
  235. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_uint_sized.hpp +70 -0
  236. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_ulp.hpp +77 -0
  237. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/scalar_ulp.inl +291 -0
  238. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool1.hpp +30 -0
  239. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool1_precision.hpp +34 -0
  240. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool2.hpp +18 -0
  241. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool2_precision.hpp +31 -0
  242. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool3.hpp +18 -0
  243. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool3_precision.hpp +31 -0
  244. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool4.hpp +18 -0
  245. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_bool4_precision.hpp +31 -0
  246. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_common.hpp +228 -0
  247. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_common.inl +147 -0
  248. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double1.hpp +31 -0
  249. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double1_precision.hpp +36 -0
  250. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double2.hpp +18 -0
  251. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double2_precision.hpp +31 -0
  252. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double3.hpp +18 -0
  253. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double3_precision.hpp +34 -0
  254. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double4.hpp +18 -0
  255. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_double4_precision.hpp +35 -0
  256. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float1.hpp +31 -0
  257. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float1_precision.hpp +36 -0
  258. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float2.hpp +18 -0
  259. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float2_precision.hpp +31 -0
  260. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float3.hpp +18 -0
  261. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float3_precision.hpp +31 -0
  262. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float4.hpp +18 -0
  263. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_float4_precision.hpp +31 -0
  264. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int1.hpp +32 -0
  265. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int1_sized.hpp +49 -0
  266. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int2.hpp +18 -0
  267. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int2_sized.hpp +49 -0
  268. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int3.hpp +18 -0
  269. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int3_sized.hpp +49 -0
  270. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int4.hpp +18 -0
  271. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_int4_sized.hpp +49 -0
  272. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_integer.hpp +149 -0
  273. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_integer.inl +85 -0
  274. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_packing.hpp +32 -0
  275. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_packing.inl +0 -0
  276. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_reciprocal.hpp +135 -0
  277. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_reciprocal.inl +105 -0
  278. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_relational.hpp +107 -0
  279. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_relational.inl +75 -0
  280. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint1.hpp +32 -0
  281. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint1_sized.hpp +49 -0
  282. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint2.hpp +18 -0
  283. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint2_sized.hpp +49 -0
  284. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint3.hpp +18 -0
  285. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint3_sized.hpp +49 -0
  286. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint4.hpp +18 -0
  287. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_uint4_sized.hpp +49 -0
  288. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_ulp.hpp +112 -0
  289. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext/vector_ulp.inl +74 -0
  290. ernie_renderer-0.2.0.dev76/third_party/glm/glm/ext.hpp +267 -0
  291. ernie_renderer-0.2.0.dev76/third_party/glm/glm/fwd.hpp +1233 -0
  292. ernie_renderer-0.2.0.dev76/third_party/glm/glm/geometric.hpp +116 -0
  293. ernie_renderer-0.2.0.dev76/third_party/glm/glm/glm.hpp +137 -0
  294. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/bitfield.hpp +266 -0
  295. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/bitfield.inl +635 -0
  296. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/color_space.hpp +56 -0
  297. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/color_space.inl +84 -0
  298. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/constants.hpp +170 -0
  299. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/constants.inl +173 -0
  300. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/epsilon.hpp +60 -0
  301. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/epsilon.inl +80 -0
  302. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/integer.hpp +43 -0
  303. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/integer.inl +33 -0
  304. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_access.hpp +60 -0
  305. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_access.inl +62 -0
  306. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_integer.hpp +433 -0
  307. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_inverse.hpp +50 -0
  308. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_inverse.inl +118 -0
  309. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_transform.hpp +36 -0
  310. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/matrix_transform.inl +3 -0
  311. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/noise.hpp +61 -0
  312. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/noise.inl +807 -0
  313. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/packing.hpp +728 -0
  314. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/packing.inl +952 -0
  315. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/quaternion.hpp +173 -0
  316. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/quaternion.inl +208 -0
  317. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/quaternion_simd.inl +0 -0
  318. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/random.hpp +82 -0
  319. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/random.inl +303 -0
  320. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/reciprocal.hpp +24 -0
  321. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/round.hpp +160 -0
  322. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/round.inl +155 -0
  323. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/type_aligned.hpp +1378 -0
  324. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/type_precision.hpp +2094 -0
  325. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/type_precision.inl +6 -0
  326. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/type_ptr.hpp +230 -0
  327. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/type_ptr.inl +398 -0
  328. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/ulp.hpp +155 -0
  329. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/ulp.inl +173 -0
  330. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtc/vec1.hpp +30 -0
  331. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/associated_min_max.hpp +205 -0
  332. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/associated_min_max.inl +354 -0
  333. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/bit.hpp +96 -0
  334. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/bit.inl +92 -0
  335. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/closest_point.hpp +47 -0
  336. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/closest_point.inl +45 -0
  337. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_encoding.hpp +52 -0
  338. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_encoding.inl +45 -0
  339. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_space.hpp +70 -0
  340. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_space.inl +144 -0
  341. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_space_YCoCg.hpp +58 -0
  342. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/color_space_YCoCg.inl +107 -0
  343. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/common.hpp +74 -0
  344. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/common.inl +125 -0
  345. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/compatibility.hpp +132 -0
  346. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/compatibility.inl +73 -0
  347. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/component_wise.hpp +77 -0
  348. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/component_wise.inl +147 -0
  349. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/dual_quaternion.hpp +272 -0
  350. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/dual_quaternion.inl +352 -0
  351. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/easing.hpp +217 -0
  352. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/easing.inl +436 -0
  353. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/euler_angles.hpp +333 -0
  354. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/euler_angles.inl +899 -0
  355. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/extend.hpp +40 -0
  356. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/extend.inl +48 -0
  357. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/extended_min_max.hpp +135 -0
  358. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/extended_min_max.inl +138 -0
  359. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/exterior_product.hpp +43 -0
  360. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/exterior_product.inl +26 -0
  361. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_exponential.hpp +93 -0
  362. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_exponential.inl +136 -0
  363. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_square_root.hpp +96 -0
  364. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_square_root.inl +75 -0
  365. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_trigonometry.hpp +77 -0
  366. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/fast_trigonometry.inl +142 -0
  367. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/float_normalize.inl +13 -0
  368. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/functions.hpp +54 -0
  369. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/functions.inl +30 -0
  370. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/gradient_paint.hpp +51 -0
  371. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/gradient_paint.inl +36 -0
  372. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/handed_coordinate_space.hpp +48 -0
  373. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/handed_coordinate_space.inl +26 -0
  374. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/hash.hpp +156 -0
  375. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/hash.inl +175 -0
  376. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/integer.hpp +74 -0
  377. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/integer.inl +185 -0
  378. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/intersect.hpp +90 -0
  379. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/intersect.inl +200 -0
  380. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/io.hpp +210 -0
  381. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/io.inl +453 -0
  382. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/iteration.hpp +87 -0
  383. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/iteration.inl +116 -0
  384. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/log_base.hpp +46 -0
  385. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/log_base.inl +16 -0
  386. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_cross_product.hpp +45 -0
  387. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_cross_product.inl +37 -0
  388. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_decompose.hpp +50 -0
  389. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_decompose.inl +234 -0
  390. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_factorisation.hpp +67 -0
  391. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_factorisation.inl +84 -0
  392. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_interpolation.hpp +58 -0
  393. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_interpolation.inl +146 -0
  394. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_major_storage.hpp +117 -0
  395. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_major_storage.inl +166 -0
  396. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_operation.hpp +101 -0
  397. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_operation.inl +176 -0
  398. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_query.hpp +75 -0
  399. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_query.inl +119 -0
  400. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_transform_2d.hpp +79 -0
  401. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/matrix_transform_2d.inl +68 -0
  402. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/mixed_product.hpp +39 -0
  403. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/mixed_product.inl +15 -0
  404. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/norm.hpp +85 -0
  405. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/norm.inl +95 -0
  406. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/normal.hpp +39 -0
  407. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/normal.inl +15 -0
  408. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/normalize_dot.hpp +47 -0
  409. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/normalize_dot.inl +16 -0
  410. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/number_precision.hpp +44 -0
  411. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/optimum_pow.hpp +50 -0
  412. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/optimum_pow.inl +22 -0
  413. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/orthonormalize.hpp +47 -0
  414. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/orthonormalize.inl +29 -0
  415. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/pca.hpp +112 -0
  416. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/pca.inl +342 -0
  417. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/perpendicular.hpp +39 -0
  418. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/perpendicular.inl +10 -0
  419. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/polar_coordinates.hpp +46 -0
  420. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/polar_coordinates.inl +36 -0
  421. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/projection.hpp +41 -0
  422. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/projection.inl +10 -0
  423. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/quaternion.hpp +172 -0
  424. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/quaternion.inl +159 -0
  425. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/range.hpp +96 -0
  426. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/raw_data.hpp +49 -0
  427. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/raw_data.inl +2 -0
  428. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/rotate_normalized_axis.hpp +66 -0
  429. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/rotate_normalized_axis.inl +58 -0
  430. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/rotate_vector.hpp +121 -0
  431. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/rotate_vector.inl +187 -0
  432. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/scalar_multiplication.hpp +80 -0
  433. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/scalar_relational.hpp +34 -0
  434. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/scalar_relational.inl +88 -0
  435. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/spline.hpp +63 -0
  436. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/spline.inl +60 -0
  437. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/std_based_type.hpp +66 -0
  438. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/std_based_type.inl +6 -0
  439. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/string_cast.hpp +45 -0
  440. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/string_cast.inl +497 -0
  441. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/structured_bindings.hpp +92 -0
  442. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/structured_bindings.inl +55 -0
  443. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/texture.hpp +44 -0
  444. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/texture.inl +17 -0
  445. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/transform.hpp +58 -0
  446. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/transform.inl +23 -0
  447. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/transform2.hpp +93 -0
  448. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/transform2.inl +128 -0
  449. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/type_aligned.hpp +980 -0
  450. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/type_aligned.inl +6 -0
  451. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/type_trait.hpp +83 -0
  452. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/type_trait.inl +61 -0
  453. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/vec_swizzle.hpp +2769 -0
  454. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/vector_angle.hpp +55 -0
  455. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/vector_angle.inl +45 -0
  456. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/vector_query.hpp +64 -0
  457. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/vector_query.inl +154 -0
  458. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/wrap.hpp +35 -0
  459. ernie_renderer-0.2.0.dev76/third_party/glm/glm/gtx/wrap.inl +6 -0
  460. ernie_renderer-0.2.0.dev76/third_party/glm/glm/integer.hpp +212 -0
  461. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat2x2.hpp +9 -0
  462. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat2x3.hpp +9 -0
  463. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat2x4.hpp +9 -0
  464. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat3x2.hpp +9 -0
  465. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat3x3.hpp +8 -0
  466. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat3x4.hpp +8 -0
  467. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat4x2.hpp +9 -0
  468. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat4x3.hpp +8 -0
  469. ernie_renderer-0.2.0.dev76/third_party/glm/glm/mat4x4.hpp +9 -0
  470. ernie_renderer-0.2.0.dev76/third_party/glm/glm/matrix.hpp +161 -0
  471. ernie_renderer-0.2.0.dev76/third_party/glm/glm/packing.hpp +173 -0
  472. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/common.h +249 -0
  473. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/exponential.h +20 -0
  474. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/geometric.h +130 -0
  475. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/integer.h +115 -0
  476. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/matrix.h +1040 -0
  477. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/neon.h +155 -0
  478. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/packing.h +8 -0
  479. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/platform.h +469 -0
  480. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/trigonometric.h +9 -0
  481. ernie_renderer-0.2.0.dev76/third_party/glm/glm/simd/vector_relational.h +8 -0
  482. ernie_renderer-0.2.0.dev76/third_party/glm/glm/trigonometric.hpp +210 -0
  483. ernie_renderer-0.2.0.dev76/third_party/glm/glm/vec2.hpp +14 -0
  484. ernie_renderer-0.2.0.dev76/third_party/glm/glm/vec3.hpp +14 -0
  485. ernie_renderer-0.2.0.dev76/third_party/glm/glm/vec4.hpp +15 -0
  486. ernie_renderer-0.2.0.dev76/third_party/glm/glm/vector_relational.hpp +121 -0
  487. ernie_renderer-0.2.0.dev76/third_party/json/LICENSE.MIT +21 -0
  488. ernie_renderer-0.2.0.dev76/third_party/json/README.md +3 -0
  489. ernie_renderer-0.2.0.dev76/third_party/json/include/nlohmann/json.hpp +25526 -0
  490. ernie_renderer-0.2.0.dev76/third_party/json/include/nlohmann/json_fwd.hpp +187 -0
  491. ernie_renderer-0.2.0.dev76/third_party/stb/LICENSE +37 -0
  492. ernie_renderer-0.2.0.dev76/third_party/stb/README.md +3 -0
  493. ernie_renderer-0.2.0.dev76/third_party/stb/stb_image.h +7988 -0
  494. ernie_renderer-0.2.0.dev76/third_party/stb/stb_image_write.h +1724 -0
  495. ernie_renderer-0.2.0.dev76/third_party/stb.cpp +6 -0
  496. ernie_renderer-0.2.0.dev76/third_party/vma/LICENSE.txt +19 -0
  497. ernie_renderer-0.2.0.dev76/third_party/vma/README.md +3 -0
  498. ernie_renderer-0.2.0.dev76/third_party/vma/include/vk_mem_alloc.h +19975 -0
  499. ernie_renderer-0.2.0.dev76/third_party/volk/LICENSE.md +19 -0
  500. ernie_renderer-0.2.0.dev76/third_party/volk/README.md +3 -0
  501. ernie_renderer-0.2.0.dev76/third_party/volk/volk.c +4284 -0
  502. ernie_renderer-0.2.0.dev76/third_party/volk/volk.h +3493 -0
  503. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/LICENSE.md +19 -0
  504. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/LICENSES/Apache-2.0.txt +202 -0
  505. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/LICENSES/MIT.txt +9 -0
  506. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/README.md +3 -0
  507. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_av1std.h +394 -0
  508. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_decode.h +109 -0
  509. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_encode.h +143 -0
  510. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h264std.h +314 -0
  511. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  512. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_encode.h +147 -0
  513. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h265std.h +446 -0
  514. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  515. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_encode.h +157 -0
  516. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std.h +151 -0
  517. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std_decode.h +68 -0
  518. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vk_video/vulkan_video_codecs_common.h +36 -0
  519. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vk_icd.h +244 -0
  520. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vk_layer.h +191 -0
  521. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vk_platform.h +83 -0
  522. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan.h +102 -0
  523. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_android.h +159 -0
  524. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_beta.h +375 -0
  525. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_core.h +27201 -0
  526. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_directfb.h +59 -0
  527. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_fuchsia.h +282 -0
  528. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_ggp.h +62 -0
  529. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_ios.h +50 -0
  530. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_macos.h +50 -0
  531. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_metal.h +244 -0
  532. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_ohos.h +120 -0
  533. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_screen.h +114 -0
  534. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_ubm.h +59 -0
  535. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_vi.h +50 -0
  536. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_wayland.h +59 -0
  537. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_win32.h +372 -0
  538. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_xcb.h +60 -0
  539. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_xlib.h +60 -0
  540. ernie_renderer-0.2.0.dev76/third_party/vulkan_headers/include/vulkan/vulkan_xlib_xrandr.h +50 -0
  541. ernie_renderer-0.2.0.dev70/.pre-commit-config.yaml +0 -45
  542. ernie_renderer-0.2.0.dev70/CMakeLists.txt +0 -122
  543. ernie_renderer-0.2.0.dev70/Dockerfile +0 -25
  544. ernie_renderer-0.2.0.dev70/PKG-INFO +0 -230
  545. ernie_renderer-0.2.0.dev70/README.md +0 -215
  546. ernie_renderer-0.2.0.dev70/benchmarks/CMakeLists.txt +0 -6
  547. ernie_renderer-0.2.0.dev70/benchmarks/device/rl_step.cpp +0 -39
  548. ernie_renderer-0.2.0.dev70/cmake/ErnieInstall.cmake +0 -153
  549. ernie_renderer-0.2.0.dev70/cmake/third_party/bc7enc.cmake +0 -26
  550. ernie_renderer-0.2.0.dev70/cmake/third_party/dlpack.cmake +0 -13
  551. ernie_renderer-0.2.0.dev70/cmake/third_party/glm.cmake +0 -14
  552. ernie_renderer-0.2.0.dev70/cmake/third_party/json.cmake +0 -12
  553. ernie_renderer-0.2.0.dev70/cmake/third_party/stb.cmake +0 -28
  554. ernie_renderer-0.2.0.dev70/cmake/third_party/vma.cmake +0 -22
  555. ernie_renderer-0.2.0.dev70/cmake/third_party/volk.cmake +0 -20
  556. ernie_renderer-0.2.0.dev70/cmake/third_party/vulkan_headers.cmake +0 -21
  557. ernie_renderer-0.2.0.dev70/ernie/device/column.cpp +0 -99
  558. ernie_renderer-0.2.0.dev70/ernie/device/column.h +0 -101
  559. ernie_renderer-0.2.0.dev70/ernie/device/cuda.cpp +0 -468
  560. ernie_renderer-0.2.0.dev70/ernie/device/cuda.h +0 -192
  561. ernie_renderer-0.2.0.dev70/ernie/device/external.cpp +0 -218
  562. ernie_renderer-0.2.0.dev70/ernie/device/queue.cpp +0 -198
  563. ernie_renderer-0.2.0.dev70/ernie/device/staging.cpp +0 -127
  564. ernie_renderer-0.2.0.dev70/ernie/device/staging.h +0 -82
  565. ernie_renderer-0.2.0.dev70/ernie/device/vulkan.cpp +0 -287
  566. ernie_renderer-0.2.0.dev70/ernie/device/vulkan.h +0 -110
  567. ernie_renderer-0.2.0.dev70/ernie/python/device.cpp +0 -374
  568. ernie_renderer-0.2.0.dev70/ernie/render/CMakeLists.txt +0 -7
  569. ernie_renderer-0.2.0.dev70/ernie/render/scene_columns.cpp +0 -299
  570. ernie_renderer-0.2.0.dev70/ernie/render/scene_columns.h +0 -97
  571. ernie_renderer-0.2.0.dev70/ernie/scene/storage.h +0 -436
  572. ernie_renderer-0.2.0.dev70/ernie/scene/xform.cpp +0 -227
  573. ernie_renderer-0.2.0.dev70/ernie/scene/xform.h +0 -49
  574. ernie_renderer-0.2.0.dev70/ernie/util/tensor.h +0 -256
  575. ernie_renderer-0.2.0.dev70/tests/CMakeLists.txt +0 -124
  576. ernie_renderer-0.2.0.dev70/tests/device/column_test.cpp +0 -86
  577. ernie_renderer-0.2.0.dev70/tests/device/cuda_test.cpp +0 -201
  578. ernie_renderer-0.2.0.dev70/tests/device/rl_step.h +0 -125
  579. ernie_renderer-0.2.0.dev70/tests/io/texture_test.cpp +0 -755
  580. ernie_renderer-0.2.0.dev70/tests/python/test_device_dlpack.py +0 -74
  581. ernie_renderer-0.2.0.dev70/tests/python/test_device_torch.py +0 -89
  582. ernie_renderer-0.2.0.dev70/tests/render/scene_columns_test.cpp +0 -124
  583. ernie_renderer-0.2.0.dev70/third_party/CMakeLists.txt +0 -21
  584. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.clang-format +0 -0
  585. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.clang-tidy +0 -0
  586. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.dockerignore +0 -0
  587. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.gersemirc +0 -0
  588. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.gitattributes +0 -0
  589. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.github/scripts/coverage_badge.py +0 -0
  590. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.github/scripts/install-lavapipe-windows.sh +0 -0
  591. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.github/workflows/ci.yml +0 -0
  592. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/.gitignore +0 -0
  593. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/CMakePresets.json +0 -0
  594. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/LICENSE +0 -0
  595. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/benchmarks/bench.h +0 -0
  596. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/benchmarks/main.cpp +0 -0
  597. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/benchmarks/scene/extents.cpp +0 -0
  598. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/benchmarks/scene/storage.cpp +0 -0
  599. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/ErnieConfig.cmake.in +0 -0
  600. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/ErnieFetch.cmake +0 -0
  601. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/ErniePackaging.cmake +0 -0
  602. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/ErnieTesting.cmake +0 -0
  603. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/ernie.pc.in +0 -0
  604. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/third_party/googletest.cmake +0 -0
  605. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/third_party/nanobind.cmake +0 -0
  606. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/third_party/openexr.cmake +0 -0
  607. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/third_party/slang.cmake +0 -0
  608. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/cmake/third_party/tracy.cmake +0 -0
  609. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/docs/README.md +0 -0
  610. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/docs/index.md +0 -0
  611. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/docs/requirements.txt +0 -0
  612. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/CMakeLists.txt +0 -0
  613. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/app/CMakeLists.txt +0 -0
  614. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/app/main.cpp +0 -0
  615. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/CMakeLists.txt +0 -0
  616. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/arena.cpp +0 -0
  617. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/arena.h +0 -0
  618. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/bindless.cpp +0 -0
  619. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/bindless.h +0 -0
  620. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/buffer.cpp +0 -0
  621. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/buffer.h +0 -0
  622. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/context.cpp +0 -0
  623. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/context.h +0 -0
  624. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/device.h +0 -0
  625. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/external.h +0 -0
  626. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/image.cpp +0 -0
  627. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/image.h +0 -0
  628. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/instance.cpp +0 -0
  629. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/instance.h +0 -0
  630. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/kernel.cpp +0 -0
  631. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/kernel.h +0 -0
  632. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/queue.h +0 -0
  633. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/shader_compiler.cpp +0 -0
  634. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/device/shader_compiler.h +0 -0
  635. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/geometry/CMakeLists.txt +0 -0
  636. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/geometry/bounds.h +0 -0
  637. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/graph/CMakeLists.txt +0 -0
  638. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/CMakeLists.txt +0 -0
  639. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/ies.cpp +0 -0
  640. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/ies.h +0 -0
  641. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/image.cpp +0 -0
  642. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/image.h +0 -0
  643. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/nanovdb.cpp +0 -0
  644. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/nanovdb.h +0 -0
  645. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/raster.cpp +0 -0
  646. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/raster.h +0 -0
  647. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/texture.cpp +0 -0
  648. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/io/texture.h +0 -0
  649. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/CMakeLists.txt +0 -0
  650. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/astronomy.cpp +0 -0
  651. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/astronomy.h +0 -0
  652. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/atmosphere.cpp +0 -0
  653. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/atmosphere.h +0 -0
  654. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/cloud.cpp +0 -0
  655. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/cloud.h +0 -0
  656. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/constants.h +0 -0
  657. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/reflectance_library.cpp +0 -0
  658. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/reflectance_library.h +0 -0
  659. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/reflectance_table.h +0 -0
  660. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/regolith.cpp +0 -0
  661. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/regolith.h +0 -0
  662. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/scattering.cpp +0 -0
  663. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/scattering.h +0 -0
  664. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/solar.cpp +0 -0
  665. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/solar.h +0 -0
  666. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/solar_table.h +0 -0
  667. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/spectrum.cpp +0 -0
  668. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/physics/spectrum.h +0 -0
  669. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/python/CMakeLists.txt +0 -0
  670. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/python/device.h +0 -0
  671. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/python/ernie/__init__.py +0 -0
  672. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/python/module.cpp +0 -0
  673. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/CMakeLists.txt +0 -0
  674. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/animation.cpp +0 -0
  675. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/convert.h +0 -0
  676. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/edit_history.cpp +0 -0
  677. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/edit_history.h +0 -0
  678. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/extent_cache.cpp +0 -0
  679. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/extent_cache.h +0 -0
  680. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/holder_index.cpp +0 -0
  681. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/holder_index.h +0 -0
  682. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/inherit.cpp +0 -0
  683. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/json.cpp +0 -0
  684. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/json.h +0 -0
  685. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/json_value.h +0 -0
  686. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/path.cpp +0 -0
  687. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/path.h +0 -0
  688. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/reference.cpp +0 -0
  689. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/reference.h +0 -0
  690. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/scene.cpp +0 -0
  691. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/scene.h +0 -0
  692. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schema.cpp +0 -0
  693. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schema.h +0 -0
  694. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/camera.cpp +0 -0
  695. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/camera.h +0 -0
  696. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/collection.h +0 -0
  697. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/geom.cpp +0 -0
  698. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/geom.h +0 -0
  699. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/instancer.cpp +0 -0
  700. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/instancer.h +0 -0
  701. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/lux.cpp +0 -0
  702. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/lux.h +0 -0
  703. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/mesh.cpp +0 -0
  704. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/mesh.h +0 -0
  705. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/planet.cpp +0 -0
  706. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/planet.h +0 -0
  707. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/registry.cpp +0 -0
  708. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/render.cpp +0 -0
  709. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/render.h +0 -0
  710. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/shade.cpp +0 -0
  711. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/shade.h +0 -0
  712. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/vol.cpp +0 -0
  713. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/schemas/vol.h +0 -0
  714. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/storage.cpp +0 -0
  715. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/time_samples.cpp +0 -0
  716. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/time_samples.h +0 -0
  717. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/tokens.h +0 -0
  718. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/usd_plugin.cpp +0 -0
  719. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/validate.cpp +0 -0
  720. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/value.h +0 -0
  721. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/view.cpp +0 -0
  722. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/scene/view.h +0 -0
  723. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/CMakeLists.txt +0 -0
  724. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/algorithm.h +0 -0
  725. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/bytes.h +0 -0
  726. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/disk_cache.cpp +0 -0
  727. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/disk_cache.h +0 -0
  728. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/file.cpp +0 -0
  729. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/file.h +0 -0
  730. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/glm.h +0 -0
  731. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/hash_index.h +0 -0
  732. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/library.cpp +0 -0
  733. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/library.h +0 -0
  734. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/linear_algebra.h +0 -0
  735. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/log.cpp +0 -0
  736. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/log.h +0 -0
  737. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/math.h +0 -0
  738. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/noise.cpp +0 -0
  739. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/noise.h +0 -0
  740. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/numbers.h +0 -0
  741. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/on_failure.h +0 -0
  742. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/parallel.h +0 -0
  743. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/profiler.cpp +0 -0
  744. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/profiler.h +0 -0
  745. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/random.h +0 -0
  746. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/tensor.cpp +0 -0
  747. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/text.h +0 -0
  748. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/version.cpp +0 -0
  749. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/version.h +0 -0
  750. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/ernie/util/worker_pool.h +0 -0
  751. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/mkdocs.yml +0 -0
  752. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/pyproject.toml +0 -0
  753. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/common.h +0 -0
  754. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/consumer/CMakeLists.txt +0 -0
  755. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/consumer/main.cpp +0 -0
  756. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/arena_test.cpp +0 -0
  757. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/bindless_test.cpp +0 -0
  758. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/common.h +0 -0
  759. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/context_test.cpp +0 -0
  760. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/external_test.cpp +0 -0
  761. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/kernel_test.cpp +0 -0
  762. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/device/vulkan_devices_test.cpp +0 -0
  763. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/exr/README.md +0 -0
  764. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/exr/make_exr.py +0 -0
  765. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/exr/rgb_float_zip.exr +0 -0
  766. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/exr/rgba_half_window.exr +0 -0
  767. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/exr/y_half_zips.exr +0 -0
  768. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ies/README.md +0 -0
  769. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ies/downlight_quadrant.ies +0 -0
  770. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ies/floodlight_type_b.ies +0 -0
  771. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ies/lamp.tilt +0 -0
  772. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/images/grey16.png +0 -0
  773. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ktx2/README.md +0 -0
  774. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
  775. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
  776. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
  777. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
  778. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/scenes/README.md +0 -0
  779. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/scenes/invalid/problems.expected +0 -0
  780. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/scenes/invalid/problems.json +0 -0
  781. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/scenes/rover.json +0 -0
  782. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/scenes/rover.saved.json +0 -0
  783. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/README.md +0 -0
  784. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
  785. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/float_raw.tif +0 -0
  786. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
  787. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
  788. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
  789. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
  790. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
  791. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/volumes/cube.nvdb +0 -0
  792. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/fixtures/volumes/make_nvdb.py +0 -0
  793. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/geometry/bounds_test.cpp +0 -0
  794. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/io/ies_test.cpp +0 -0
  795. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/io/image_test.cpp +0 -0
  796. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/io/nanovdb_test.cpp +0 -0
  797. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/io/raster_test.cpp +0 -0
  798. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/astronomy_test.cpp +0 -0
  799. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/atmosphere_test.cpp +0 -0
  800. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/cloud_test.cpp +0 -0
  801. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/reflectance_library_test.cpp +0 -0
  802. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/regolith_test.cpp +0 -0
  803. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/scattering_test.cpp +0 -0
  804. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/solar_test.cpp +0 -0
  805. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/physics/spectrum_test.cpp +0 -0
  806. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/python/test_package.py +0 -0
  807. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/python/test_scene_schema.py +0 -0
  808. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/edit_history_test.cpp +0 -0
  809. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/extent_cache_test.cpp +0 -0
  810. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/inherit_test.cpp +0 -0
  811. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/instancer_test.cpp +0 -0
  812. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/json_test.cpp +0 -0
  813. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/lux_test.cpp +0 -0
  814. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/mesh_test.cpp +0 -0
  815. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/path_test.cpp +0 -0
  816. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/planet_test.cpp +0 -0
  817. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/reference_test.cpp +0 -0
  818. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/render_test.cpp +0 -0
  819. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/scene_test.cpp +0 -0
  820. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/schema_test.cpp +0 -0
  821. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/shade_test.cpp +0 -0
  822. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/storage_test.cpp +0 -0
  823. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/time_samples_test.cpp +0 -0
  824. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/vol_test.cpp +0 -0
  825. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/scene/xform_test.cpp +0 -0
  826. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/algorithm_test.cpp +0 -0
  827. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/bytes_test.cpp +0 -0
  828. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/disk_cache_test.cpp +0 -0
  829. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/file_test.cpp +0 -0
  830. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/hash_index_test.cpp +0 -0
  831. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/linear_algebra_test.cpp +0 -0
  832. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/log_test.cpp +0 -0
  833. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/math_test.cpp +0 -0
  834. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/noise_test.cpp +0 -0
  835. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/parallel_test.cpp +0 -0
  836. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/profiler_test.cpp +0 -0
  837. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/random_test.cpp +0 -0
  838. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/tensor_test.cpp +0 -0
  839. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/text_test.cpp +0 -0
  840. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/version_test.cpp +0 -0
  841. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/tests/util/worker_pool_test.cpp +0 -0
  842. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/LICENSE +0 -0
  843. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/LICENSES/Apache-2.0.txt +0 -0
  844. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/LICENSES/BSD-3-clause.txt +0 -0
  845. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/LICENSES/MIT.txt +0 -0
  846. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/NOTICE +0 -0
  847. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/README.md +0 -0
  848. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu.h +0 -0
  849. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_astc_cfgs.inl +0 -0
  850. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_astc_hdr_core.h +0 -0
  851. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_astc_helpers.h +0 -0
  852. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_containers.h +0 -0
  853. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_containers_impl.h +0 -0
  854. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_dds_transcoder.inl +0 -0
  855. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_etc1_mods.inl +0 -0
  856. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_file_headers.h +0 -0
  857. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_idct.h +0 -0
  858. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder.cpp +0 -0
  859. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder.h +0 -0
  860. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_internal.h +0 -0
  861. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +0 -0
  862. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +0 -0
  863. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +0 -0
  864. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +0 -0
  865. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +0 -0
  866. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +0 -0
  867. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +0 -0
  868. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +0 -0
  869. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +0 -0
  870. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +0 -0
  871. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_transcoder_uastc.h +0 -0
  872. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_xbc7_decoder.h +0 -0
  873. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +0 -0
  874. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/zstd/LICENSE +0 -0
  875. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/zstd/zstd.h +0 -0
  876. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/basisu/zstd/zstd_errors.h +0 -0
  877. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/nanovdb/LICENSE +0 -0
  878. {ernie_renderer-0.2.0.dev70 → ernie_renderer-0.2.0.dev76}/third_party/nanovdb/PNanoVDB.h +0 -0
  879. {ernie_renderer-0.2.0.dev70/cmake/third_party/vma → ernie_renderer-0.2.0.dev76/third_party}/vma.cpp +0 -0
@@ -0,0 +1,45 @@
1
+ # Vendored sources stay byte for byte as their upstream release.
2
+ exclude: ^third_party/[^/]+/
3
+
4
+ repos:
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v6.0.0
7
+ hooks:
8
+ - id: trailing-whitespace
9
+ - id: end-of-file-fixer
10
+ - id: check-added-large-files
11
+ - id: check-merge-conflict
12
+ - id: check-case-conflict
13
+ - id: check-yaml
14
+ - id: mixed-line-ending
15
+ args: ["--fix=lf"]
16
+
17
+ - repo: https://github.com/pre-commit/mirrors-clang-format
18
+ rev: v23.1.3
19
+ hooks:
20
+ - id: clang-format
21
+ types_or: [c++, c]
22
+ # Data tables written by tools/, kept exactly as generated.
23
+ exclude: _table\.h$
24
+
25
+ - repo: https://github.com/astral-sh/ruff-pre-commit
26
+ rev: v0.17.1
27
+ hooks:
28
+ - id: ruff-check
29
+ args: [--fix]
30
+ - id: ruff-format
31
+
32
+ - repo: https://github.com/BlankSpruce/gersemi-pre-commit
33
+ rev: 0.29.2
34
+ hooks:
35
+ - id: gersemi
36
+
37
+ # Every source file of Ernie's own starts with its license line.
38
+ - repo: local
39
+ hooks:
40
+ - id: spdx-license
41
+ name: SPDX license line
42
+ language: pygrep
43
+ entry: "SPDX-License-Identifier: BSD-3-Clause"
44
+ args: [--negate]
45
+ files: (\.(cpp|h|slang|py|cmake|sh)|(^|/)CMakeLists\.txt)$
@@ -0,0 +1,114 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ cmake_minimum_required(VERSION 3.21)
3
+ # Extracted downloads get the time they were extracted, so they rebuild when they change.
4
+ if(POLICY CMP0135)
5
+ cmake_policy(SET CMP0135 NEW)
6
+ endif()
7
+
8
+ project(
9
+ Ernie
10
+ VERSION 0.2.0
11
+ DESCRIPTION
12
+ "Efficient Renderer for Natural and Interplanetary Environments: a spectral Vulkan ray tracer"
13
+ HOMEPAGE_URL "https://github.com/alexmaietta/ernie"
14
+ LANGUAGES C CXX
15
+ )
16
+
17
+ # Pre-release suffix such as .dev12, written by CI.
18
+ set(ERNIE_VERSION_SUFFIX ".dev76" CACHE STRING "Pre-release suffix of Ernie's version")
19
+ set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
20
+
21
+ option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
22
+ option(ERNIE_BUILD_BENCHMARKS "Build Ernie's benchmarks" OFF)
23
+ option(ERNIE_BUILD_PYTHON "Build Ernie's Python module" ${PROJECT_IS_TOP_LEVEL})
24
+ option(ERNIE_BUILD_APP "Build the ernie program" ON)
25
+ option(ERNIE_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
26
+ option(ERNIE_ASSERTS "Keep assertions in optimised builds" OFF)
27
+ option(ERNIE_TRACY "Send profiling zones to the Tracy profiler too" OFF)
28
+ option(ERNIE_COVERAGE "Instrument Ernie for code coverage (GCC or Clang)" OFF)
29
+ option(ERNIE_INSTALL "Install libernie for C++ consumers" ${PROJECT_IS_TOP_LEVEL})
30
+
31
+ set(CMAKE_INSTALL_DOCDIR "share/doc/ernie" CACHE PATH "Documentation and licences")
32
+ include(GNUInstallDirs)
33
+
34
+ get_property(ernie_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
35
+ if(PROJECT_IS_TOP_LEVEL AND NOT ernie_multi_config AND NOT CMAKE_BUILD_TYPE)
36
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE)
37
+ endif()
38
+
39
+ set(CMAKE_CXX_STANDARD 20)
40
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
41
+ set(CMAKE_CXX_EXTENSIONS OFF)
42
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
43
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
44
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
45
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
46
+ # Every object goes into the shared library too, and only its public API leaves it: symbols are
47
+ # hidden unless marked ERNIE_API, including those of the dependencies built here.
48
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
49
+ set(CMAKE_C_VISIBILITY_PRESET hidden)
50
+ set(CMAKE_CXX_VISIBILITY_PRESET hidden)
51
+ set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
52
+
53
+ include(cmake/ErnieFetch.cmake)
54
+ include(cmake/third_party/openexr.cmake)
55
+ include(cmake/third_party/tracy.cmake)
56
+ include(cmake/third_party/slang.cmake)
57
+ add_subdirectory(third_party)
58
+
59
+ add_library(ernie_build_options INTERFACE)
60
+ # All of Ernie's own code is built as the shared library's (ernie_EXPORTS), so ERNIE_API exports
61
+ # there and is harmless in the static library. glm's configuration stays inside Ernie: it changes
62
+ # no layout, but consumers' own glm calls must not see it.
63
+ target_compile_definitions(ernie_build_options INTERFACE ernie_EXPORTS GLM_FORCE_DEPTH_ZERO_TO_ONE)
64
+ if(MSVC)
65
+ target_compile_options(ernie_build_options INTERFACE /W4 /permissive- /Zc:__cplusplus /utf-8)
66
+ # The CRT's "unsafe function" deprecations (getenv, fopen) would fail warnings-as-errors builds.
67
+ target_compile_definitions(
68
+ ernie_build_options
69
+ INTERFACE NOMINMAX WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS
70
+ )
71
+ else()
72
+ target_compile_options(
73
+ ernie_build_options
74
+ INTERFACE
75
+ -Wall
76
+ -Wextra
77
+ -Wpedantic
78
+ -Wshadow
79
+ -Wconversion
80
+ -Wsign-conversion
81
+ # Designated initializers leave Vulkan structs' other fields zero by design.
82
+ -Wno-missing-field-initializers
83
+ )
84
+ endif()
85
+ if(ERNIE_WARNINGS_AS_ERRORS)
86
+ target_compile_options(ernie_build_options INTERFACE $<IF:$<CXX_COMPILER_ID:MSVC>,/WX,-Werror>)
87
+ endif()
88
+ if(ERNIE_ASSERTS)
89
+ target_compile_options(
90
+ ernie_build_options
91
+ INTERFACE $<IF:$<CXX_COMPILER_ID:MSVC>,/UNDEBUG,-UNDEBUG>
92
+ )
93
+ endif()
94
+ if(ERNIE_COVERAGE)
95
+ target_compile_options(ernie_build_options INTERFACE --coverage -fprofile-update=atomic -Og -g)
96
+ target_link_options(ernie_build_options INTERFACE --coverage)
97
+ endif()
98
+
99
+ add_subdirectory(ernie)
100
+ if(ERNIE_INSTALL)
101
+ include(cmake/ErnieInstall.cmake)
102
+ endif()
103
+
104
+ if(ERNIE_BUILD_TESTS)
105
+ enable_testing()
106
+ add_subdirectory(tests)
107
+ endif()
108
+ if(ERNIE_BUILD_BENCHMARKS)
109
+ add_subdirectory(benchmarks)
110
+ endif()
111
+
112
+ if(PROJECT_IS_TOP_LEVEL AND NOT SKBUILD)
113
+ include(cmake/ErniePackaging.cmake)
114
+ endif()
@@ -0,0 +1,25 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ FROM ubuntu:24.04 AS build
3
+ ARG DEBIAN_FRONTEND=noninteractive
4
+ RUN apt-get update \
5
+ && apt-get install -y --no-install-recommends ca-certificates cmake g++ git ninja-build python3-dev \
6
+ && rm -rf /var/lib/apt/lists/*
7
+ WORKDIR /src
8
+ COPY . .
9
+ RUN cmake -S . -B /build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/ernie \
10
+ && cmake --build /build \
11
+ && cmake --install /build --component app \
12
+ && cmake --install /build --component runtime
13
+
14
+ FROM ubuntu:24.04
15
+ ARG DEBIAN_FRONTEND=noninteractive
16
+ RUN apt-get update \
17
+ && apt-get install -y --no-install-recommends libvulkan1 mesa-vulkan-drivers \
18
+ && rm -rf /var/lib/apt/lists/*
19
+ COPY --from=build /opt/ernie/bin/ernie /usr/local/bin/ernie
20
+ # Data and the licences of everything the program carries.
21
+ COPY --from=build /opt/ernie/share /usr/local/share
22
+ ENV NVIDIA_DRIVER_CAPABILITIES=graphics,compute,utility
23
+ WORKDIR /work
24
+ ENTRYPOINT ["ernie"]
25
+ CMD ["--help"]
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: ernie-renderer
3
+ Version: 0.2.0.dev76
4
+ Summary: Efficient Renderer for Natural and Interplanetary Environments: a physically based, spectral Vulkan ray tracer
5
+ Author: Alex Maietta
6
+ License-Expression: BSD-3-Clause
7
+ License-File: LICENSE
8
+ Project-URL: Homepage, https://github.com/alexmaietta/ernie
9
+ Project-URL: Repository, https://github.com/alexmaietta/ernie
10
+ Project-URL: Issues, https://github.com/alexmaietta/ernie/issues
11
+ Requires-Python: >=3.10
12
+ Provides-Extra: test
13
+ Requires-Dist: pytest>=8; extra == "test"
14
+ Description-Content-Type: text/markdown
15
+
16
+ > 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
17
+
18
+ [![CI](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
19
+ [![Coverage](https://img.shields.io/endpoint?url=https%3A%2F%2Falexmaietta.github.io%2Fernie%2Fcoverage%2Fbadge.json)](https://alexmaietta.github.io/ernie/coverage/)
20
+ [![Release](https://img.shields.io/github/v/release/alexmaietta/ernie?include_prereleases&sort=semver&color=orange)](https://github.com/alexmaietta/ernie/releases)
21
+ [![PyPI](https://img.shields.io/pypi/v/ernie-renderer?color=3775A9&logo=pypi&logoColor=white)](https://pypi.org/project/ernie-renderer/)
22
+ [![Docs](https://img.shields.io/badge/docs-latest-8A2BE2)](https://alexmaietta.github.io/ernie/)
23
+ [![License](https://img.shields.io/badge/license-BSD--3--Clause-2E8B57)](LICENSE)
24
+
25
+ # Efficient Renderer for Natural and Interplanetary Environments (Ernie)
26
+
27
+ ![]()
28
+
29
+ Ernie is a physically accurate, real-time, spectral renderer for interplanetary environments.
30
+
31
+ It is a Vulkan ray tracer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering, and interoperability.
32
+
33
+ Ernie is built to be extensible, customizable, and to work alongside other tools. You can add your own BRDFs, sensor filters and light patterns. Rendered outputs and scene attributes (transforms, mesh vertices, light parameters and more) are shared zero copy with any DLPack tensor (PyTorch, JAX, Warp, NumPy), which makes Ernie a good fit for real-time physics simulation and reinforcement learning. Support for OpenUSD and glTF scenes, and for MDL and MaterialX materials, is planned.
34
+
35
+ Its key features are aimed at planetary robotics and sensing:
36
+
37
+ - **Spectral light**
38
+ - Light carried in bands (16 across 380-780 nm by default, up to 64 into the infrared) from the source, through materials and media, to the sensor
39
+ - Sun, sky, lamps, domes and lasers in physical units, with measured spectra such as the TSIS-1 sun
40
+ - Distant lights as limb-darkened discs whose angular size sets every penumbra
41
+ - **Planets and space**
42
+ - Terrain and whole planets with continuous level of detail from orbit to the ground, their heights and maps streamed from rasters larger than GPU memory
43
+ - Adaptive spheres and ellipsoids, exact from a pebble to a star, in double precision with a floating origin and reverse-Z depth
44
+ - Earth and Mars atmospheres from physical models, with refraction, seen from the ground or from orbit
45
+ - Eclipses cast by real geometry, and star fields from your own catalogues
46
+ - **Materials**
47
+ - Planetary photometry with Hapke, Lommel-Seeliger and lunar-Lambert, with parameters from texture maps
48
+ - OpenPBR Surface and UsdPreviewSurface, spectral throughout
49
+ - Your own BRDFs written in Slang
50
+ - **Cameras and sensors**
51
+ - Perspective, fisheye, orthographic and line-scan pushbroom cameras, with CAHVORE and USGS CSM instrument models
52
+ - The EMVA 1288 sensor model: quantum efficiency, shot and read noise, dark current, PRNU, DSNU, full well and ADC
53
+ - Filter chains for optics and detectors (diffraction, lens flare, blooming, smear, TDI, Bayer, companding), with your own in Slang
54
+ - Polarization cameras
55
+ - **Thermal infrared**
56
+ - Planck emission from surfaces and volumes, with emissivity from Kirchhoff's law or measured spectra
57
+ - Temperatures from your own solver, textures, or models run per pixel: spacecraft energy balance and diurnal tables for airless bodies
58
+ - Microbolometer cameras with NETD, fixed pattern noise and false-colour palettes
59
+ - **Volumes**
60
+ - Smoke, dust, exhaust plumes and clouds from VDB files or GPU arrays, ray marched spectrally and casting shadows
61
+ - Procedural cloud layers, with Mie droplets for silver linings, fogbows and glories
62
+ - **Lasers and structured light**
63
+ - Gaussian beams and diffractive patterns (lines, grids, dot fields or your own), pulses, speckle, and beams seen in dust and air
64
+ - **Simulation and learning**
65
+ - Thousands of worlds and cameras rendered in one batched step for RL and Monte Carlo workloads
66
+ - Inputs and outputs shared without copies with PyTorch, JAX, Warp and NumPy, through CUDA and HIP
67
+ - Columns and incremental sync: thousands of prims' poses written in one call, and an edit redraws only what it reaches
68
+ - **Tools and integrations**
69
+ - A viewer with your own panels and debug drawing, and C++ and Python APIs on Linux, Windows and macOS
70
+ - OpenUSD import, renderer backends for Newton Viewer, IsaacLab and Chrono::Sensor, and TerrainGen built on the viewer
71
+
72
+ For a more detailed overview of the features, see our [documentation](https://alexmaietta.github.io/ernie/).
73
+
74
+ Future work:
75
+
76
+ - A fully USD- and glTF-compliant renderer, loading OpenUSD, glTF, OBJ, STL and 3D Tiles, with the glTF material system, UsdPreviewSurface shaders and MDL and MaterialX support
77
+ - Differentiable rendering
78
+ - Reflections and global illumination
79
+ - OpenXR integrations
80
+ - WebGPU backend
81
+ - Gaussian splat and particle fields
82
+ - Lidar and radar sensors
83
+ - A real-time ray-tracing renderer alongside the rasterizer
84
+ - Integrations into Newton Viewer, Chrono Sensor, and IsaacLab
85
+ - Benchmark against RTX, Cycles, Newton Warp Raytrace, Madrona both in speed, throughput, and image quality
86
+ - Validation with real-world sensors and scenes.
87
+
88
+ ## Installation
89
+
90
+ The Python package is on PyPI as `ernie-renderer` (Python 3.10 or later, with a Vulkan 1.3 driver). It bundles everything else, the viewer and the native `ernie` program included:
91
+
92
+ ```sh
93
+ pip install ernie-renderer
94
+ ```
95
+
96
+ Each GitHub release also has an `ernie` package for Ubuntu 22.04+, Debian 12+ and RHEL 9+ (and a tarball for other distributions), with the library, the viewer, and the headers and CMake package for building against it in C++. Download it from the [latest release](https://github.com/alexmaietta/ernie/releases/latest) and install it with a Vulkan driver: Mesa's below, which includes the lavapipe software driver for machines without a GPU, or your GPU vendor's.
97
+
98
+ ```sh
99
+ # Debian, Ubuntu
100
+ sudo apt install mesa-vulkan-drivers
101
+ sudo apt install ./ernie_*.deb
102
+
103
+ # RHEL, Rocky, Fedora
104
+ sudo dnf install mesa-vulkan-drivers
105
+ sudo dnf install ./ernie-*.rpm
106
+ ```
107
+
108
+ ### Docker
109
+
110
+ The `ernie` program is also published as a Docker image.
111
+
112
+ ```sh
113
+ docker run --rm --gpus all -v "$PWD:/out" ghcr.io/alexmaietta/ernie --demo demo_atmosphere_earth --viewer null --output /out/earth.png
114
+ ```
115
+
116
+ ### Build from source
117
+
118
+ Ernie needs CMake 3.24+, a C++20 compiler, Python 3.10+ with its development headers (or `-DERNIE_BUILD_PYTHON=OFF`) and a Vulkan 1.3 driver. Small dependencies are vendored; Slang and OpenEXR are fetched on first configure (see [third_party/README.md](third_party/README.md)).
119
+
120
+ ```sh
121
+ cmake -S . -B build -DERNIE_BUILD_TESTS=ON
122
+ cmake --build build
123
+ ctest --test-dir build -j4 # C++, GPU and Python tests
124
+ build/bin/ernie # the viewer
125
+ cmake --install build --prefix ~/.local # libernie, headers and the CMake package
126
+ ```
127
+
128
+ To build the Python wheel instead, run `uv build --wheel --out-dir dist .` and `uv pip install dist/ernie_renderer-*.whl`; for the Linux packages, `cmake --preset package-deb` (or `package-rpm`), `cmake --build --preset package-deb` and `cpack --preset package-deb`. See [CONTRIBUTING.md](CONTRIBUTING.md) for the build options, testing without a GPU on lavapipe, and benchmarks.
129
+
130
+ ## Quick Start
131
+
132
+ Run `ernie` to open the Ernie Viewer. Its Demos panel runs any of the built-in demos, each written in both C++ and Python, covering cameras and sensors, lighting, atmospheres, terrain, lasers, batched rendering and the viewer; the two versions of a demo render the same image.
133
+
134
+ ```sh
135
+ ernie # the viewer, with the Demos panel
136
+ ernie --list # every demo's name
137
+ ernie --demo demo_atmosphere_earth # run one demo
138
+ ernie --help # every option
139
+ ```
140
+
141
+ `python -m ernie` opens the same viewer and takes the same options, and `python -m ernie.demos` runs the Python version of a demo:
142
+
143
+ ```sh
144
+ python -m ernie.demos --list
145
+ python -m ernie.demos demo_atmosphere_earth
146
+ ```
147
+
148
+ Every demo takes common options, such as `--viewer null` to render without a window and `--output frame.png` to save the last frame; `--help` lists them.
149
+
150
+ ## Your First Render
151
+
152
+ ### Python
153
+
154
+ ```python
155
+ from PIL import Image
156
+
157
+ import ernie
158
+ from ernie import tokens
159
+
160
+ scene = ernie.Scene()
161
+ scene.define("/World/Ground", ernie.GroundPlane)
162
+ scene.define("/World/Rock", ernie.Sphere, translate=(0, 0, 1)) # 1 m up
163
+ scene.define("/World/Sun", ernie.DistantLight).set(
164
+ tokens.TRANSFORM, ernie.distant_light_transform((0.4, -0.6, 0.7))
165
+ )
166
+ scene.define("/World/Camera", ernie.Camera).set(
167
+ tokens.TRANSFORM, ernie.look_at_transform((0, -8, 3), (0, 0, 1))
168
+ )
169
+ scene.define(
170
+ "/Render/Settings", ernie.RenderSettings, camera="/World/Camera", resolution=(640, 480)
171
+ )
172
+
173
+ renderer = ernie.Renderer()
174
+ image = renderer.render(scene) # a (480, 640, 4) uint8 NumPy array
175
+ Image.fromarray(image).save("ernie.png")
176
+ ```
177
+
178
+ ### C++
179
+
180
+ With the `ernie` package or your own build installed, find it with CMake:
181
+
182
+ ```cmake
183
+ find_package(Ernie REQUIRED)
184
+ target_link_libraries(my_app PRIVATE Ernie::ernie)
185
+ ```
186
+
187
+ ```cpp
188
+ #include <ernie/scene/schemas.h>
189
+ #include <ernie/scene/tokens.h>
190
+ #include <ernie/scene/xform.h>
191
+ #include <ernie/render/renderer.h>
192
+
193
+ int main() {
194
+ using namespace ernie;
195
+ Scene scene;
196
+ GroundPlane::Define(scene, "/World/Ground");
197
+ Sphere::Define(scene, "/World/Rock");
198
+ SetXform(scene, "/World/Rock", {.translate = glm::dvec3(0.0, 0.0, 1.0)}); // 1 m up
199
+ DistantLight::Define(scene, "/World/Sun");
200
+ scene.Set("/World/Sun", tokens::kTransform, DistantLightTransform({0.4, -0.6, 0.7}));
201
+ Camera::Define(scene, "/World/Camera");
202
+ scene.Set("/World/Camera", tokens::kTransform,
203
+ LookAtTransform({0.0, -8.0, 3.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, 1.0}));
204
+ RenderSettings::Define(scene, "/Render/Settings")
205
+ .SetCamera("/World/Camera")
206
+ .SetResolution({640, 480});
207
+
208
+ Renderer renderer;
209
+ Tensor image = renderer.Render(scene); // 480 x 640 x 4 bytes of LdrColor on the CPU
210
+ }
211
+ ```
212
+
213
+ ## Citation
214
+
215
+ If you use Ernie in your research, please cite it. GitHub's "Cite this repository" button gives the same citation from [CITATION.cff](CITATION.cff).
216
+
217
+ ```bibtex
218
+ @software{maietta2026ernie,
219
+ author = {Maietta, Alex},
220
+ title = {Ernie: Efficient Renderer for Natural and Interplanetary Environments},
221
+ year = {2026},
222
+ version = {0.1.0},
223
+ url = {https://github.com/alexmaietta/ernie},
224
+ license = {BSD-3-Clause}
225
+ }
226
+ ```
227
+
228
+ ## License
229
+
230
+ Ernie is licensed under the [BSD 3-Clause License](LICENSE). The third-party libraries it bundles keep their own licenses, listed in [third_party/README.md](third_party/README.md).
@@ -0,0 +1,215 @@
1
+ > 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
2
+
3
+ [![CI](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
4
+ [![Coverage](https://img.shields.io/endpoint?url=https%3A%2F%2Falexmaietta.github.io%2Fernie%2Fcoverage%2Fbadge.json)](https://alexmaietta.github.io/ernie/coverage/)
5
+ [![Release](https://img.shields.io/github/v/release/alexmaietta/ernie?include_prereleases&sort=semver&color=orange)](https://github.com/alexmaietta/ernie/releases)
6
+ [![PyPI](https://img.shields.io/pypi/v/ernie-renderer?color=3775A9&logo=pypi&logoColor=white)](https://pypi.org/project/ernie-renderer/)
7
+ [![Docs](https://img.shields.io/badge/docs-latest-8A2BE2)](https://alexmaietta.github.io/ernie/)
8
+ [![License](https://img.shields.io/badge/license-BSD--3--Clause-2E8B57)](LICENSE)
9
+
10
+ # Efficient Renderer for Natural and Interplanetary Environments (Ernie)
11
+
12
+ ![]()
13
+
14
+ Ernie is a physically accurate, real-time, spectral renderer for interplanetary environments.
15
+
16
+ It is a Vulkan ray tracer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering, and interoperability.
17
+
18
+ Ernie is built to be extensible, customizable, and to work alongside other tools. You can add your own BRDFs, sensor filters and light patterns. Rendered outputs and scene attributes (transforms, mesh vertices, light parameters and more) are shared zero copy with any DLPack tensor (PyTorch, JAX, Warp, NumPy), which makes Ernie a good fit for real-time physics simulation and reinforcement learning. Support for OpenUSD and glTF scenes, and for MDL and MaterialX materials, is planned.
19
+
20
+ Its key features are aimed at planetary robotics and sensing:
21
+
22
+ - **Spectral light**
23
+ - Light carried in bands (16 across 380-780 nm by default, up to 64 into the infrared) from the source, through materials and media, to the sensor
24
+ - Sun, sky, lamps, domes and lasers in physical units, with measured spectra such as the TSIS-1 sun
25
+ - Distant lights as limb-darkened discs whose angular size sets every penumbra
26
+ - **Planets and space**
27
+ - Terrain and whole planets with continuous level of detail from orbit to the ground, their heights and maps streamed from rasters larger than GPU memory
28
+ - Adaptive spheres and ellipsoids, exact from a pebble to a star, in double precision with a floating origin and reverse-Z depth
29
+ - Earth and Mars atmospheres from physical models, with refraction, seen from the ground or from orbit
30
+ - Eclipses cast by real geometry, and star fields from your own catalogues
31
+ - **Materials**
32
+ - Planetary photometry with Hapke, Lommel-Seeliger and lunar-Lambert, with parameters from texture maps
33
+ - OpenPBR Surface and UsdPreviewSurface, spectral throughout
34
+ - Your own BRDFs written in Slang
35
+ - **Cameras and sensors**
36
+ - Perspective, fisheye, orthographic and line-scan pushbroom cameras, with CAHVORE and USGS CSM instrument models
37
+ - The EMVA 1288 sensor model: quantum efficiency, shot and read noise, dark current, PRNU, DSNU, full well and ADC
38
+ - Filter chains for optics and detectors (diffraction, lens flare, blooming, smear, TDI, Bayer, companding), with your own in Slang
39
+ - Polarization cameras
40
+ - **Thermal infrared**
41
+ - Planck emission from surfaces and volumes, with emissivity from Kirchhoff's law or measured spectra
42
+ - Temperatures from your own solver, textures, or models run per pixel: spacecraft energy balance and diurnal tables for airless bodies
43
+ - Microbolometer cameras with NETD, fixed pattern noise and false-colour palettes
44
+ - **Volumes**
45
+ - Smoke, dust, exhaust plumes and clouds from VDB files or GPU arrays, ray marched spectrally and casting shadows
46
+ - Procedural cloud layers, with Mie droplets for silver linings, fogbows and glories
47
+ - **Lasers and structured light**
48
+ - Gaussian beams and diffractive patterns (lines, grids, dot fields or your own), pulses, speckle, and beams seen in dust and air
49
+ - **Simulation and learning**
50
+ - Thousands of worlds and cameras rendered in one batched step for RL and Monte Carlo workloads
51
+ - Inputs and outputs shared without copies with PyTorch, JAX, Warp and NumPy, through CUDA and HIP
52
+ - Columns and incremental sync: thousands of prims' poses written in one call, and an edit redraws only what it reaches
53
+ - **Tools and integrations**
54
+ - A viewer with your own panels and debug drawing, and C++ and Python APIs on Linux, Windows and macOS
55
+ - OpenUSD import, renderer backends for Newton Viewer, IsaacLab and Chrono::Sensor, and TerrainGen built on the viewer
56
+
57
+ For a more detailed overview of the features, see our [documentation](https://alexmaietta.github.io/ernie/).
58
+
59
+ Future work:
60
+
61
+ - A fully USD- and glTF-compliant renderer, loading OpenUSD, glTF, OBJ, STL and 3D Tiles, with the glTF material system, UsdPreviewSurface shaders and MDL and MaterialX support
62
+ - Differentiable rendering
63
+ - Reflections and global illumination
64
+ - OpenXR integrations
65
+ - WebGPU backend
66
+ - Gaussian splat and particle fields
67
+ - Lidar and radar sensors
68
+ - A real-time ray-tracing renderer alongside the rasterizer
69
+ - Integrations into Newton Viewer, Chrono Sensor, and IsaacLab
70
+ - Benchmark against RTX, Cycles, Newton Warp Raytrace, Madrona both in speed, throughput, and image quality
71
+ - Validation with real-world sensors and scenes.
72
+
73
+ ## Installation
74
+
75
+ The Python package is on PyPI as `ernie-renderer` (Python 3.10 or later, with a Vulkan 1.3 driver). It bundles everything else, the viewer and the native `ernie` program included:
76
+
77
+ ```sh
78
+ pip install ernie-renderer
79
+ ```
80
+
81
+ Each GitHub release also has an `ernie` package for Ubuntu 22.04+, Debian 12+ and RHEL 9+ (and a tarball for other distributions), with the library, the viewer, and the headers and CMake package for building against it in C++. Download it from the [latest release](https://github.com/alexmaietta/ernie/releases/latest) and install it with a Vulkan driver: Mesa's below, which includes the lavapipe software driver for machines without a GPU, or your GPU vendor's.
82
+
83
+ ```sh
84
+ # Debian, Ubuntu
85
+ sudo apt install mesa-vulkan-drivers
86
+ sudo apt install ./ernie_*.deb
87
+
88
+ # RHEL, Rocky, Fedora
89
+ sudo dnf install mesa-vulkan-drivers
90
+ sudo dnf install ./ernie-*.rpm
91
+ ```
92
+
93
+ ### Docker
94
+
95
+ The `ernie` program is also published as a Docker image.
96
+
97
+ ```sh
98
+ docker run --rm --gpus all -v "$PWD:/out" ghcr.io/alexmaietta/ernie --demo demo_atmosphere_earth --viewer null --output /out/earth.png
99
+ ```
100
+
101
+ ### Build from source
102
+
103
+ Ernie needs CMake 3.24+, a C++20 compiler, Python 3.10+ with its development headers (or `-DERNIE_BUILD_PYTHON=OFF`) and a Vulkan 1.3 driver. Small dependencies are vendored; Slang and OpenEXR are fetched on first configure (see [third_party/README.md](third_party/README.md)).
104
+
105
+ ```sh
106
+ cmake -S . -B build -DERNIE_BUILD_TESTS=ON
107
+ cmake --build build
108
+ ctest --test-dir build -j4 # C++, GPU and Python tests
109
+ build/bin/ernie # the viewer
110
+ cmake --install build --prefix ~/.local # libernie, headers and the CMake package
111
+ ```
112
+
113
+ To build the Python wheel instead, run `uv build --wheel --out-dir dist .` and `uv pip install dist/ernie_renderer-*.whl`; for the Linux packages, `cmake --preset package-deb` (or `package-rpm`), `cmake --build --preset package-deb` and `cpack --preset package-deb`. See [CONTRIBUTING.md](CONTRIBUTING.md) for the build options, testing without a GPU on lavapipe, and benchmarks.
114
+
115
+ ## Quick Start
116
+
117
+ Run `ernie` to open the Ernie Viewer. Its Demos panel runs any of the built-in demos, each written in both C++ and Python, covering cameras and sensors, lighting, atmospheres, terrain, lasers, batched rendering and the viewer; the two versions of a demo render the same image.
118
+
119
+ ```sh
120
+ ernie # the viewer, with the Demos panel
121
+ ernie --list # every demo's name
122
+ ernie --demo demo_atmosphere_earth # run one demo
123
+ ernie --help # every option
124
+ ```
125
+
126
+ `python -m ernie` opens the same viewer and takes the same options, and `python -m ernie.demos` runs the Python version of a demo:
127
+
128
+ ```sh
129
+ python -m ernie.demos --list
130
+ python -m ernie.demos demo_atmosphere_earth
131
+ ```
132
+
133
+ Every demo takes common options, such as `--viewer null` to render without a window and `--output frame.png` to save the last frame; `--help` lists them.
134
+
135
+ ## Your First Render
136
+
137
+ ### Python
138
+
139
+ ```python
140
+ from PIL import Image
141
+
142
+ import ernie
143
+ from ernie import tokens
144
+
145
+ scene = ernie.Scene()
146
+ scene.define("/World/Ground", ernie.GroundPlane)
147
+ scene.define("/World/Rock", ernie.Sphere, translate=(0, 0, 1)) # 1 m up
148
+ scene.define("/World/Sun", ernie.DistantLight).set(
149
+ tokens.TRANSFORM, ernie.distant_light_transform((0.4, -0.6, 0.7))
150
+ )
151
+ scene.define("/World/Camera", ernie.Camera).set(
152
+ tokens.TRANSFORM, ernie.look_at_transform((0, -8, 3), (0, 0, 1))
153
+ )
154
+ scene.define(
155
+ "/Render/Settings", ernie.RenderSettings, camera="/World/Camera", resolution=(640, 480)
156
+ )
157
+
158
+ renderer = ernie.Renderer()
159
+ image = renderer.render(scene) # a (480, 640, 4) uint8 NumPy array
160
+ Image.fromarray(image).save("ernie.png")
161
+ ```
162
+
163
+ ### C++
164
+
165
+ With the `ernie` package or your own build installed, find it with CMake:
166
+
167
+ ```cmake
168
+ find_package(Ernie REQUIRED)
169
+ target_link_libraries(my_app PRIVATE Ernie::ernie)
170
+ ```
171
+
172
+ ```cpp
173
+ #include <ernie/scene/schemas.h>
174
+ #include <ernie/scene/tokens.h>
175
+ #include <ernie/scene/xform.h>
176
+ #include <ernie/render/renderer.h>
177
+
178
+ int main() {
179
+ using namespace ernie;
180
+ Scene scene;
181
+ GroundPlane::Define(scene, "/World/Ground");
182
+ Sphere::Define(scene, "/World/Rock");
183
+ SetXform(scene, "/World/Rock", {.translate = glm::dvec3(0.0, 0.0, 1.0)}); // 1 m up
184
+ DistantLight::Define(scene, "/World/Sun");
185
+ scene.Set("/World/Sun", tokens::kTransform, DistantLightTransform({0.4, -0.6, 0.7}));
186
+ Camera::Define(scene, "/World/Camera");
187
+ scene.Set("/World/Camera", tokens::kTransform,
188
+ LookAtTransform({0.0, -8.0, 3.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, 1.0}));
189
+ RenderSettings::Define(scene, "/Render/Settings")
190
+ .SetCamera("/World/Camera")
191
+ .SetResolution({640, 480});
192
+
193
+ Renderer renderer;
194
+ Tensor image = renderer.Render(scene); // 480 x 640 x 4 bytes of LdrColor on the CPU
195
+ }
196
+ ```
197
+
198
+ ## Citation
199
+
200
+ If you use Ernie in your research, please cite it. GitHub's "Cite this repository" button gives the same citation from [CITATION.cff](CITATION.cff).
201
+
202
+ ```bibtex
203
+ @software{maietta2026ernie,
204
+ author = {Maietta, Alex},
205
+ title = {Ernie: Efficient Renderer for Natural and Interplanetary Environments},
206
+ year = {2026},
207
+ version = {0.1.0},
208
+ url = {https://github.com/alexmaietta/ernie},
209
+ license = {BSD-3-Clause}
210
+ }
211
+ ```
212
+
213
+ ## License
214
+
215
+ Ernie is licensed under the [BSD 3-Clause License](LICENSE). The third-party libraries it bundles keep their own licenses, listed in [third_party/README.md](third_party/README.md).
@@ -0,0 +1,6 @@
1
+ # SPDX-License-Identifier: BSD-3-Clause
2
+ add_executable(ernie_benchmarks main.cpp device/pose_step.cpp scene/extents.cpp scene/storage.cpp)
3
+ target_link_libraries(
4
+ ernie_benchmarks
5
+ PRIVATE ernie_static ernie_volk ernie_vma ernie_build_options
6
+ )
@@ -0,0 +1,36 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ /// @file pose_step.cpp
3
+ /// @brief A steady-state step of 16,384 instances on device columns: poses written in place,
4
+ /// then turned into instance transforms, with no bulk bytes through the host.
5
+ #include "tests/device/pose_step.h"
6
+ #include "benchmarks/bench.h"
7
+
8
+ #include <cstdio>
9
+ #include <memory>
10
+
11
+ namespace ernie::bench {
12
+ namespace {
13
+
14
+ const bool kPoseStep = Register("device.pose_step.16k_instances", [] {
15
+ std::unique_ptr<DeviceContext> context;
16
+ try {
17
+ context = std::make_unique<DeviceContext>();
18
+ } catch (const DeviceError& error) {
19
+ std::printf("skipped: %s\n", error.what());
20
+ return Timing{0.0, 1.0};
21
+ }
22
+ const ShaderCompiler compiler;
23
+ test::PoseStep poses(*context, compiler, 16'384);
24
+ std::uint32_t step = 0;
25
+ const auto run = [&] { poses.Step(++step).Wait(); };
26
+ run();
27
+ const Transfers before = context->Transfers();
28
+ const double ms = Fastest([] {}, run, 20);
29
+ if (context->Transfers() != before) {
30
+ std::printf("device.pose_step.16k_instances moved bytes through the host\n");
31
+ }
32
+ return Timing{ms, 1.0};
33
+ });
34
+
35
+ } // namespace
36
+ } // namespace ernie::bench