hyperverse 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. hyperdrone/__init__.py +31 -0
  2. hyperdrone/_native/cmake/hyperdrone_jit.cmake +65 -0
  3. hyperdrone/_native/common/bindings.h +39 -0
  4. hyperdrone/_native/common/cuda_staging.h +75 -0
  5. hyperdrone/_native/common/jit_host.h +69 -0
  6. hyperdrone/_native/common/models.h +24 -0
  7. hyperdrone/_native/dynamics/CMakeLists.txt +61 -0
  8. hyperdrone/_native/dynamics/host.cpp +193 -0
  9. hyperdrone/_native/dynamics/iface.h +76 -0
  10. hyperdrone/_native/dynamics/impl.cpp +608 -0
  11. hyperdrone/_native/env/CMakeLists.txt +71 -0
  12. hyperdrone/_native/env/environment.cpp +124 -0
  13. hyperdrone/_native/env/environment.h +407 -0
  14. hyperdrone/_native/env/rotorcraft_bindings.cpp +51 -0
  15. hyperdrone/_native/render/CMakeLists.txt +94 -0
  16. hyperdrone/_native/render/renderer.cpp +962 -0
  17. hyperdrone/_native/render/rig_bindings.h +151 -0
  18. hyperdrone/_native/render/scene_bindings.cpp +466 -0
  19. hyperdrone/_vendor/rl-tools/CMakeLists.txt +205 -0
  20. hyperdrone/_vendor/rl-tools/LICENSE +21 -0
  21. hyperdrone/_vendor/rl-tools/cmake/autodetect/all.cmake +34 -0
  22. hyperdrone/_vendor/rl-tools/cmake/autodetect/git-diff.cmake +100 -0
  23. hyperdrone/_vendor/rl-tools/cmake/autodetect/git-hash.cmake +24 -0
  24. hyperdrone/_vendor/rl-tools/cmake/autodetect/summary.cmake +64 -0
  25. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier0-compiler.cmake +18 -0
  26. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier1-blas.cmake +51 -0
  27. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier2-json-hdf5-zlib.cmake +81 -0
  28. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier3-tensorboard.cmake +25 -0
  29. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier4-cuda.cmake +42 -0
  30. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier5-cli11.cmake +24 -0
  31. hyperdrone/_vendor/rl-tools/cmake/dependencies/assimp.cmake +19 -0
  32. hyperdrone/_vendor/rl-tools/cmake/legacy_flags.cmake +33 -0
  33. hyperdrone/_vendor/rl-tools/cmake/optional/assimp.cmake +30 -0
  34. hyperdrone/_vendor/rl-tools/cmake/optional/googletest.cmake +20 -0
  35. hyperdrone/_vendor/rl-tools/cmake/optional/metal.cmake +25 -0
  36. hyperdrone/_vendor/rl-tools/cmake/optional/mujoco.cmake +89 -0
  37. hyperdrone/_vendor/rl-tools/cmake/optional/optix.cmake +25 -0
  38. hyperdrone/_vendor/rl-tools/cmake/optional/raytracing.cmake +105 -0
  39. hyperdrone/_vendor/rl-tools/cmake/optional/raytracing_generic.cmake +2 -0
  40. hyperdrone/_vendor/rl-tools/cmake/optional/vulkan.cmake +4 -0
  41. hyperdrone/_vendor/rl-tools/cmake/optional/webgpu.cmake +24 -0
  42. hyperdrone/_vendor/rl-tools/cmake/scripts/embed_text.cmake +7 -0
  43. hyperdrone/_vendor/rl-tools/cmake/scripts/generate-git-snapshot.cmake +138 -0
  44. hyperdrone/_vendor/rl-tools/include/conta/conta.h +1161 -0
  45. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/matrix.h +143 -0
  46. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_arm.h +33 -0
  47. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu.h +314 -0
  48. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_accelerate.h +37 -0
  49. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_blas.h +67 -0
  50. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_mkl.h +38 -0
  51. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_openblas.h +34 -0
  52. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cuda.h +289 -0
  53. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_dummy.h +20 -0
  54. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_esp32.h +29 -0
  55. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_generic.h +944 -0
  56. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_wasm32.h +13 -0
  57. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/persist_code.h +136 -0
  58. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_arm.h +1 -0
  59. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu.h +94 -0
  60. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_accelerate.h +25 -0
  61. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_blas.h +115 -0
  62. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_mkl.h +25 -0
  63. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_openblas.h +25 -0
  64. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cuda.h +713 -0
  65. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_generic.h +1356 -0
  66. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/persist_code.h +130 -0
  67. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/tensor.h +490 -0
  68. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/arm.h +91 -0
  69. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu.h +209 -0
  70. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_accelerate.h +23 -0
  71. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_blas.h +21 -0
  72. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_mkl.h +45 -0
  73. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_openblas.h +56 -0
  74. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_tensorboard.h +34 -0
  75. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cuda.h +415 -0
  76. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/devices.h +97 -0
  77. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/dummy.h +55 -0
  78. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/esp32.h +85 -0
  79. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/generic.h +0 -0
  80. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/wasm32.h +59 -0
  81. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/model.h +218 -0
  82. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/operations_generic.h +769 -0
  83. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/persist.h +278 -0
  84. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter.h +100 -0
  85. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter_persist.h +52 -0
  86. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/tensor_operations_generic.h +55 -0
  87. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_backend.h +117 -0
  88. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_interface.h +36 -0
  89. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/l2f.h +98 -0
  90. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_dyn.h +18 -0
  91. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_generic.h +268 -0
  92. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_backend.h +31 -0
  93. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_interface.h +12 -0
  94. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_backend.h +98 -0
  95. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_interface.h +50 -0
  96. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/executor.h +133 -0
  97. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/helper.h +109 -0
  98. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/operations_generic.h +219 -0
  99. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arduino.h +117 -0
  100. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arm.h +56 -0
  101. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu.h +93 -0
  102. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu_tensorboard.h +151 -0
  103. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cuda.h +65 -0
  104. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_dummy.h +45 -0
  105. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_wasm32.h +56 -0
  106. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_arm.h +98 -0
  107. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cpu.h +138 -0
  108. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cuda.h +380 -0
  109. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_dummy.h +93 -0
  110. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_esp32.h +92 -0
  111. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_generic.h +295 -0
  112. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_wasm32.h +230 -0
  113. hyperdrone/_vendor/rl-tools/include/rl_tools/mode/mode.h +98 -0
  114. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/activation_functions.h +113 -0
  115. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/capability.h +61 -0
  116. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/persist_code.h +31 -0
  117. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/group.h +99 -0
  118. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/layer.h +122 -0
  119. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_cuda.h +64 -0
  120. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_generic.h +186 -0
  121. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/persist.h +33 -0
  122. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/layer.h +300 -0
  123. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cpu_mkl.h +590 -0
  124. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cuda.h +809 -0
  125. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_generic.h +1219 -0
  126. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist.h +99 -0
  127. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist_code.h +170 -0
  128. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/layer.h +145 -0
  129. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/dsp.h +63 -0
  130. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/opt.h +173 -0
  131. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu.h +13 -0
  132. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_accelerate.h +66 -0
  133. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_blas.h +282 -0
  134. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_mkl.h +66 -0
  135. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_openblas.h +65 -0
  136. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cuda.h +519 -0
  137. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_dummy.h +8 -0
  138. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/dsp.h +58 -0
  139. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/opt.h +167 -0
  140. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_generic.h +429 -0
  141. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist.h +62 -0
  142. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_code.h +178 -0
  143. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_common.h +59 -0
  144. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/layer.h +188 -0
  145. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_cuda.h +356 -0
  146. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_generic.h +536 -0
  147. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/persist.h +32 -0
  148. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/layer.h +119 -0
  149. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/operations_generic.h +223 -0
  150. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/persist.h +46 -0
  151. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/layer.h +121 -0
  152. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/operations_generic.h +154 -0
  153. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist.h +44 -0
  154. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist_code.h +106 -0
  155. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_cuda.h +602 -0
  156. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_generic.h +251 -0
  157. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/layer.h +206 -0
  158. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/operations_generic.h +889 -0
  159. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist.h +75 -0
  160. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist_code.h +199 -0
  161. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/layers.h +3 -0
  162. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/layer.h +143 -0
  163. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_cuda.h +80 -0
  164. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_generic.h +216 -0
  165. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/persist.h +39 -0
  166. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu.h +1 -0
  167. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_accelerate.h +1 -0
  168. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_blas.h +1 -0
  169. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_mkl.h +3 -0
  170. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_openblas.h +1 -0
  171. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cuda.h +9 -0
  172. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_dummy.h +1 -0
  173. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_generic.h +3 -0
  174. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/layer.h +223 -0
  175. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_cuda.h +138 -0
  176. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_generic.h +446 -0
  177. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/persist.h +70 -0
  178. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/layer.h +154 -0
  179. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_cuda.h +119 -0
  180. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_generic.h +502 -0
  181. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist.h +50 -0
  182. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist_code.h +173 -0
  183. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/layer.h +116 -0
  184. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_cuda.h +156 -0
  185. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_generic.h +295 -0
  186. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist.h +83 -0
  187. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist_code.h +163 -0
  188. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/layer.h +123 -0
  189. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/operations_generic.h +272 -0
  190. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist.h +17 -0
  191. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist_code.h +164 -0
  192. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/layer.h +122 -0
  193. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_cuda.h +55 -0
  194. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_generic.h +160 -0
  195. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist.h +47 -0
  196. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist_code.h +106 -0
  197. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/layer.h +132 -0
  198. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_cuda.h +141 -0
  199. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_generic.h +230 -0
  200. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/categorical_cross_entropy/operations_generic.h +102 -0
  201. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_cuda.h +97 -0
  202. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_generic.h +101 -0
  203. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/operations_generic.h +2 -0
  204. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/nn.h +14 -0
  205. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu.h +1 -0
  206. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_accelerate.h +1 -0
  207. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_blas.h +1 -0
  208. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mkl.h +1 -0
  209. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mux.h +16 -0
  210. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_openblas.h +1 -0
  211. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cuda.h +2 -0
  212. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_dummy.h +1 -0
  213. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_generic.h +15 -0
  214. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/adam.h +121 -0
  215. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_cuda.h +98 -0
  216. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_generic.h +150 -0
  217. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist.h +39 -0
  218. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist_code.h +80 -0
  219. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_cuda.h +85 -0
  220. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_generic.h +109 -0
  221. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/persist.h +25 -0
  222. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/instance/operations_generic.h +107 -0
  223. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/lamb.h +40 -0
  224. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/operations_generic.h +68 -0
  225. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/optimizers.h +3 -0
  226. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_cuda.h +85 -0
  227. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_generic.h +140 -0
  228. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist.h +37 -0
  229. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist_code.h +72 -0
  230. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_cuda.h +49 -0
  231. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_generic.h +50 -0
  232. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/sgd.h +92 -0
  233. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/update.h +54 -0
  234. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_cuda.h +0 -0
  235. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_generic.h +98 -0
  236. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/parameters.h +79 -0
  237. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist.h +34 -0
  238. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist_code.h +136 -0
  239. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist.h +2 -0
  240. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist_code.h +27 -0
  241. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/behaviors/skip_parameter_gradients.h +65 -0
  242. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/README.md +107 -0
  243. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/model.h +19 -0
  244. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/persist_code.h +77 -0
  245. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/network.h +174 -0
  246. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_cuda.h +10 -0
  247. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_dummy.h +8 -0
  248. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_generic.h +407 -0
  249. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist.h +56 -0
  250. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist_code.h +137 -0
  251. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/network.h +55 -0
  252. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/operations_generic.h +86 -0
  253. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist.h +43 -0
  254. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist_code.h +142 -0
  255. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/models.h +3 -0
  256. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/model.h +148 -0
  257. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/operations_generic.h +288 -0
  258. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist.h +25 -0
  259. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist_code.h +71 -0
  260. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cpu.h +0 -0
  261. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cuda.h +1 -0
  262. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_dummy.h +1 -0
  263. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_generic.h +4 -0
  264. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/model.h +290 -0
  265. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_cuda.h +174 -0
  266. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_generic.h +623 -0
  267. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist.h +80 -0
  268. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist_code.h +200 -0
  269. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist.h +1 -0
  270. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist_code.h +1 -0
  271. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/model.h +43 -0
  272. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/operations_generic.h +73 -0
  273. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/resnet/resnet.h +97 -0
  274. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/model.h +270 -0
  275. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/operations_generic.h +625 -0
  276. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist.h +99 -0
  277. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist_code.h +115 -0
  278. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/bf16.h +28 -0
  279. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/categories.h +22 -0
  280. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/persist_code.h +54 -0
  281. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/policy.h +48 -0
  282. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_1.h +18 -0
  283. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_2.h +14 -0
  284. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_3.h +14 -0
  285. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm.h +19 -0
  286. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_1.h +17 -0
  287. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_2.h +12 -0
  288. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_3.h +15 -0
  289. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu.h +19 -0
  290. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_1.h +16 -0
  291. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_2.h +12 -0
  292. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_3.h +15 -0
  293. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate.h +19 -0
  294. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_1.h +17 -0
  295. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_2.h +12 -0
  296. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_3.h +15 -0
  297. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl.h +18 -0
  298. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mux.h +148 -0
  299. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_1.h +16 -0
  300. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_2.h +12 -0
  301. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_3.h +15 -0
  302. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas.h +18 -0
  303. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_1.h +16 -0
  304. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_2.h +12 -0
  305. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_3.h +15 -0
  306. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard.h +19 -0
  307. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_1.h +18 -0
  308. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_2.h +12 -0
  309. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_3.h +12 -0
  310. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda.h +19 -0
  311. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_1.h +15 -0
  312. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_2.h +12 -0
  313. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_3.h +12 -0
  314. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy.h +19 -0
  315. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_1.h +16 -0
  316. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_2.h +12 -0
  317. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_3.h +13 -0
  318. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32.h +19 -0
  319. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_1.h +15 -0
  320. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_2.h +12 -0
  321. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_3.h +12 -0
  322. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32.h +19 -0
  323. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/hdf5.h +54 -0
  324. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/operations_cpu.h +419 -0
  325. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/io.h +55 -0
  326. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_cpu.h +58 -0
  327. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_generic.h +620 -0
  328. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_posix.h +63 -0
  329. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/tar.h +74 -0
  330. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/code.h +38 -0
  331. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_arm.h +39 -0
  332. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cpu.h +81 -0
  333. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cuda.h +169 -0
  334. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_dummy.h +72 -0
  335. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_esp32.h +45 -0
  336. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic.h +133 -0
  337. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic_array.h +73 -0
  338. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_wasm32.h +57 -0
  339. hyperdrone/_vendor/rl-tools/include/rl_tools/random/persist.h +77 -0
  340. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/camera.h +105 -0
  341. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/cache.h +26 -0
  342. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/free_space.h +60 -0
  343. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/operations_cpu.h +408 -0
  344. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/operations_cpu.h +1313 -0
  345. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/operations_cpu.h +96 -0
  346. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/conversion.h +33 -0
  347. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/operations_cpu.h +141 -0
  348. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/procthor.h +40 -0
  349. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_cpu.h +733 -0
  350. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_generic.h +1299 -0
  351. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/context.h +198 -0
  352. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/device_source.h +17 -0
  353. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/operations_cpu.h +1140 -0
  354. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device.h +233 -0
  355. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device_impl.h +1084 -0
  356. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/operations_cuda.h +1808 -0
  357. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/overlay_accel.h +64 -0
  358. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/specialization.h +38 -0
  359. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/context.h +248 -0
  360. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/device_source.h +48 -0
  361. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/operations_cpu.h +2056 -0
  362. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/bvh_sah.h +182 -0
  363. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/context.h +303 -0
  364. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/device_source.h +17 -0
  365. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/operations_cpu.h +1455 -0
  366. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_common.h +916 -0
  367. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_mux.h +31 -0
  368. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_post.h +85 -0
  369. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/renderer.h +478 -0
  370. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/save_cpu.h +315 -0
  371. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/scene.h +44 -0
  372. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/transforms_generic.h +25 -0
  373. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/types.h +45 -0
  374. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_cpu.h +119 -0
  375. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_generic.h +121 -0
  376. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/rig.h +70 -0
  377. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/scene.h +134 -0
  378. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/segmentation_cpu.h +145 -0
  379. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/transforms.h +204 -0
  380. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/types.h +55 -0
  381. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/algorithms.h +6 -0
  382. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu.h +1 -0
  383. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu_mkl.h +1 -0
  384. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_generic.h +1 -0
  385. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/config.h +243 -0
  386. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_cuda.h +9 -0
  387. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_generic.h +205 -0
  388. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/persist.h +109 -0
  389. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/state.h +51 -0
  390. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/mixed_imitation.h +63 -0
  391. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_cuda.h +190 -0
  392. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic.h +332 -0
  393. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic_mixed_imitation.h +81 -0
  394. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/persist.h +28 -0
  395. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/ppo.h +105 -0
  396. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_gru.h +84 -0
  397. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_mlp.h +61 -0
  398. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/config.h +106 -0
  399. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/operations_generic.h +193 -0
  400. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/state.h +52 -0
  401. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu.h +9 -0
  402. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_accelerate.h +2 -0
  403. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mkl.h +2 -0
  404. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mux.h +9 -0
  405. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cuda.h +131 -0
  406. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_generic.h +580 -0
  407. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/sac.h +151 -0
  408. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_gru.h +72 -0
  409. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_mlp.h +54 -0
  410. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/config.h +107 -0
  411. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/operations_generic.h +174 -0
  412. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/state.h +46 -0
  413. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu.h +9 -0
  414. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_accelerate.h +2 -0
  415. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mkl.h +2 -0
  416. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mux.h +9 -0
  417. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cuda.h +117 -0
  418. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_generic.h +359 -0
  419. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/td3.h +141 -0
  420. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/components.h +4 -0
  421. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/off_policy_runner.h +225 -0
  422. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu.h +95 -0
  423. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_accelerate.h +21 -0
  424. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_mkl.h +21 -0
  425. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cuda.h +237 -0
  426. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic.h +498 -0
  427. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic_per_env.h +112 -0
  428. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/collection.h +57 -0
  429. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/on_policy_runner.h +122 -0
  430. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu.h +2 -0
  431. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_accelerate.h +8 -0
  432. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mkl.h +8 -0
  433. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mux.h +12 -0
  434. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cuda.h +183 -0
  435. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic.h +366 -0
  436. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic_common.h +74 -0
  437. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/persist.h +47 -0
  438. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu.h +2 -0
  439. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_accelerate.h +1 -0
  440. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_mkl.h +1 -0
  441. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_generic.h +2 -0
  442. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_cpu.h +9 -0
  443. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_generic.h +123 -0
  444. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/persist.h +57 -0
  445. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/replay_buffer.h +93 -0
  446. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/operations_generic.h +76 -0
  447. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/persist.h +31 -0
  448. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/running_normalizer.h +33 -0
  449. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/operations_generic.h +58 -0
  450. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/operations_generic.h +28 -0
  451. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/wrapper.h +26 -0
  452. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/wrappers.h +29 -0
  453. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/acrobot.h +88 -0
  454. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_cpu.h +152 -0
  455. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_generic.h +202 -0
  456. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/environment.h +40 -0
  457. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_cuda.h +204 -0
  458. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic.h +106 -0
  459. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic_common.h +26 -0
  460. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/persist.h +33 -0
  461. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/car.h +119 -0
  462. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_cpu.h +110 -0
  463. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_generic.h +206 -0
  464. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_json.h +59 -0
  465. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/track.h +23 -0
  466. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/ui.h +189 -0
  467. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/environments.h +28 -0
  468. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/environment.h +87 -0
  469. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_cpu.h +212 -0
  470. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_generic.h +215 -0
  471. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/observation.h +75 -0
  472. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cpu.h +938 -0
  473. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cuda.h +380 -0
  474. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/pose.h +228 -0
  475. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/presets.h +148 -0
  476. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_cpu.h +189 -0
  477. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_generic.h +32 -0
  478. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/rig.h +25 -0
  479. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/moving_gate.h +106 -0
  480. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cpu.h +262 -0
  481. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cuda.h +254 -0
  482. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cpu.h +224 -0
  483. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cuda.h +218 -0
  484. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_generic_position_hold.h +128 -0
  485. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/position_hold.h +22 -0
  486. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/target_frame.h +77 -0
  487. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/autopilot.h +61 -0
  488. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/baseline.h +46 -0
  489. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/calibration.h +62 -0
  490. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/metrics.h +101 -0
  491. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/operations_cpu.h +389 -0
  492. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/visual_inertial_localization.h +123 -0
  493. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/world.h +318 -0
  494. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/inertial_velocity.h +27 -0
  495. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/metrics.h +266 -0
  496. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/multirotor.h +1138 -0
  497. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_cpu.h +2246 -0
  498. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/05_state_is_nan.h +148 -0
  499. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/10_sample_initial_parameters.h +228 -0
  500. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/20_initial_state.h +208 -0
  501. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/30_sample_initial_state.h +300 -0
  502. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/35_get_desired_state.h +63 -0
  503. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/40_observe.h +637 -0
  504. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/50_state_algebra.h +57 -0
  505. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/60_dynamics.h +134 -0
  506. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/70_post_integration.h +368 -0
  507. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/80_abs_diff.h +312 -0
  508. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic.h +367 -0
  509. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic_inertial_velocity.h +44 -0
  510. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_helper_generic.h +43 -0
  511. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic.h +70 -0
  512. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic_forward.h +24 -0
  513. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/default.h +209 -0
  514. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/arpl.h +112 -0
  515. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie.h +127 -0
  516. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie_openmv.h +119 -0
  517. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/flightmare.h +111 -0
  518. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/fs.h +113 -0
  519. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/mrs.h +110 -0
  520. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft.h +117 -0
  521. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft_rigid.h +118 -0
  522. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500.h +88 -0
  523. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_real.h +88 -0
  524. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_sim.h +114 -0
  525. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/init/default.h +56 -0
  526. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/registry.h +96 -0
  527. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/default.h +64 -0
  528. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/reward_functions.h +1 -0
  529. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/operations_generic.h +202 -0
  530. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/squared.h +52 -0
  531. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/termination/default.h +33 -0
  532. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/lissajous.h +72 -0
  533. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/trajectory.h +78 -0
  534. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist.h +21 -0
  535. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist_code.h +53 -0
  536. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/quaternion_helper.h +103 -0
  537. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/ui.h +180 -0
  538. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/environment.h +69 -0
  539. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_cpu.h +46 -0
  540. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_generic.h +78 -0
  541. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/README.MD +5 -0
  542. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ant.h +77 -0
  543. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/model.h +415 -0
  544. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/operations_cpu.h +162 -0
  545. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/persist.h +86 -0
  546. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ui.h +141 -0
  547. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/mujoco.h +1 -0
  548. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/bottleneck.h +113 -0
  549. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_cpu.h +289 -0
  550. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_generic.h +495 -0
  551. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/environments.h +16 -0
  552. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/observation.h +37 -0
  553. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_cpu.h +2 -0
  554. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_generic.h +33 -0
  555. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_cpu.h +146 -0
  556. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_generic.h +262 -0
  557. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/pendulum.h +197 -0
  558. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui.h +97 -0
  559. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui_xeus.h +124 -0
  560. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_cpu.h +426 -0
  561. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_generic.h +424 -0
  562. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/reacher.h +137 -0
  563. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/loop.h +15 -0
  564. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/config.h +28 -0
  565. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/operations_cpu.h +233 -0
  566. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/persist.h +30 -0
  567. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/state.h +21 -0
  568. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/config.h +25 -0
  569. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/operations_generic.h +47 -0
  570. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/persist.h +20 -0
  571. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/state.h +17 -0
  572. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/config.h +47 -0
  573. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/operations_generic.h +106 -0
  574. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/persist.h +40 -0
  575. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/state.h +36 -0
  576. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/config.h +22 -0
  577. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/operations_cpu.h +44 -0
  578. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/persist.h +20 -0
  579. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/state.h +26 -0
  580. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/config.h +37 -0
  581. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/operations_cpu.h +113 -0
  582. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/persist.h +20 -0
  583. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/state.h +24 -0
  584. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/config.h +43 -0
  585. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/operations_cpu.h +190 -0
  586. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/persist.h +30 -0
  587. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/state.h +37 -0
  588. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/steps.h +4 -0
  589. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/config.h +27 -0
  590. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/operations_cpu.h +52 -0
  591. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/persist.h +20 -0
  592. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/state.h +25 -0
  593. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/operations_generic.h +3 -0
  594. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/rl.h +5 -0
  595. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/evaluation.h +106 -0
  596. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_cpu.h +48 -0
  597. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_generic.h +275 -0
  598. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation.h +269 -0
  599. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation_analysis.h +85 -0
  600. hyperdrone/_vendor/rl-tools/include/rl_tools/rl_tools.h +80 -0
  601. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/client.h +50 -0
  602. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_boost.h +92 -0
  603. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_cpu.h +174 -0
  604. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_websocket.h +208 -0
  605. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/server.h +448 -0
  606. hyperdrone/_vendor/rl-tools/include/rl_tools/universe.h +4 -0
  607. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/declarations_cpu.h +13 -0
  608. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_arm.h +29 -0
  609. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cpu.h +25 -0
  610. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cuda.h +33 -0
  611. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_dummy.h +18 -0
  612. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_esp32.h +20 -0
  613. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_generic.h +19 -0
  614. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_wasm32.h +18 -0
  615. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_cpu.h +16 -0
  616. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_generic.h +14 -0
  617. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/extrack.h +129 -0
  618. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/operations_cpu.h +588 -0
  619. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/integrators.h +103 -0
  620. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/memcpy.h +16 -0
  621. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/operations_generic.h +48 -0
  622. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/tuple.h +147 -0
  623. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/typing.h +122 -0
  624. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/vector_operations.h +172 -0
  625. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_cuda.h +53 -0
  626. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_generic.h +93 -0
  627. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/string/operations_generic.h +201 -0
  628. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/zlib/operations_cpu.h +45 -0
  629. hyperdrone/_vendor/rl-tools/include/rl_tools/version.h +28 -0
  630. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/CMakeLists.txt +15 -0
  631. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/README.md +193 -0
  632. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/CMakeLists.txt +11 -0
  633. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/CMakeLists.txt +17 -0
  634. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/freestanding_check.cpp +135 -0
  635. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/CMakeLists.txt +31 -0
  636. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/device.metal +953 -0
  637. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/metal_cpp_impl.cpp +6 -0
  638. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/CMakeLists.txt +51 -0
  639. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/device.cu +1 -0
  640. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/overlay_accel.cu +311 -0
  641. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/CMakeLists.txt +37 -0
  642. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device.comp +1013 -0
  643. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device_spirv.cpp +44 -0
  644. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/CMakeLists.txt +31 -0
  645. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/device.wgsl +1448 -0
  646. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/CMakeLists.txt +110 -0
  647. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/README.md +55 -0
  648. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark.cpp +180 -0
  649. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark_dynamic.cpp +491 -0
  650. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/rig.cpp +119 -0
  651. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.cpp +1130 -0
  652. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_config.h.in +13 -0
  653. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/camera_orbit.h +51 -0
  654. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/CMakeLists.txt +199 -0
  655. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/antialiasing.cpp +214 -0
  656. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone.cpp +320 -0
  657. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone_device.cu +359 -0
  658. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/environment.h +96 -0
  659. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/operations_cpu.h +263 -0
  660. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/example.cpp +273 -0
  661. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/fixed_pose.cpp +221 -0
  662. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/flow.cpp +120 -0
  663. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/interactive.cpp +1015 -0
  664. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/make_drone_glb.py +172 -0
  665. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal.cpp +82 -0
  666. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal_overlay.cpp +137 -0
  667. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/motion_blur.cpp +232 -0
  668. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace.cpp +1829 -0
  669. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace_motion_blur.cpp +647 -0
  670. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/assimp/CMakeLists.txt +8 -0
  671. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/build.sh +80 -0
  672. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/drone_web.cpp +234 -0
  673. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/CMakeLists.txt +147 -0
  674. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/README.md +15 -0
  675. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/job.sbatch +28 -0
  676. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model.h +260 -0
  677. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_config.h +24 -0
  678. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_forward_cuda.h +397 -0
  679. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_operations.h +418 -0
  680. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_persist.h +45 -0
  681. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_student.h +70 -0
  682. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.cpp +222 -0
  683. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.h +68 -0
  684. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/.gitignore +4 -0
  685. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/CMakeLists.txt +4 -0
  686. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info.plist +24 -0
  687. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info_ios.plist +36 -0
  688. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/CameraManager.swift +120 -0
  689. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/ContentView.swift +703 -0
  690. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/DatasetRecorder.swift +285 -0
  691. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/YawPredictorApp.swift +25 -0
  692. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/YawPredictor.entitlements +8 -0
  693. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build.sh +66 -0
  694. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build_ios.sh +133 -0
  695. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/generate.sh +6 -0
  696. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/h5_to_tar.cpp +82 -0
  697. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.cpp +166 -0
  698. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.h +26 -0
  699. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/project.yml +30 -0
  700. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/test_tar_vs_hdf5.cpp +173 -0
  701. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_cuda.cu +699 -0
  702. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_dataset_overlay.cpp +475 -0
  703. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_distill_cuda.cu +995 -0
  704. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_eval.cu +457 -0
  705. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_real_world_eval.cpp +660 -0
  706. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_viewer.cu +443 -0
  707. hyperdrone/cuda/__init__.py +78 -0
  708. hyperdrone/dynamics/__init__.py +22 -0
  709. hyperdrone/dynamics/_component.py +35 -0
  710. hyperdrone/dynamics/_config.py +48 -0
  711. hyperdrone/dynamics/_sim.py +195 -0
  712. hyperdrone/env/__init__.py +17 -0
  713. hyperdrone/env/_multi_environment.py +407 -0
  714. hyperdrone/env/_rotorcraft.py +31 -0
  715. hyperdrone/examples/.gitignore +2 -0
  716. hyperdrone/examples/Benchmark.ipynb +102 -0
  717. hyperdrone/examples/HyperDrone.ipynb +514 -0
  718. hyperdrone/examples/Orbiter.ipynb +462 -0
  719. hyperdrone/examples/Renderer.ipynb +173 -0
  720. hyperdrone/examples/__init__.py +16 -0
  721. hyperdrone/examples/articulation.py +55 -0
  722. hyperdrone/examples/benchmark.py +236 -0
  723. hyperdrone/examples/benchmark_minimal.py +65 -0
  724. hyperdrone/examples/data.py +70 -0
  725. hyperdrone/examples/drone_flythrough.py +169 -0
  726. hyperdrone/examples/hyperdrone_videos/my_world_preview.h +17 -0
  727. hyperdrone/examples/my_world.h +17 -0
  728. hyperdrone/examples/render_procthor.py +41 -0
  729. hyperdrone/examples/visual_inertial_localization.py +159 -0
  730. hyperdrone/gym/__init__.py +63 -0
  731. hyperdrone/jit/__init__.py +129 -0
  732. hyperdrone/jit/_build.py +113 -0
  733. hyperdrone/jit/_lock.py +23 -0
  734. hyperdrone/jit/_patches.py +99 -0
  735. hyperdrone/jit/_toolchain.py +17 -0
  736. hyperdrone/jit/_workspace.py +68 -0
  737. hyperdrone/render/__init__.py +53 -0
  738. hyperdrone/render/_component.py +51 -0
  739. hyperdrone/render/_config.py +92 -0
  740. hyperdrone/render/_renderer.py +447 -0
  741. hyperdrone/render/_rig.py +136 -0
  742. hyperdrone/render/_sampling.py +69 -0
  743. hyperdrone/render/_scene.py +36 -0
  744. hyperverse-0.0.1.dist-info/METADATA +370 -0
  745. hyperverse-0.0.1.dist-info/RECORD +746 -0
  746. hyperverse-0.0.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,1084 @@
1
+ #include "../../../../version.h"
2
+ #include "../../../../rl_tools.h"
3
+ #if (defined(RL_TOOLS_DISABLE_INCLUDE_GUARDS) || !defined(RL_TOOLS_RENDERING_RAYTRACING_BACKENDS_OPTIX_DEVICE_IMPL_H)) && (RL_TOOLS_USE_THIS_VERSION == 1)
4
+ #pragma once
5
+ #define RL_TOOLS_RENDERING_RAYTRACING_BACKENDS_OPTIX_DEVICE_IMPL_H
6
+
7
+ #include "device.h"
8
+ #include <optix_device.h>
9
+
10
+ #ifndef RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
11
+ #define RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS 0
12
+ #endif
13
+ #ifndef RL_TOOLS_RENDERING_RAYTRACING_ENABLE_NORMALS_PROGRAMS
14
+ #define RL_TOOLS_RENDERING_RAYTRACING_ENABLE_NORMALS_PROGRAMS 0
15
+ #endif
16
+
17
+ RL_TOOLS_NAMESPACE_WRAPPER_START
18
+ namespace rl_tools
19
+ {
20
+ // ray type 2 (normals) only exists in normals-enabled PTX; the host mirrors this via
21
+ // owlContextSetRayTypeCount keyed on SPEC::HAS_NORMALS, keeping the SBT stride in sync
22
+ static constexpr int NUM_RAY_TYPES = RL_TOOLS_RENDERING_RAYTRACING_ENABLE_NORMALS_PROGRAMS ? 3 : 2;
23
+
24
+ extern "C" __constant__ OverlayLaunchParams optixLaunchParams;
25
+
26
+ inline __device__ int camera_from_fb_tile()
27
+ {
28
+ const owl::vec2i pixel_id = owl::getLaunchIndex();
29
+ const int tile_col = pixel_id.x / optixLaunchParams.cam_width;
30
+ const int tile_row = pixel_id.y / optixLaunchParams.cam_height;
31
+ return tile_row * optixLaunchParams.grid_cols + tile_col;
32
+ }
33
+
34
+ inline __device__ float linear_to_srgb(float x) {
35
+ if (x <= 0.0031308f) return 12.92f * x;
36
+ return 1.055f * powf(x, 1.f / 2.4f) - 0.055f;
37
+ }
38
+
39
+ inline __device__ uint32_t make_srgb_rgba_from_linear(owl::vec3f color) {
40
+ color.x = linear_to_srgb(fminf(fmaxf(color.x, 0.f), 1.f));
41
+ color.y = linear_to_srgb(fminf(fmaxf(color.y, 0.f), 1.f));
42
+ color.z = linear_to_srgb(fminf(fmaxf(color.z, 0.f), 1.f));
43
+ return owl::make_rgba(color);
44
+ }
45
+
46
+ inline __device__ uint32_t make_linear_rgba_from_linear(owl::vec3f color) {
47
+ color.x = fminf(fmaxf(color.x, 0.f), 1.f);
48
+ color.y = fminf(fmaxf(color.y, 0.f), 1.f);
49
+ color.z = fminf(fmaxf(color.z, 0.f), 1.f);
50
+ return owl::make_rgba(color);
51
+ }
52
+
53
+ inline __device__ owl::vec3f lerp_camera_vec(const owl::vec3f &a, const owl::vec3f &b, float t)
54
+ {
55
+ return (1.f - t) * a + t * b;
56
+ }
57
+
58
+ struct PixelLaunchContext
59
+ {
60
+ int cam_idx;
61
+ int local_x;
62
+ int local_y;
63
+ int fb_offset;
64
+ bool valid;
65
+ };
66
+
67
+ template <typename RAYGEN_DATA>
68
+ inline __device__ PixelLaunchContext pixel_launch_context(const RAYGEN_DATA &self)
69
+ {
70
+ const owl::vec2i pixel_id = owl::getLaunchIndex();
71
+ const int tile_col = pixel_id.x / self.cam_size.x;
72
+ const int tile_row = pixel_id.y / self.cam_size.y;
73
+ const int cam_idx = tile_row * self.grid_cols + tile_col;
74
+ const int local_x = pixel_id.x - tile_col * self.cam_size.x;
75
+ const int local_y = pixel_id.y - tile_row * self.cam_size.y;
76
+ const int fb_offset = cam_idx * self.cam_size.x * self.cam_size.y + local_y * self.cam_size.x + local_x;
77
+ return {cam_idx, local_x, local_y, fb_offset, cam_idx < self.num_cameras};
78
+ }
79
+
80
+ inline __device__ owl::vec3f trace_rgb_color_composed(OptixTraversableHandle world, int camera, unsigned int depth, const owl::vec3f &pos, const owl::vec3f &direction, float tmin, float tmax)
81
+ {
82
+ owl::vec3f color;
83
+ unsigned int p0 = 0, p1 = 0;
84
+ owl::packPointer(&color, p0, p1);
85
+ unsigned int p2 = depth;
86
+ unsigned int p3 = __float_as_uint(1e30f);
87
+ optixTrace(world,
88
+ (const float3&)pos,
89
+ (const float3&)direction,
90
+ tmin,
91
+ tmax,
92
+ 0.0f,
93
+ OptixVisibilityMask(255),
94
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
95
+ 0, NUM_RAY_TYPES, 0,
96
+ p0, p1, p2, p3);
97
+ const int overlay_count = optixLaunchParams.overlay_count;
98
+ float best_t = __uint_as_float(p3);
99
+ for (int k = 0; k < overlay_count; k++) {
100
+ const uint32_t overlay = optixLaunchParams.attachments[camera * overlay_count + k];
101
+ if (overlay == 0xFFFFFFFFu) continue;
102
+ unsigned int q2 = depth;
103
+ unsigned int q3 = __float_as_uint(best_t);
104
+ optixTrace((OptixTraversableHandle)optixLaunchParams.overlays[overlay],
105
+ (const float3&)pos,
106
+ (const float3&)direction,
107
+ tmin,
108
+ fminf(best_t, tmax),
109
+ 0.0f,
110
+ OptixVisibilityMask(255),
111
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
112
+ 0, NUM_RAY_TYPES, 1, // no-op miss: an overlay miss keeps the current color
113
+ p0, p1, q2, q3);
114
+ best_t = fminf(best_t, __uint_as_float(q3));
115
+ }
116
+ return color;
117
+ }
118
+
119
+ inline __device__ bool trace_shadow_occluded(OptixTraversableHandle world, const owl::vec3f &pos, const owl::vec3f &direction, float max_dist)
120
+ {
121
+ unsigned int u0 = __float_as_uint(max_dist);
122
+ unsigned int u1 = 0;
123
+ unsigned int u2 = 0; // collisionHit writes payload 2 (instance id); must be declared here
124
+ optixTrace(world,
125
+ (const float3&)pos,
126
+ (const float3&)direction,
127
+ 1e-3f,
128
+ max_dist,
129
+ 0.0f,
130
+ OptixVisibilityMask(255),
131
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT | OPTIX_RAY_FLAG_TERMINATE_ON_FIRST_HIT,
132
+ 1, NUM_RAY_TYPES, 1,
133
+ u0, u1, u2);
134
+ return u1 != 0;
135
+ }
136
+
137
+ inline __device__ bool trace_shadow_occluded_composed(OptixTraversableHandle world, int camera, const owl::vec3f &pos, const owl::vec3f &direction, float max_dist)
138
+ {
139
+ if (trace_shadow_occluded(world, pos, direction, max_dist)) return true;
140
+ const int overlay_count = optixLaunchParams.overlay_count;
141
+ for (int k = 0; k < overlay_count; k++) {
142
+ const uint32_t overlay = optixLaunchParams.attachments[camera * overlay_count + k];
143
+ if (overlay == 0xFFFFFFFFu) continue;
144
+ if (trace_shadow_occluded((OptixTraversableHandle)optixLaunchParams.overlays[overlay], pos, direction, max_dist)) return true;
145
+ }
146
+ return false;
147
+ }
148
+
149
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
150
+ inline __device__ float trace_depth_distance(OptixTraversableHandle world, const owl::vec3f &pos, const owl::vec3f &direction, float max_depth)
151
+ {
152
+ unsigned int u0 = __float_as_uint(max_depth);
153
+ unsigned int u1 = 0;
154
+ unsigned int u2 = 0; // collisionHit writes payload 2 (instance id); must be declared here
155
+ optixTrace(world,
156
+ (const float3&)pos,
157
+ (const float3&)direction,
158
+ 0.f,
159
+ max_depth,
160
+ 0.0f,
161
+ OptixVisibilityMask(255),
162
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
163
+ 1, NUM_RAY_TYPES, 1,
164
+ u0, u1, u2);
165
+ return __uint_as_float(u0);
166
+ }
167
+
168
+ inline __device__ float trace_depth_distance_composed(OptixTraversableHandle world, int camera, const owl::vec3f &pos, const owl::vec3f &direction, float max_depth)
169
+ {
170
+ float best = trace_depth_distance(world, pos, direction, max_depth);
171
+ const int overlay_count = optixLaunchParams.overlay_count;
172
+ for (int k = 0; k < overlay_count; k++) {
173
+ const uint32_t overlay = optixLaunchParams.attachments[camera * overlay_count + k];
174
+ if (overlay == 0xFFFFFFFFu) continue;
175
+ best = trace_depth_distance((OptixTraversableHandle)optixLaunchParams.overlays[overlay], pos, direction, best);
176
+ }
177
+ return best;
178
+ }
179
+ #endif
180
+
181
+ template <bool T_SRGB_OUTPUT>
182
+ struct RgbOutput
183
+ {
184
+ using Accumulator = owl::vec3f;
185
+ inline __device__ static Accumulator zero() { return owl::vec3f(0.f); }
186
+ template <typename RAYGEN_DATA>
187
+ inline __device__ static void accumulate(const RAYGEN_DATA &self, Accumulator &acc, int camera, const owl::vec3f &pos, const owl::vec3f &direction)
188
+ {
189
+ acc = acc + trace_rgb_color_composed(self.world, camera, 0, pos, direction, 0.f, 1e30f);
190
+ }
191
+ template <typename RAYGEN_DATA>
192
+ inline __device__ static void store(const RAYGEN_DATA &self, const PixelLaunchContext &ctx, Accumulator acc, int samples)
193
+ {
194
+ const owl::vec3f color = acc * (1.f / float(samples));
195
+ if (self.obs_ptr != nullptr) {
196
+ // the observation is the frame-buffer color before 8-bit quantization — same transfer
197
+ // curve, full float precision
198
+ float *obs = self.obs_ptr + (size_t)ctx.fb_offset * 3;
199
+ if constexpr (T_SRGB_OUTPUT) {
200
+ obs[0] = linear_to_srgb(fminf(fmaxf(color.x, 0.f), 1.f));
201
+ obs[1] = linear_to_srgb(fminf(fmaxf(color.y, 0.f), 1.f));
202
+ obs[2] = linear_to_srgb(fminf(fmaxf(color.z, 0.f), 1.f));
203
+ }
204
+ else {
205
+ obs[0] = fminf(fmaxf(color.x, 0.f), 1.f);
206
+ obs[1] = fminf(fmaxf(color.y, 0.f), 1.f);
207
+ obs[2] = fminf(fmaxf(color.z, 0.f), 1.f);
208
+ }
209
+ }
210
+ if constexpr (T_SRGB_OUTPUT) {
211
+ self.fb_ptr[ctx.fb_offset] = make_srgb_rgba_from_linear(color);
212
+ }
213
+ else {
214
+ self.fb_ptr[ctx.fb_offset] = make_linear_rgba_from_linear(color);
215
+ }
216
+ }
217
+ };
218
+
219
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
220
+ struct DepthOutput
221
+ {
222
+ using Accumulator = float;
223
+ inline __device__ static Accumulator zero() { return 0.f; }
224
+ template <typename RAYGEN_DATA>
225
+ inline __device__ static void accumulate(const RAYGEN_DATA &self, Accumulator &acc, int camera, const owl::vec3f &pos, const owl::vec3f &direction)
226
+ {
227
+ acc += trace_depth_distance_composed(self.world, camera, pos, direction, self.max_depth);
228
+ }
229
+ template <typename RAYGEN_DATA>
230
+ inline __device__ static void store(const RAYGEN_DATA &self, const PixelLaunchContext &ctx, Accumulator acc, int samples)
231
+ {
232
+ self.depth_ptr[ctx.fb_offset] = acc * (1.f / float(samples));
233
+ }
234
+ };
235
+ #endif
236
+
237
+ template <typename OUTPUT, bool MOTION_BLUR, int MOTION_SAMPLES, int AA_GRID, typename RAYGEN_DATA>
238
+ inline __device__ void rayGenImpl()
239
+ {
240
+ const RAYGEN_DATA &self = owl::getProgramData<RAYGEN_DATA>();
241
+ const PixelLaunchContext ctx = pixel_launch_context(self);
242
+ if (!ctx.valid)
243
+ return;
244
+
245
+ typename OUTPUT::Accumulator accumulated = OUTPUT::zero();
246
+ const float inv_aa_grid = 1.f / float(AA_GRID);
247
+ for (int motion_i = 0; motion_i < MOTION_SAMPLES; motion_i++) {
248
+ owl::vec3f pos;
249
+ owl::vec3f dir_00;
250
+ owl::vec3f dir_du;
251
+ owl::vec3f dir_dv;
252
+ if constexpr (MOTION_BLUR) {
253
+ const OptixCameraData &cam_open = self.cameras_open[ctx.cam_idx];
254
+ const OptixCameraData &cam_close = self.cameras_close[ctx.cam_idx];
255
+ const float shutter_t = (float(motion_i) + .5f) * (1.f / float(MOTION_SAMPLES));
256
+ pos = lerp_camera_vec(cam_open.pos, cam_close.pos, shutter_t);
257
+ dir_00 = lerp_camera_vec(cam_open.dir_00, cam_close.dir_00, shutter_t);
258
+ dir_du = lerp_camera_vec(cam_open.dir_du, cam_close.dir_du, shutter_t);
259
+ dir_dv = lerp_camera_vec(cam_open.dir_dv, cam_close.dir_dv, shutter_t);
260
+ }
261
+ else {
262
+ const OptixCameraData &cam = self.cameras[ctx.cam_idx];
263
+ pos = cam.pos;
264
+ dir_00 = cam.dir_00;
265
+ dir_du = cam.dir_du;
266
+ dir_dv = cam.dir_dv;
267
+ }
268
+ for (int aa_y = 0; aa_y < AA_GRID; aa_y++) {
269
+ for (int aa_x = 0; aa_x < AA_GRID; aa_x++) {
270
+ const owl::vec2f screen = (owl::vec2f(ctx.local_x, ctx.local_y) + owl::vec2f((float(aa_x) + .5f) * inv_aa_grid, (float(aa_y) + .5f) * inv_aa_grid)) / owl::vec2f(self.cam_size);
271
+ const owl::vec3f direction = normalize(dir_00 + screen.u * dir_du + screen.v * dir_dv);
272
+ OUTPUT::accumulate(self, accumulated, ctx.cam_idx, pos, direction);
273
+ }
274
+ }
275
+ }
276
+ OUTPUT::store(self, ctx, accumulated, MOTION_SAMPLES * AA_GRID * AA_GRID);
277
+ }
278
+
279
+ // dynamic-motion-blur pass outputs: accumulate the pass's linear mean into a float buffer
280
+ // (transfer curve + quantization happen once, in the resolve kernel), so there is no
281
+ // srgb/linear raygen split. Each thread owns its pixel — no atomics.
282
+ struct RgbAccumulateOutput
283
+ {
284
+ using Accumulator = owl::vec3f;
285
+ inline __device__ static Accumulator zero() { return owl::vec3f(0.f); }
286
+ template <typename RAYGEN_DATA>
287
+ inline __device__ static void accumulate(const RAYGEN_DATA &self, Accumulator &acc, int camera, const owl::vec3f &pos, const owl::vec3f &direction)
288
+ {
289
+ acc = acc + trace_rgb_color_composed(self.world, camera, 0, pos, direction, 0.f, 1e30f);
290
+ }
291
+ template <typename RAYGEN_DATA>
292
+ inline __device__ static void store(const RAYGEN_DATA &self, const PixelLaunchContext &ctx, Accumulator acc, int samples)
293
+ {
294
+ const owl::vec3f mean = acc * (1.f / float(samples));
295
+ float *accumulation = self.accum_ptr + (size_t)ctx.fb_offset * 3;
296
+ accumulation[0] += mean.x;
297
+ accumulation[1] += mean.y;
298
+ accumulation[2] += mean.z;
299
+ }
300
+ };
301
+
302
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
303
+ struct DepthAccumulateOutput
304
+ {
305
+ using Accumulator = float;
306
+ inline __device__ static Accumulator zero() { return 0.f; }
307
+ template <typename RAYGEN_DATA>
308
+ inline __device__ static void accumulate(const RAYGEN_DATA &self, Accumulator &acc, int camera, const owl::vec3f &pos, const owl::vec3f &direction)
309
+ {
310
+ acc += trace_depth_distance_composed(self.world, camera, pos, direction, self.max_depth);
311
+ }
312
+ template <typename RAYGEN_DATA>
313
+ inline __device__ static void store(const RAYGEN_DATA &self, const PixelLaunchContext &ctx, Accumulator acc, int samples)
314
+ {
315
+ self.depth_accum_ptr[ctx.fb_offset] += acc * (1.f / float(samples));
316
+ }
317
+ };
318
+ #endif
319
+
320
+ template <typename OUTPUT, int AA_GRID, typename RAYGEN_DATA>
321
+ inline __device__ void rayGenAccumulateImpl()
322
+ {
323
+ const RAYGEN_DATA &self = owl::getProgramData<RAYGEN_DATA>();
324
+ const PixelLaunchContext ctx = pixel_launch_context(self);
325
+ if (!ctx.valid)
326
+ return;
327
+
328
+ const float shutter_t = *self.shutter_ptr;
329
+ const OptixCameraData &cam_open = self.cameras_open[ctx.cam_idx];
330
+ const OptixCameraData &cam_close = self.cameras_close[ctx.cam_idx];
331
+ const owl::vec3f pos = lerp_camera_vec(cam_open.pos, cam_close.pos, shutter_t);
332
+ const owl::vec3f dir_00 = lerp_camera_vec(cam_open.dir_00, cam_close.dir_00, shutter_t);
333
+ const owl::vec3f dir_du = lerp_camera_vec(cam_open.dir_du, cam_close.dir_du, shutter_t);
334
+ const owl::vec3f dir_dv = lerp_camera_vec(cam_open.dir_dv, cam_close.dir_dv, shutter_t);
335
+
336
+ typename OUTPUT::Accumulator accumulated = OUTPUT::zero();
337
+ const float inv_aa_grid = 1.f / float(AA_GRID);
338
+ for (int aa_y = 0; aa_y < AA_GRID; aa_y++) {
339
+ for (int aa_x = 0; aa_x < AA_GRID; aa_x++) {
340
+ const owl::vec2f screen = (owl::vec2f(ctx.local_x, ctx.local_y) + owl::vec2f((float(aa_x) + .5f) * inv_aa_grid, (float(aa_y) + .5f) * inv_aa_grid)) / owl::vec2f(self.cam_size);
341
+ const owl::vec3f direction = normalize(dir_00 + screen.u * dir_du + screen.v * dir_dv);
342
+ OUTPUT::accumulate(self, accumulated, ctx.cam_idx, pos, direction);
343
+ }
344
+ }
345
+ OUTPUT::store(self, ctx, accumulated, AA_GRID * AA_GRID);
346
+ }
347
+
348
+ OPTIX_RAYGEN_PROGRAM(accumRayGen)() { rayGenAccumulateImpl<RgbAccumulateOutput, 1, AccumulateRayGenData>(); }
349
+ OPTIX_RAYGEN_PROGRAM(accumRayGenAA2)() { rayGenAccumulateImpl<RgbAccumulateOutput, 2, AccumulateRayGenData>(); }
350
+ OPTIX_RAYGEN_PROGRAM(accumRayGenAA3)() { rayGenAccumulateImpl<RgbAccumulateOutput, 3, AccumulateRayGenData>(); }
351
+ OPTIX_RAYGEN_PROGRAM(accumRayGenAA4)() { rayGenAccumulateImpl<RgbAccumulateOutput, 4, AccumulateRayGenData>(); }
352
+
353
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
354
+ OPTIX_RAYGEN_PROGRAM(depthAccumRayGen)() { rayGenAccumulateImpl<DepthAccumulateOutput, 1, AccumulateDepthRayGenData>(); }
355
+ OPTIX_RAYGEN_PROGRAM(depthAccumRayGenAA2)() { rayGenAccumulateImpl<DepthAccumulateOutput, 2, AccumulateDepthRayGenData>(); }
356
+ OPTIX_RAYGEN_PROGRAM(depthAccumRayGenAA3)() { rayGenAccumulateImpl<DepthAccumulateOutput, 3, AccumulateDepthRayGenData>(); }
357
+ OPTIX_RAYGEN_PROGRAM(depthAccumRayGenAA4)() { rayGenAccumulateImpl<DepthAccumulateOutput, 4, AccumulateDepthRayGenData>(); }
358
+ #endif
359
+
360
+ #define RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(SRGB_NAME, LINEAR_NAME, MOTION_BLUR, MOTION_SAMPLES, AA_GRID, DATA) \
361
+ OPTIX_RAYGEN_PROGRAM(SRGB_NAME)() { rayGenImpl<RgbOutput<true>, MOTION_BLUR, MOTION_SAMPLES, AA_GRID, DATA>(); } \
362
+ OPTIX_RAYGEN_PROGRAM(LINEAR_NAME)() { rayGenImpl<RgbOutput<false>, MOTION_BLUR, MOTION_SAMPLES, AA_GRID, DATA>(); }
363
+
364
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGen, linearRayGen, false, 1, 1, RayGenData)
365
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur2, linearRayGenMotionBlur2, true, 2, 1, MotionBlurRayGenData)
366
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur4, linearRayGenMotionBlur4, true, 4, 1, MotionBlurRayGenData)
367
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur8, linearRayGenMotionBlur8, true, 8, 1, MotionBlurRayGenData)
368
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur16, linearRayGenMotionBlur16, true, 16, 1, MotionBlurRayGenData)
369
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur32, linearRayGenMotionBlur32, true, 32, 1, MotionBlurRayGenData)
370
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenAA2, linearRayGenAA2, false, 1, 2, RayGenData)
371
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenAA3, linearRayGenAA3, false, 1, 3, RayGenData)
372
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenAA4, linearRayGenAA4, false, 1, 4, RayGenData)
373
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur2AA2, linearRayGenMotionBlur2AA2, true, 2, 2, MotionBlurRayGenData)
374
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur2AA3, linearRayGenMotionBlur2AA3, true, 2, 3, MotionBlurRayGenData)
375
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur2AA4, linearRayGenMotionBlur2AA4, true, 2, 4, MotionBlurRayGenData)
376
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur4AA2, linearRayGenMotionBlur4AA2, true, 4, 2, MotionBlurRayGenData)
377
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur4AA3, linearRayGenMotionBlur4AA3, true, 4, 3, MotionBlurRayGenData)
378
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur4AA4, linearRayGenMotionBlur4AA4, true, 4, 4, MotionBlurRayGenData)
379
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur8AA2, linearRayGenMotionBlur8AA2, true, 8, 2, MotionBlurRayGenData)
380
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur8AA3, linearRayGenMotionBlur8AA3, true, 8, 3, MotionBlurRayGenData)
381
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur8AA4, linearRayGenMotionBlur8AA4, true, 8, 4, MotionBlurRayGenData)
382
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur16AA2, linearRayGenMotionBlur16AA2, true, 16, 2, MotionBlurRayGenData)
383
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur16AA3, linearRayGenMotionBlur16AA3, true, 16, 3, MotionBlurRayGenData)
384
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur16AA4, linearRayGenMotionBlur16AA4, true, 16, 4, MotionBlurRayGenData)
385
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur32AA2, linearRayGenMotionBlur32AA2, true, 32, 2, MotionBlurRayGenData)
386
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur32AA3, linearRayGenMotionBlur32AA3, true, 32, 3, MotionBlurRayGenData)
387
+ RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN(simpleRayGenMotionBlur32AA4, linearRayGenMotionBlur32AA4, true, 32, 4, MotionBlurRayGenData)
388
+
389
+ #undef RL_TOOLS_RENDERING_RAYTRACING_RGB_RAYGEN
390
+
391
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_DEPTH_PROGRAMS
392
+ #define RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(NAME, MOTION_BLUR, MOTION_SAMPLES, AA_GRID, DATA) \
393
+ OPTIX_RAYGEN_PROGRAM(NAME)() { rayGenImpl<DepthOutput, MOTION_BLUR, MOTION_SAMPLES, AA_GRID, DATA>(); }
394
+
395
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGen, false, 1, 1, DepthRayGenData)
396
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur2, true, 2, 1, MotionBlurDepthRayGenData)
397
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur4, true, 4, 1, MotionBlurDepthRayGenData)
398
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur8, true, 8, 1, MotionBlurDepthRayGenData)
399
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur16, true, 16, 1, MotionBlurDepthRayGenData)
400
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur32, true, 32, 1, MotionBlurDepthRayGenData)
401
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenAA2, false, 1, 2, DepthRayGenData)
402
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenAA3, false, 1, 3, DepthRayGenData)
403
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenAA4, false, 1, 4, DepthRayGenData)
404
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur2AA2, true, 2, 2, MotionBlurDepthRayGenData)
405
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur2AA3, true, 2, 3, MotionBlurDepthRayGenData)
406
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur2AA4, true, 2, 4, MotionBlurDepthRayGenData)
407
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur4AA2, true, 4, 2, MotionBlurDepthRayGenData)
408
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur4AA3, true, 4, 3, MotionBlurDepthRayGenData)
409
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur4AA4, true, 4, 4, MotionBlurDepthRayGenData)
410
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur8AA2, true, 8, 2, MotionBlurDepthRayGenData)
411
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur8AA3, true, 8, 3, MotionBlurDepthRayGenData)
412
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur8AA4, true, 8, 4, MotionBlurDepthRayGenData)
413
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur16AA2, true, 16, 2, MotionBlurDepthRayGenData)
414
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur16AA3, true, 16, 3, MotionBlurDepthRayGenData)
415
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur16AA4, true, 16, 4, MotionBlurDepthRayGenData)
416
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur32AA2, true, 32, 2, MotionBlurDepthRayGenData)
417
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur32AA3, true, 32, 3, MotionBlurDepthRayGenData)
418
+ RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN(depthRayGenMotionBlur32AA4, true, 32, 4, MotionBlurDepthRayGenData)
419
+
420
+ #undef RL_TOOLS_RENDERING_RAYTRACING_DEPTH_RAYGEN
421
+ #endif
422
+
423
+ // geometry lives in object space under the instance (top-level) group; the intrinsics apply
424
+ // the current instance transform (exact for identity instances)
425
+ inline __device__ owl::vec3f transform_point_to_world(const owl::vec3f& point){
426
+ const float3 world = optixTransformPointFromObjectToWorldSpace(make_float3(point.x, point.y, point.z));
427
+ return owl::vec3f(world.x, world.y, world.z);
428
+ }
429
+
430
+ inline __device__ owl::vec3f transform_normal_to_world(const owl::vec3f& normal){
431
+ const float3 world = optixTransformNormalFromObjectToWorldSpace(make_float3(normal.x, normal.y, normal.z));
432
+ return owl::vec3f(world.x, world.y, world.z);
433
+ }
434
+
435
+ template <bool LOAD_TEXTURES, bool NORMAL_SHADING, bool METALLIC_REFLECTIONS>
436
+ inline __device__ void triangleMeshBasicImpl()
437
+ {
438
+ owl::vec3f &prd = owl::getPRD<owl::vec3f>();
439
+
440
+ const TrianglesGeomData &self = owl::getProgramData<TrianglesGeomData>();
441
+
442
+ owl::vec3f base_color = self.color;
443
+ owl::vec3f normal_geometric(0.f, 0.f, 1.f);
444
+ owl::vec3f ray_dir(0.f);
445
+
446
+ if constexpr (LOAD_TEXTURES || NORMAL_SHADING || METALLIC_REFLECTIONS) {
447
+ const int prim_id = optixGetPrimitiveIndex();
448
+ const owl::vec3i index = self.index[prim_id];
449
+
450
+ if constexpr (NORMAL_SHADING || METALLIC_REFLECTIONS) {
451
+ const owl::vec3f vertex_a = transform_point_to_world(self.vertex[index.x]);
452
+ const owl::vec3f vertex_b = transform_point_to_world(self.vertex[index.y]);
453
+ const owl::vec3f vertex_c = transform_point_to_world(self.vertex[index.z]);
454
+ normal_geometric = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
455
+ ray_dir = optixGetWorldRayDirection();
456
+ }
457
+
458
+ if constexpr (LOAD_TEXTURES) {
459
+ if (self.has_texture && self.tex_coord) {
460
+ const owl::vec2f bary = optixGetTriangleBarycentrics();
461
+ const owl::vec2f tc
462
+ = (1.f - bary.x - bary.y) * self.tex_coord[index.x]
463
+ + bary.x * self.tex_coord[index.y]
464
+ + bary.y * self.tex_coord[index.z];
465
+ owl::vec4f tex_color = tex2D<float4>(self.texture, tc.x, tc.y);
466
+ base_color = owl::vec3f(tex_color.x, tex_color.y, tex_color.z) * self.color;
467
+ }
468
+ }
469
+ }
470
+
471
+ if(self.unlit != 0){
472
+ prd = base_color;
473
+ optixSetPayload_3(__float_as_uint(optixGetRayTmax()));
474
+ return;
475
+ }
476
+
477
+ owl::vec3f direct = base_color;
478
+ if constexpr (NORMAL_SHADING) {
479
+ direct = (.2f + .8f * fabs(dot(ray_dir, normal_geometric))) * base_color;
480
+ }
481
+
482
+ if constexpr (METALLIC_REFLECTIONS) {
483
+ unsigned int depth = optixGetPayload_2();
484
+ if (depth < 1 && self.metallic > 0.f) {
485
+ owl::vec3f hit_point = ray_dir * optixGetRayTmax();
486
+ hit_point.x += optixGetWorldRayOrigin().x;
487
+ hit_point.y += optixGetWorldRayOrigin().y;
488
+ hit_point.z += optixGetWorldRayOrigin().z;
489
+ owl::vec3f n = dot(ray_dir, normal_geometric) > 0.f ? -normal_geometric : normal_geometric;
490
+ owl::vec3f reflect_dir = ray_dir - 2.f * dot(ray_dir, n) * n;
491
+
492
+ const owl::vec3f reflected_color = trace_rgb_color_composed(self.world, camera_from_fb_tile(), depth + 1, hit_point, reflect_dir, 1e-3f, 1e20f);
493
+
494
+ float cos_theta = fabs(dot(ray_dir, n));
495
+ float fresnel = self.metallic * (0.04f + 0.96f * powf(1.f - cos_theta, 5.f));
496
+ prd = direct * ((1.f - fresnel) + fresnel * reflected_color);
497
+ } else {
498
+ prd = direct;
499
+ }
500
+ }
501
+ else {
502
+ prd = direct;
503
+ }
504
+ optixSetPayload_3(__float_as_uint(optixGetRayTmax()));
505
+ }
506
+
507
+ #define RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(NAME, LOAD_TEXTURES, NORMAL_SHADING, METALLIC_REFLECTIONS) \
508
+ OPTIX_CLOSEST_HIT_PROGRAM(NAME)() { triangleMeshBasicImpl<LOAD_TEXTURES, NORMAL_SHADING, METALLIC_REFLECTIONS>(); }
509
+
510
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicTTT, true, true, true)
511
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicTTF, true, true, false)
512
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicTFT, true, false, true)
513
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicTFF, true, false, false)
514
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicFTT, false, true, true)
515
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicFTF, false, true, false)
516
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicFFT, false, false, true)
517
+ RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT(TriangleMeshBasicFFF, false, false, false)
518
+
519
+ #undef RL_TOOLS_RENDERING_RAYTRACING_BASIC_CLOSEST_HIT
520
+
521
+ template <bool ENABLE_PUNCTUAL_LIGHT_SHADOWS>
522
+ inline __device__ void triangleMeshPBRImpl()
523
+ {
524
+ owl::vec3f &prd = owl::getPRD<owl::vec3f>();
525
+ const TrianglesGeomData &self = owl::getProgramData<TrianglesGeomData>();
526
+
527
+ const int prim_id = optixGetPrimitiveIndex();
528
+ const owl::vec3i index = self.index[prim_id];
529
+ const owl::vec3f vertex_a = transform_point_to_world(self.vertex[index.x]);
530
+ const owl::vec3f vertex_b = transform_point_to_world(self.vertex[index.y]);
531
+ const owl::vec3f vertex_c = transform_point_to_world(self.vertex[index.z]);
532
+ const owl::vec2f bary = optixGetTriangleBarycentrics();
533
+ const float w0 = 1.f - bary.x - bary.y;
534
+
535
+ const owl::vec3f edge1 = vertex_b - vertex_a;
536
+ const owl::vec3f edge2 = vertex_c - vertex_a;
537
+ const owl::vec3f normal_geometric = normalize(cross(edge1, edge2));
538
+
539
+ owl::vec3f N;
540
+ if (self.normal) {
541
+ N = normalize(transform_normal_to_world(w0 * self.normal[index.x] + bary.x * self.normal[index.y] + bary.y * self.normal[index.z]));
542
+ } else {
543
+ N = normal_geometric;
544
+ }
545
+
546
+ const owl::vec3f ray_dir = optixGetWorldRayDirection();
547
+ if (dot(ray_dir, N) > 0.f) N = -N;
548
+
549
+ const owl::vec2f tc = (self.tex_coord)
550
+ ? w0 * self.tex_coord[index.x] + bary.x * self.tex_coord[index.y] + bary.y * self.tex_coord[index.z]
551
+ : owl::vec2f(0.f);
552
+
553
+ owl::vec3f base_color = self.color;
554
+ float alpha = self.opacity;
555
+ if (self.has_texture && self.tex_coord) {
556
+ owl::vec4f tex_color = tex2D<float4>(self.texture, tc.x, tc.y);
557
+ base_color = owl::vec3f(tex_color.x, tex_color.y, tex_color.z) * self.color;
558
+ alpha *= tex_color.w;
559
+ }
560
+
561
+ owl::vec3f hit_point = ray_dir * optixGetRayTmax();
562
+ hit_point.x += optixGetWorldRayOrigin().x;
563
+ hit_point.y += optixGetWorldRayOrigin().y;
564
+ hit_point.z += optixGetWorldRayOrigin().z;
565
+
566
+ const int camera = camera_from_fb_tile();
567
+
568
+ owl::vec3f color = base_color;
569
+ unsigned int depth = optixGetPayload_2();
570
+ if(self.unlit == 0){
571
+ float metallic = self.metallic;
572
+ float roughness = self.roughness;
573
+ if (self.has_metallic_roughness_map && self.tex_coord) {
574
+ owl::vec4f mr_sample = tex2D<float4>(self.metallic_roughness_map, tc.x, tc.y);
575
+ roughness = mr_sample.y * self.roughness;
576
+ metallic = mr_sample.z * self.metallic;
577
+ }
578
+
579
+ if (self.has_normal_map && self.tex_coord) {
580
+ const owl::vec2f tc0 = self.tex_coord[index.x];
581
+ const owl::vec2f tc1 = self.tex_coord[index.y];
582
+ const owl::vec2f tc2 = self.tex_coord[index.z];
583
+ const owl::vec2f duv1 = tc1 - tc0;
584
+ const owl::vec2f duv2 = tc2 - tc0;
585
+ float det = duv1.x * duv2.y - duv2.x * duv1.y;
586
+ if (fabsf(det) > 1e-8f) {
587
+ float inv_det = 1.f / det;
588
+ owl::vec3f T = normalize(inv_det * (duv2.y * edge1 - duv1.y * edge2));
589
+ T = normalize(T - dot(T, N) * N);
590
+ owl::vec3f B = cross(N, T);
591
+ owl::vec4f nm_sample = tex2D<float4>(self.normal_map, w0 * tc0.x + bary.x * tc1.x + bary.y * tc2.x, w0 * tc0.y + bary.x * tc1.y + bary.y * tc2.y);
592
+ owl::vec3f n_tangent = owl::vec3f(nm_sample.x * 2.f - 1.f, -(nm_sample.y * 2.f - 1.f), nm_sample.z * 2.f - 1.f);
593
+ N = normalize(T * n_tangent.x + B * n_tangent.y + N * n_tangent.z);
594
+ }
595
+ }
596
+
597
+ roughness = fmaxf(roughness, 0.04f);
598
+ float roughness_alpha = roughness * roughness;
599
+ float alpha2 = roughness_alpha * roughness_alpha;
600
+ float k = (roughness + 1.f) * (roughness + 1.f) / 8.f;
601
+
602
+ owl::vec3f V = -ray_dir;
603
+ float NdotV = fmaxf(dot(N, V), 1e-4f);
604
+ owl::vec3f F0 = owl::vec3f(0.04f) * (1.f - metallic) + base_color * metallic;
605
+
606
+ owl::vec3f Lo(0.f);
607
+ for (int li = 0; li < self.num_scene_lights; li++) {
608
+ const rendering::raytracing::SceneLight& light = self.scene_lights[li];
609
+ owl::vec3f Lc(light.color[0], light.color[1], light.color[2]);
610
+ owl::vec3f L;
611
+ float attenuation = 1.f;
612
+ float light_distance = 1e20f;
613
+
614
+ if (light.type == 0) {
615
+ L = owl::vec3f(light.direction[0], light.direction[1], light.direction[2]);
616
+ } else {
617
+ owl::vec3f to_light = owl::vec3f(light.position[0], light.position[1], light.position[2]) - hit_point;
618
+ float dist = length(to_light);
619
+ light_distance = fmaxf(dist - 1e-3f, 0.f);
620
+ L = to_light * (1.f / fmaxf(dist, 1e-6f));
621
+ attenuation = 1.f / (light.attenuation_constant + light.attenuation_linear * dist + light.attenuation_quadratic * dist * dist);
622
+ if (light.type == 2) {
623
+ owl::vec3f spot_dir(light.direction[0], light.direction[1], light.direction[2]);
624
+ float cos_angle = dot(-L, spot_dir);
625
+ float denom = light.cos_inner_cone - light.cos_outer_cone;
626
+ float spot_t = (cos_angle - light.cos_outer_cone) / (fabsf(denom) > 1e-6f ? denom : 1e-6f);
627
+ attenuation *= fmaxf(fminf(spot_t, 1.f), 0.f);
628
+ }
629
+ }
630
+
631
+ float NdotL = fmaxf(dot(N, L), 0.f);
632
+ if (NdotL <= 0.f) continue;
633
+ if constexpr (ENABLE_PUNCTUAL_LIGHT_SHADOWS) {
634
+ if (light.type != 0 && trace_shadow_occluded_composed(self.world, camera, hit_point + N * 2e-3f, L, light_distance)) continue;
635
+ }
636
+
637
+ owl::vec3f H = normalize(V + L);
638
+ float NdotH = fmaxf(dot(N, H), 0.f);
639
+ float VdotH = fmaxf(dot(V, H), 0.f);
640
+
641
+ float denom_D = NdotH * NdotH * (alpha2 - 1.f) + 1.f;
642
+ float D = alpha2 / (3.14159265f * denom_D * denom_D);
643
+
644
+ float G1_V = NdotV / (NdotV * (1.f - k) + k);
645
+ float G1_L = NdotL / (NdotL * (1.f - k) + k);
646
+ float G = G1_V * G1_L;
647
+
648
+ float pow5 = powf(1.f - VdotH, 5.f);
649
+ owl::vec3f F = F0 + (owl::vec3f(1.f) - F0) * pow5;
650
+
651
+ owl::vec3f specular = D * G * F * (1.f / (4.f * NdotV * NdotL + 1e-4f));
652
+ owl::vec3f kd = (owl::vec3f(1.f) - F) * (1.f - metallic);
653
+ owl::vec3f diffuse = kd * base_color * (1.f / 3.14159265f);
654
+
655
+ Lo = Lo + (diffuse + specular) * Lc * (attenuation * NdotL);
656
+ }
657
+
658
+ float occlusion = 1.f;
659
+ if (self.has_occlusion_map && self.tex_coord) {
660
+ owl::vec4f ao_sample = tex2D<float4>(self.occlusion_map, tc.x, tc.y);
661
+ occlusion = ao_sample.x;
662
+ }
663
+
664
+ owl::vec3f emissive_color(0.f);
665
+ if (self.has_emissive_map && self.tex_coord) {
666
+ owl::vec4f em_sample = tex2D<float4>(self.emissive_map, tc.x, tc.y);
667
+ emissive_color = owl::vec3f(em_sample.x, em_sample.y, em_sample.z) * self.emissive;
668
+ } else {
669
+ emissive_color = self.emissive;
670
+ }
671
+
672
+ owl::vec3f ambient = self.ambient_color * base_color * ((1.f - metallic) * occlusion);
673
+ color = ambient + Lo + emissive_color;
674
+
675
+ if (depth < 1 && metallic > 0.1f) {
676
+ owl::vec3f reflect_dir = ray_dir - 2.f * dot(ray_dir, N) * N;
677
+
678
+ const owl::vec3f reflected_color = trace_rgb_color_composed(self.world, camera, depth + 1, hit_point, reflect_dir, 1e-3f, 1e20f);
679
+
680
+ float fresnel_refl = F0.x + (1.f - F0.x) * powf(1.f - fmaxf(dot(V, N), 0.f), 5.f);
681
+ float reflection_weight = fresnel_refl * (1.f - roughness);
682
+ color = color * (1.f - reflection_weight) + reflected_color * reflection_weight;
683
+ }
684
+
685
+ }
686
+
687
+ bool transparent = (self.alpha_mode == 2 && alpha < 0.99f) || (self.alpha_mode == 1 && alpha < self.alpha_cutoff);
688
+ if (transparent && depth < 1) {
689
+ const owl::vec3f behind_color = trace_rgb_color_composed(self.world, camera, depth + 1, hit_point, ray_dir, 1e-5f, 1e20f);
690
+
691
+ if (self.alpha_mode == 1) {
692
+ color = behind_color;
693
+ } else {
694
+ color = color * alpha + behind_color * (1.f - alpha);
695
+ }
696
+ }
697
+
698
+ prd = color;
699
+ optixSetPayload_3(__float_as_uint(optixGetRayTmax()));
700
+ }
701
+
702
+ OPTIX_CLOSEST_HIT_PROGRAM(TriangleMeshPBR)()
703
+ {
704
+ triangleMeshPBRImpl<false>();
705
+ }
706
+
707
+ OPTIX_CLOSEST_HIT_PROGRAM(TriangleMeshPBRShadows)()
708
+ {
709
+ triangleMeshPBRImpl<true>();
710
+ }
711
+
712
+ OPTIX_MISS_PROGRAM(miss)()
713
+ {
714
+ const owl::vec2i pixel_id = owl::getLaunchIndex();
715
+
716
+ const MissProgData &self = owl::getProgramData<MissProgData>();
717
+
718
+ owl::vec3f &prd = owl::getPRD<owl::vec3f>();
719
+ int checker_pattern = (pixel_id.x / 8) ^ (pixel_id.y/8);
720
+ prd = (checker_pattern&1) ? self.color_1 : self.color_0;
721
+ }
722
+
723
+ OPTIX_MISS_PROGRAM(missConstant)()
724
+ {
725
+ const MissProgData &self = owl::getProgramData<MissProgData>();
726
+ owl::vec3f &prd = owl::getPRD<owl::vec3f>();
727
+ prd = self.color_0;
728
+ }
729
+
730
+ // =====================================================================
731
+ // Collision probing programs (ray type 1)
732
+ // =====================================================================
733
+
734
+ OPTIX_RAYGEN_PROGRAM(collisionRayGen)()
735
+ {
736
+ const CollisionRayGenData &self
737
+ = owl::getProgramData<CollisionRayGenData>();
738
+ const owl::vec2i idx = owl::getLaunchIndex();
739
+ const int cam_idx = idx.x;
740
+ const int probe_idx = idx.y;
741
+
742
+ if (cam_idx >= self.num_cameras || probe_idx >= self.num_probes)
743
+ return;
744
+
745
+ const OptixCameraData &cam = self.cameras[cam_idx];
746
+
747
+ owl::vec3f dir;
748
+ if (probe_idx == 0) {
749
+ dir = normalize(cam.dir_00 + 0.5f * cam.dir_du + 0.5f * cam.dir_dv);
750
+ } else {
751
+ dir = self.probe_directions[probe_idx];
752
+ }
753
+
754
+ // Step B: raw optixTrace + CollisionResult PRD, no FIRST_HIT
755
+ CollisionResult result;
756
+ result.distance = self.max_dist;
757
+ result.hit = 0;
758
+
759
+ unsigned int u0, u1, u2;
760
+ u0 = __float_as_uint(result.distance);
761
+ u1 = result.hit;
762
+ u2 = 0xFFFFFFFFu;
763
+
764
+ optixTrace(
765
+ self.world,
766
+ (const float3&)cam.pos,
767
+ (const float3&)dir,
768
+ 1e-3f, // tmin
769
+ self.max_dist, // tmax
770
+ 0.0f, // rayTime
771
+ OptixVisibilityMask(255),
772
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
773
+ 1, NUM_RAY_TYPES, 1, // SBT offset, stride, miss (ray type 1)
774
+ u0, u1, u2);
775
+ const int overlay_count = optixLaunchParams.overlay_count;
776
+ for (int k = 0; k < overlay_count; k++) {
777
+ const uint32_t overlay = optixLaunchParams.attachments[cam_idx * overlay_count + k];
778
+ if (overlay == 0xFFFFFFFFu) continue;
779
+ optixTrace(
780
+ (OptixTraversableHandle)optixLaunchParams.overlays[overlay],
781
+ (const float3&)cam.pos,
782
+ (const float3&)dir,
783
+ 1e-3f,
784
+ __uint_as_float(u0),
785
+ 0.0f,
786
+ OptixVisibilityMask(255),
787
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
788
+ 1, NUM_RAY_TYPES, 1,
789
+ u0, u1, u2);
790
+ }
791
+
792
+ result.distance = __uint_as_float(u0);
793
+ result.hit = u1;
794
+ self.results[cam_idx * self.num_probes + probe_idx] = result;
795
+ }
796
+
797
+ OPTIX_CLOSEST_HIT_PROGRAM(collisionHit)()
798
+ {
799
+ optixSetPayload_0(__float_as_uint(optixGetRayTmax()));
800
+ optixSetPayload_1(1);
801
+ optixSetPayload_2(optixGetInstanceId()); // global instance id; consumed by segmentationRayGen, collision ignores it
802
+ }
803
+
804
+ OPTIX_MISS_PROGRAM(collisionMiss)()
805
+ {
806
+ // Payloads stay as initialized by caller: distance = max_dist, hit = 0, instance = sentinel
807
+ }
808
+
809
+ // world point → screen fraction through the linear camera model: solves
810
+ // dir_00 + screen_x·dir_du + screen_y·dir_dv = lambda·(point − pos) by Cramer's rule;
811
+ // returns false for a degenerate basis or a point at/behind the camera (lambda <= 0)
812
+ inline __device__ bool project_camera(const OptixCameraData &cam, const owl::vec3f &point, float &screen_x, float &screen_y)
813
+ {
814
+ const owl::vec3f direction = point - cam.pos;
815
+ const owl::vec3f negative_direction = -direction;
816
+ const owl::vec3f cross_dv_negative_direction = cross(cam.dir_dv, negative_direction);
817
+ const float det = dot(cam.dir_du, cross_dv_negative_direction);
818
+ if (det > -1e-12f && det < 1e-12f)
819
+ return false;
820
+ const float inv_det = 1.f / det;
821
+ const owl::vec3f b = -cam.dir_00;
822
+ screen_x = dot(b, cross_dv_negative_direction) * inv_det;
823
+ screen_y = dot(cam.dir_du, cross(b, negative_direction)) * inv_det;
824
+ const float lambda = dot(cam.dir_du, cross(cam.dir_dv, b)) * inv_det;
825
+ return lambda > 0.f;
826
+ }
827
+
828
+ inline __device__ owl::vec3f transform_point_rows(const float *m, const owl::vec3f &p)
829
+ {
830
+ return owl::vec3f(
831
+ m[0]*p.x + m[1]*p.y + m[2]*p.z + m[3],
832
+ m[4]*p.x + m[5]*p.y + m[6]*p.z + m[7],
833
+ m[8]*p.x + m[9]*p.y + m[10]*p.z + m[11]);
834
+ }
835
+
836
+ // any-hit visibility against the world plus one instant's overlays attached to the camera:
837
+ // the collision ray type with terminate-on-first-hit, like the punctual-light shadows
838
+ inline __device__ bool trace_flow_visibility_occluded(OptixTraversableHandle world, const unsigned long long *overlays, int camera, const owl::vec3f &pos, const owl::vec3f &direction, float max_dist)
839
+ {
840
+ if (trace_shadow_occluded(world, pos, direction, max_dist)) return true;
841
+ const int overlay_count = optixLaunchParams.overlay_count;
842
+ for (int k = 0; k < overlay_count; k++) {
843
+ const uint32_t overlay = optixLaunchParams.attachments[camera * overlay_count + k];
844
+ if (overlay == 0xFFFFFFFFu) continue;
845
+ if (trace_shadow_occluded((OptixTraversableHandle)overlays[overlay], pos, direction, max_dist)) return true;
846
+ }
847
+ return false;
848
+ }
849
+
850
+ // two-instant flow, one direction per launch (mirror of the generic render_flow_frame):
851
+ // single-sample from the source pixel centre, traced with the collision ray type (hit
852
+ // distance in payload 0, global instance id in payload 2) against the source instant; the hit
853
+ // point is carried to the target instant by its slot's delta, projected through the target
854
+ // camera, and tested for visibility from the target camera against the target instant with
855
+ // the relative margin FLOW_VISIBILITY_EPSILON (types.h). Status priority MISS, BEHIND,
856
+ // OUT_OF_FRAME, OCCLUDED, VALID; the vector is zero for MISS and BEHIND and the geometric
857
+ // flow otherwise. Compiled into every PTX variant (like the collision programs).
858
+ inline __device__ void trace_flow_pixel(const FlowRayGenData &self)
859
+ {
860
+ using FlowStatus = rendering::raytracing::FlowStatus;
861
+ const owl::vec2i pixel = owl::getLaunchIndex();
862
+ const int tile_col = pixel.x / self.cam_size.x;
863
+ const int tile_row = pixel.y / self.cam_size.y;
864
+ const int cam_idx = tile_row * self.grid_cols + tile_col;
865
+ if (cam_idx >= self.num_cameras)
866
+ return;
867
+ const int local_x = pixel.x - tile_col * self.cam_size.x;
868
+ const int local_y = pixel.y - tile_row * self.cam_size.y;
869
+ const int fb_offset = cam_idx * self.cam_size.x * self.cam_size.y + local_y * self.cam_size.x + local_x;
870
+ const unsigned long long *overlays_source = self.source_previous != 0 ? optixLaunchParams.overlays_previous : optixLaunchParams.overlays;
871
+ const unsigned long long *overlays_target = self.source_previous != 0 ? optixLaunchParams.overlays : optixLaunchParams.overlays_previous;
872
+
873
+ const OptixCameraData &cam = self.cameras_source[cam_idx];
874
+ const float screen_x = ((float)local_x + 0.5f) / (float)self.cam_size.x;
875
+ const float screen_y = ((float)local_y + 0.5f) / (float)self.cam_size.y;
876
+ const owl::vec3f direction = normalize(cam.dir_00 + screen_x * cam.dir_du + screen_y * cam.dir_dv);
877
+
878
+ unsigned int u0 = __float_as_uint(1e30f);
879
+ unsigned int u1 = 0;
880
+ unsigned int u2 = 0xFFFFFFFFu;
881
+ optixTrace(
882
+ self.world,
883
+ (const float3&)cam.pos,
884
+ (const float3&)direction,
885
+ 0.f,
886
+ 1e30f,
887
+ 0.0f,
888
+ OptixVisibilityMask(255),
889
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
890
+ 1, NUM_RAY_TYPES, 1, // collision ray type
891
+ u0, u1, u2);
892
+ const int overlay_count = optixLaunchParams.overlay_count;
893
+ for (int k = 0; k < overlay_count; k++) {
894
+ const uint32_t overlay = optixLaunchParams.attachments[cam_idx * overlay_count + k];
895
+ if (overlay == 0xFFFFFFFFu) continue;
896
+ optixTrace(
897
+ (OptixTraversableHandle)overlays_source[overlay],
898
+ (const float3&)cam.pos,
899
+ (const float3&)direction,
900
+ 0.f,
901
+ __uint_as_float(u0),
902
+ 0.0f,
903
+ OptixVisibilityMask(255),
904
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
905
+ 1, NUM_RAY_TYPES, 1,
906
+ u0, u1, u2);
907
+ }
908
+ float flow_u = 0.f, flow_v = 0.f;
909
+ unsigned int status = FlowStatus::MISS;
910
+ if (u1 != 0u) {
911
+ const float t = __uint_as_float(u0);
912
+ owl::vec3f point = owl::vec3f(cam.pos) + direction * t;
913
+ if (self.flow_deltas != nullptr && u2 >= self.source_first_overlay_instance) {
914
+ point = transform_point_rows(self.flow_deltas + (size_t)(u2 - self.source_first_overlay_instance) * 12, point);
915
+ }
916
+ const OptixCameraData &cam_target = self.cameras_target[cam_idx];
917
+ float target_x, target_y;
918
+ if (!project_camera(cam_target, point, target_x, target_y)) {
919
+ status = FlowStatus::BEHIND;
920
+ } else {
921
+ flow_u = target_x * (float)self.cam_size.x - ((float)local_x + 0.5f);
922
+ flow_v = target_y * (float)self.cam_size.y - ((float)local_y + 0.5f);
923
+ if (target_x < 0.f || target_x >= 1.f || target_y < 0.f || target_y >= 1.f) {
924
+ status = FlowStatus::OUT_OF_FRAME;
925
+ } else {
926
+ const owl::vec3f to_point = point - owl::vec3f(cam_target.pos);
927
+ const float length = sqrtf(dot(to_point, to_point));
928
+ const owl::vec3f visibility_direction = to_point * (1.f / length);
929
+ const bool occluded = trace_flow_visibility_occluded(self.world, overlays_target, cam_idx, owl::vec3f(cam_target.pos), visibility_direction, length * (1.f - 1e-4f)); // FLOW_VISIBILITY_EPSILON
930
+ status = occluded ? FlowStatus::OCCLUDED : FlowStatus::VALID;
931
+ }
932
+ }
933
+ }
934
+ self.flow_ptr[fb_offset * 2 + 0] = flow_u;
935
+ self.flow_ptr[fb_offset * 2 + 1] = flow_v;
936
+ self.status_ptr[fb_offset] = status;
937
+ }
938
+
939
+ OPTIX_RAYGEN_PROGRAM(flowRayGen)()
940
+ {
941
+ trace_flow_pixel(owl::getProgramData<FlowRayGenData>());
942
+ }
943
+
944
+ OPTIX_RAYGEN_PROGRAM(flowForwardRayGen)()
945
+ {
946
+ trace_flow_pixel(owl::getProgramData<FlowRayGenData>());
947
+ }
948
+
949
+ #if RL_TOOLS_RENDERING_RAYTRACING_ENABLE_NORMALS_PROGRAMS
950
+ // normals ray type (2): the hit program reports the hit distance in payload 0 (consumed by
951
+ // the overlay min-t composition) and the world-frame geometric normal, oriented against the
952
+ // ray, in payloads 1-3
953
+ OPTIX_CLOSEST_HIT_PROGRAM(normalsHit)()
954
+ {
955
+ const TrianglesGeomData &self = owl::getProgramData<TrianglesGeomData>();
956
+ const owl::vec3i index = self.index[optixGetPrimitiveIndex()];
957
+ const owl::vec3f vertex_a = transform_point_to_world(self.vertex[index.x]);
958
+ const owl::vec3f vertex_b = transform_point_to_world(self.vertex[index.y]);
959
+ const owl::vec3f vertex_c = transform_point_to_world(self.vertex[index.z]);
960
+ owl::vec3f normal = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
961
+ const owl::vec3f ray_dir = optixGetWorldRayDirection();
962
+ if (dot(ray_dir, normal) > 0.f) normal = -normal;
963
+ optixSetPayload_0(__float_as_uint(optixGetRayTmax()));
964
+ optixSetPayload_1(__float_as_uint(normal.x));
965
+ optixSetPayload_2(__float_as_uint(normal.y));
966
+ optixSetPayload_3(__float_as_uint(normal.z));
967
+ }
968
+
969
+ // single-sample by design: unit normals cannot be averaged, so anti-aliasing and motion
970
+ // blur do not apply (shutter-close camera, pixel-center ray); miss keeps the (0,0,0) sentinel
971
+ OPTIX_RAYGEN_PROGRAM(normalsRayGen)()
972
+ {
973
+ const NormalsRayGenData &self = owl::getProgramData<NormalsRayGenData>();
974
+ const owl::vec2i pixel = owl::getLaunchIndex();
975
+ const int tile_col = pixel.x / self.cam_size.x;
976
+ const int tile_row = pixel.y / self.cam_size.y;
977
+ const int cam_idx = tile_row * self.grid_cols + tile_col;
978
+ if (cam_idx >= self.num_cameras)
979
+ return;
980
+ const int local_x = pixel.x - tile_col * self.cam_size.x;
981
+ const int local_y = pixel.y - tile_row * self.cam_size.y;
982
+ const int fb_offset = cam_idx * self.cam_size.x * self.cam_size.y + local_y * self.cam_size.x + local_x;
983
+
984
+ const OptixCameraData &cam = self.cameras[cam_idx];
985
+ const float screen_x = ((float)local_x + 0.5f) / (float)self.cam_size.x;
986
+ const float screen_y = ((float)local_y + 0.5f) / (float)self.cam_size.y;
987
+ const owl::vec3f direction = normalize(cam.dir_00 + screen_x * cam.dir_du + screen_y * cam.dir_dv);
988
+
989
+ unsigned int u0 = __float_as_uint(1e30f);
990
+ unsigned int u1 = __float_as_uint(0.f);
991
+ unsigned int u2 = __float_as_uint(0.f);
992
+ unsigned int u3 = __float_as_uint(0.f);
993
+ optixTrace(
994
+ self.world,
995
+ (const float3&)cam.pos,
996
+ (const float3&)direction,
997
+ 0.f,
998
+ 1e30f,
999
+ 0.0f,
1000
+ OptixVisibilityMask(255),
1001
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
1002
+ 2, NUM_RAY_TYPES, 1, // normals ray type; no-op miss keeps the current payloads
1003
+ u0, u1, u2, u3);
1004
+ const int overlay_count = optixLaunchParams.overlay_count;
1005
+ for (int k = 0; k < overlay_count; k++) {
1006
+ const uint32_t overlay = optixLaunchParams.attachments[cam_idx * overlay_count + k];
1007
+ if (overlay == 0xFFFFFFFFu) continue;
1008
+ optixTrace(
1009
+ (OptixTraversableHandle)optixLaunchParams.overlays[overlay],
1010
+ (const float3&)cam.pos,
1011
+ (const float3&)direction,
1012
+ 0.f,
1013
+ __uint_as_float(u0),
1014
+ 0.0f,
1015
+ OptixVisibilityMask(255),
1016
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
1017
+ 2, NUM_RAY_TYPES, 1,
1018
+ u0, u1, u2, u3);
1019
+ }
1020
+ self.normals_ptr[fb_offset * 3 + 0] = __uint_as_float(u1);
1021
+ self.normals_ptr[fb_offset * 3 + 1] = __uint_as_float(u2);
1022
+ self.normals_ptr[fb_offset * 3 + 2] = __uint_as_float(u3);
1023
+ }
1024
+ #endif
1025
+
1026
+ #ifdef RL_TOOLS_RENDERING_RAYTRACING_ENABLE_SEGMENTATION_PROGRAMS
1027
+ // single-sample by design: instance labels cannot be averaged, so anti-aliasing and motion
1028
+ // blur do not apply (shutter-close camera, pixel-center ray); traces the collision ray type,
1029
+ // whose hit program reports the instance index in payload 2
1030
+ OPTIX_RAYGEN_PROGRAM(segmentationRayGen)()
1031
+ {
1032
+ const SegmentationRayGenData &self = owl::getProgramData<SegmentationRayGenData>();
1033
+ const owl::vec2i pixel = owl::getLaunchIndex();
1034
+ const int tile_col = pixel.x / self.cam_size.x;
1035
+ const int tile_row = pixel.y / self.cam_size.y;
1036
+ const int cam_idx = tile_row * self.grid_cols + tile_col;
1037
+ if (cam_idx >= self.num_cameras)
1038
+ return;
1039
+ const int local_x = pixel.x - tile_col * self.cam_size.x;
1040
+ const int local_y = pixel.y - tile_row * self.cam_size.y;
1041
+ const int fb_offset = cam_idx * self.cam_size.x * self.cam_size.y + local_y * self.cam_size.x + local_x;
1042
+
1043
+ const OptixCameraData &cam = self.cameras[cam_idx];
1044
+ const float screen_x = ((float)local_x + 0.5f) / (float)self.cam_size.x;
1045
+ const float screen_y = ((float)local_y + 0.5f) / (float)self.cam_size.y;
1046
+ const owl::vec3f direction = normalize(cam.dir_00 + screen_x * cam.dir_du + screen_y * cam.dir_dv);
1047
+
1048
+ unsigned int u0 = __float_as_uint(1e30f);
1049
+ unsigned int u1 = 0;
1050
+ unsigned int u2 = 0xFFFFFFFFu;
1051
+ optixTrace(
1052
+ self.world,
1053
+ (const float3&)cam.pos,
1054
+ (const float3&)direction,
1055
+ 0.f,
1056
+ 1e30f,
1057
+ 0.0f,
1058
+ OptixVisibilityMask(255),
1059
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
1060
+ 1, NUM_RAY_TYPES, 1, // collision ray type
1061
+ u0, u1, u2);
1062
+ const int overlay_count = optixLaunchParams.overlay_count;
1063
+ for (int k = 0; k < overlay_count; k++) {
1064
+ const uint32_t overlay = optixLaunchParams.attachments[cam_idx * overlay_count + k];
1065
+ if (overlay == 0xFFFFFFFFu) continue;
1066
+ optixTrace(
1067
+ (OptixTraversableHandle)optixLaunchParams.overlays[overlay],
1068
+ (const float3&)cam.pos,
1069
+ (const float3&)direction,
1070
+ 0.f,
1071
+ __uint_as_float(u0),
1072
+ 0.0f,
1073
+ OptixVisibilityMask(255),
1074
+ OPTIX_RAY_FLAG_DISABLE_ANYHIT,
1075
+ 1, NUM_RAY_TYPES, 1,
1076
+ u0, u1, u2);
1077
+ }
1078
+ self.seg_ptr[fb_offset] = (optixLaunchParams.semantic_segmentation && u2 != 0xFFFFFFFFu) ? optixLaunchParams.instance_classes[u2] : u2;
1079
+ }
1080
+ #endif
1081
+ }
1082
+ RL_TOOLS_NAMESPACE_WRAPPER_END
1083
+
1084
+ #endif