hyperray 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 (788) hide show
  1. hyperdrone/__init__.py +53 -0
  2. hyperdrone/_cuda/__init__.py +76 -0
  3. hyperdrone/_dlpack.py +30 -0
  4. hyperdrone/_jit/__init__.py +131 -0
  5. hyperdrone/_jit/_build.py +113 -0
  6. hyperdrone/_jit/_lock.py +23 -0
  7. hyperdrone/_jit/_patches.py +99 -0
  8. hyperdrone/_jit/_toolchain.py +17 -0
  9. hyperdrone/_jit/_workspace.py +94 -0
  10. hyperdrone/_native/cmake/hyperdrone_jit.cmake +65 -0
  11. hyperdrone/_native/common/bindings.h +39 -0
  12. hyperdrone/_native/common/cuda_staging.h +80 -0
  13. hyperdrone/_native/common/jit_host.h +69 -0
  14. hyperdrone/_native/common/models.h +24 -0
  15. hyperdrone/_native/common/verbosity.h +52 -0
  16. hyperdrone/_native/dynamics/CMakeLists.txt +63 -0
  17. hyperdrone/_native/dynamics/host.cpp +188 -0
  18. hyperdrone/_native/dynamics/iface.h +71 -0
  19. hyperdrone/_native/dynamics/impl.cpp +638 -0
  20. hyperdrone/_native/env/CMakeLists.txt +98 -0
  21. hyperdrone/_native/env/environment.cpp +190 -0
  22. hyperdrone/_native/env/environment.h +282 -0
  23. hyperdrone/_native/env/impl.cpp +779 -0
  24. hyperdrone/_native/env/rotorcraft_bindings.cpp +53 -0
  25. hyperdrone/_native/render/CMakeLists.txt +96 -0
  26. hyperdrone/_native/render/renderer.cpp +973 -0
  27. hyperdrone/_native/render/rig_bindings.h +152 -0
  28. hyperdrone/_native/render/scene_bindings.cpp +515 -0
  29. hyperdrone/_outputs.py +32 -0
  30. hyperdrone/_parameters.py +36 -0
  31. hyperdrone/_vendor/rl-tools/CMakeLists.txt +207 -0
  32. hyperdrone/_vendor/rl-tools/LICENSE +21 -0
  33. hyperdrone/_vendor/rl-tools/cmake/autodetect/all.cmake +34 -0
  34. hyperdrone/_vendor/rl-tools/cmake/autodetect/git-diff.cmake +100 -0
  35. hyperdrone/_vendor/rl-tools/cmake/autodetect/git-hash.cmake +24 -0
  36. hyperdrone/_vendor/rl-tools/cmake/autodetect/summary.cmake +65 -0
  37. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier0-compiler.cmake +18 -0
  38. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier1-blas.cmake +51 -0
  39. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier2-json-hdf5-zlib.cmake +82 -0
  40. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier3-tensorboard.cmake +25 -0
  41. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier4-cuda.cmake +42 -0
  42. hyperdrone/_vendor/rl-tools/cmake/autodetect/tier5-cli11.cmake +24 -0
  43. hyperdrone/_vendor/rl-tools/cmake/dependencies/assimp.cmake +19 -0
  44. hyperdrone/_vendor/rl-tools/cmake/legacy_flags.cmake +33 -0
  45. hyperdrone/_vendor/rl-tools/cmake/optional/assimp.cmake +30 -0
  46. hyperdrone/_vendor/rl-tools/cmake/optional/googletest.cmake +20 -0
  47. hyperdrone/_vendor/rl-tools/cmake/optional/metal.cmake +25 -0
  48. hyperdrone/_vendor/rl-tools/cmake/optional/mujoco.cmake +89 -0
  49. hyperdrone/_vendor/rl-tools/cmake/optional/optix.cmake +25 -0
  50. hyperdrone/_vendor/rl-tools/cmake/optional/raytracing.cmake +105 -0
  51. hyperdrone/_vendor/rl-tools/cmake/optional/raytracing_generic.cmake +2 -0
  52. hyperdrone/_vendor/rl-tools/cmake/optional/vulkan.cmake +4 -0
  53. hyperdrone/_vendor/rl-tools/cmake/optional/webgpu.cmake +24 -0
  54. hyperdrone/_vendor/rl-tools/cmake/scripts/embed_text.cmake +7 -0
  55. hyperdrone/_vendor/rl-tools/cmake/scripts/generate-git-snapshot.cmake +138 -0
  56. hyperdrone/_vendor/rl-tools/include/conta/conta.h +1480 -0
  57. hyperdrone/_vendor/rl-tools/include/metra/metra.h +381 -0
  58. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/matrix.h +143 -0
  59. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_arm.h +33 -0
  60. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu.h +314 -0
  61. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_accelerate.h +37 -0
  62. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_blas.h +67 -0
  63. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_mkl.h +38 -0
  64. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_openblas.h +34 -0
  65. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cuda.h +289 -0
  66. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_dummy.h +20 -0
  67. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_esp32.h +29 -0
  68. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_generic.h +944 -0
  69. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_wasm32.h +13 -0
  70. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/persist_code.h +136 -0
  71. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_arm.h +1 -0
  72. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu.h +94 -0
  73. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_accelerate.h +25 -0
  74. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_blas.h +115 -0
  75. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_mkl.h +25 -0
  76. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_openblas.h +25 -0
  77. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cuda.h +713 -0
  78. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_generic.h +1356 -0
  79. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/persist_code.h +130 -0
  80. hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/tensor.h +490 -0
  81. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/arm.h +91 -0
  82. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu.h +210 -0
  83. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_accelerate.h +23 -0
  84. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_blas.h +21 -0
  85. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_emscripten.h +20 -0
  86. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_mkl.h +45 -0
  87. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_openblas.h +56 -0
  88. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_tensorboard.h +34 -0
  89. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cuda.h +464 -0
  90. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cuda_streams.h +23 -0
  91. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/devices.h +105 -0
  92. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/dummy.h +55 -0
  93. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/esp32.h +85 -0
  94. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/generic.h +0 -0
  95. hyperdrone/_vendor/rl-tools/include/rl_tools/devices/wasm32.h +59 -0
  96. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/model.h +218 -0
  97. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/operations_generic.h +769 -0
  98. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/persist.h +278 -0
  99. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter.h +100 -0
  100. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter_persist.h +52 -0
  101. hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/tensor_operations_generic.h +55 -0
  102. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_backend.h +117 -0
  103. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_interface.h +36 -0
  104. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/l2f.h +98 -0
  105. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_dyn.h +18 -0
  106. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_generic.h +268 -0
  107. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_backend.h +31 -0
  108. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_interface.h +12 -0
  109. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_backend.h +98 -0
  110. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_interface.h +50 -0
  111. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/executor.h +133 -0
  112. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/helper.h +109 -0
  113. hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/operations_generic.h +219 -0
  114. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arduino.h +117 -0
  115. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arm.h +56 -0
  116. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu.h +57 -0
  117. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu_tensorboard.h +151 -0
  118. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cuda.h +65 -0
  119. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_dummy.h +45 -0
  120. hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_wasm32.h +56 -0
  121. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_arm.h +98 -0
  122. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cpu.h +138 -0
  123. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cuda.h +380 -0
  124. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_dummy.h +93 -0
  125. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_esp32.h +92 -0
  126. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_generic.h +295 -0
  127. hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_wasm32.h +230 -0
  128. hyperdrone/_vendor/rl-tools/include/rl_tools/mode/mode.h +98 -0
  129. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/activation_functions.h +113 -0
  130. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/capability.h +61 -0
  131. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/persist_code.h +31 -0
  132. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/group.h +99 -0
  133. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/layer.h +122 -0
  134. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_cuda.h +64 -0
  135. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_generic.h +186 -0
  136. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/persist.h +33 -0
  137. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/layer.h +300 -0
  138. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cpu_mkl.h +590 -0
  139. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cuda.h +809 -0
  140. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_generic.h +1219 -0
  141. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist.h +99 -0
  142. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist_code.h +170 -0
  143. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/layer.h +145 -0
  144. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/dsp.h +63 -0
  145. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/opt.h +173 -0
  146. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu.h +13 -0
  147. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_accelerate.h +66 -0
  148. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_blas.h +282 -0
  149. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_mkl.h +66 -0
  150. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_openblas.h +65 -0
  151. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cuda.h +519 -0
  152. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_dummy.h +8 -0
  153. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/dsp.h +58 -0
  154. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/opt.h +167 -0
  155. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_generic.h +429 -0
  156. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist.h +62 -0
  157. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_code.h +178 -0
  158. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_common.h +59 -0
  159. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/layer.h +188 -0
  160. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_cuda.h +356 -0
  161. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_generic.h +536 -0
  162. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/persist.h +32 -0
  163. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/layer.h +119 -0
  164. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/operations_generic.h +223 -0
  165. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/persist.h +46 -0
  166. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/layer.h +121 -0
  167. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/operations_generic.h +154 -0
  168. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist.h +44 -0
  169. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist_code.h +106 -0
  170. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_cuda.h +602 -0
  171. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_generic.h +251 -0
  172. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/layer.h +206 -0
  173. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/operations_generic.h +889 -0
  174. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist.h +75 -0
  175. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist_code.h +199 -0
  176. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/layers.h +3 -0
  177. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/layer.h +143 -0
  178. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_cuda.h +80 -0
  179. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_generic.h +216 -0
  180. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/persist.h +39 -0
  181. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu.h +1 -0
  182. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_accelerate.h +1 -0
  183. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_blas.h +1 -0
  184. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_mkl.h +3 -0
  185. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_openblas.h +1 -0
  186. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cuda.h +9 -0
  187. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_dummy.h +1 -0
  188. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_generic.h +3 -0
  189. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/layer.h +223 -0
  190. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_cuda.h +138 -0
  191. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_generic.h +446 -0
  192. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/persist.h +70 -0
  193. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/layer.h +154 -0
  194. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_cuda.h +119 -0
  195. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_generic.h +502 -0
  196. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist.h +50 -0
  197. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist_code.h +173 -0
  198. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/layer.h +116 -0
  199. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_cuda.h +156 -0
  200. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_generic.h +295 -0
  201. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist.h +83 -0
  202. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist_code.h +163 -0
  203. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/layer.h +123 -0
  204. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/operations_generic.h +272 -0
  205. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist.h +17 -0
  206. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist_code.h +164 -0
  207. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/layer.h +122 -0
  208. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_cuda.h +55 -0
  209. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_generic.h +160 -0
  210. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist.h +47 -0
  211. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist_code.h +106 -0
  212. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/layer.h +132 -0
  213. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_cuda.h +141 -0
  214. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_generic.h +230 -0
  215. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/categorical_cross_entropy/operations_generic.h +102 -0
  216. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_cuda.h +97 -0
  217. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_generic.h +101 -0
  218. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/operations_generic.h +2 -0
  219. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/nn.h +14 -0
  220. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu.h +1 -0
  221. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_accelerate.h +1 -0
  222. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_blas.h +1 -0
  223. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mkl.h +1 -0
  224. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mux.h +16 -0
  225. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_openblas.h +1 -0
  226. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cuda.h +2 -0
  227. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_dummy.h +1 -0
  228. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_generic.h +15 -0
  229. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/adam.h +121 -0
  230. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_cuda.h +98 -0
  231. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_generic.h +150 -0
  232. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist.h +39 -0
  233. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist_code.h +80 -0
  234. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_cuda.h +85 -0
  235. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_generic.h +109 -0
  236. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/persist.h +25 -0
  237. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/instance/operations_generic.h +107 -0
  238. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/lamb.h +40 -0
  239. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/operations_generic.h +68 -0
  240. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/optimizers.h +3 -0
  241. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_cuda.h +85 -0
  242. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_generic.h +140 -0
  243. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist.h +37 -0
  244. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist_code.h +72 -0
  245. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_cuda.h +49 -0
  246. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_generic.h +50 -0
  247. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/sgd.h +92 -0
  248. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/update.h +54 -0
  249. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_cuda.h +0 -0
  250. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_generic.h +98 -0
  251. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/parameters.h +79 -0
  252. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist.h +34 -0
  253. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist_code.h +136 -0
  254. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist.h +2 -0
  255. hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist_code.h +27 -0
  256. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/behaviors/skip_parameter_gradients.h +65 -0
  257. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/README.md +107 -0
  258. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/model.h +19 -0
  259. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/persist_code.h +77 -0
  260. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/network.h +174 -0
  261. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_cuda.h +10 -0
  262. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_dummy.h +8 -0
  263. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_generic.h +407 -0
  264. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist.h +56 -0
  265. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist_code.h +137 -0
  266. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/network.h +55 -0
  267. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/operations_generic.h +86 -0
  268. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist.h +43 -0
  269. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist_code.h +142 -0
  270. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/models.h +3 -0
  271. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/model.h +148 -0
  272. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/operations_generic.h +288 -0
  273. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist.h +25 -0
  274. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist_code.h +71 -0
  275. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cpu.h +0 -0
  276. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cuda.h +1 -0
  277. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_dummy.h +1 -0
  278. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_generic.h +4 -0
  279. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/model.h +290 -0
  280. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_cuda.h +174 -0
  281. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_generic.h +623 -0
  282. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist.h +80 -0
  283. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist_code.h +200 -0
  284. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist.h +1 -0
  285. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist_code.h +1 -0
  286. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/model.h +43 -0
  287. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/operations_generic.h +73 -0
  288. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/resnet/resnet.h +97 -0
  289. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/model.h +270 -0
  290. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/operations_generic.h +625 -0
  291. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist.h +99 -0
  292. hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist_code.h +115 -0
  293. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/bf16.h +28 -0
  294. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/categories.h +22 -0
  295. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/persist_code.h +54 -0
  296. hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/policy.h +48 -0
  297. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_1.h +18 -0
  298. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_2.h +14 -0
  299. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_3.h +14 -0
  300. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm.h +19 -0
  301. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_1.h +17 -0
  302. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_2.h +12 -0
  303. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_3.h +15 -0
  304. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu.h +19 -0
  305. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_1.h +16 -0
  306. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_2.h +12 -0
  307. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_3.h +15 -0
  308. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate.h +19 -0
  309. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_1.h +17 -0
  310. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_2.h +12 -0
  311. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_3.h +15 -0
  312. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl.h +18 -0
  313. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mux.h +158 -0
  314. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_1.h +16 -0
  315. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_2.h +12 -0
  316. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_3.h +15 -0
  317. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas.h +18 -0
  318. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_1.h +16 -0
  319. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_2.h +12 -0
  320. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_3.h +15 -0
  321. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard.h +19 -0
  322. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_1.h +18 -0
  323. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_2.h +12 -0
  324. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_3.h +12 -0
  325. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda.h +19 -0
  326. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_1.h +15 -0
  327. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_2.h +12 -0
  328. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_3.h +12 -0
  329. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy.h +19 -0
  330. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_1.h +16 -0
  331. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_2.h +12 -0
  332. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_3.h +13 -0
  333. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32.h +19 -0
  334. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_1.h +15 -0
  335. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_2.h +12 -0
  336. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_3.h +12 -0
  337. hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32.h +19 -0
  338. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/hdf5.h +54 -0
  339. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/operations_cpu.h +419 -0
  340. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/io.h +55 -0
  341. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_cpu.h +58 -0
  342. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_generic.h +620 -0
  343. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_posix.h +63 -0
  344. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/tar.h +74 -0
  345. hyperdrone/_vendor/rl-tools/include/rl_tools/persist/code.h +38 -0
  346. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_arm.h +39 -0
  347. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cpu.h +81 -0
  348. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cuda.h +172 -0
  349. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_dummy.h +72 -0
  350. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_esp32.h +45 -0
  351. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic.h +133 -0
  352. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic_array.h +73 -0
  353. hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_wasm32.h +57 -0
  354. hyperdrone/_vendor/rl-tools/include/rl_tools/random/persist.h +77 -0
  355. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/camera.h +105 -0
  356. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/cache.h +26 -0
  357. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/free_space.h +60 -0
  358. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/operations_cpu.h +411 -0
  359. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/glb.h +25 -0
  360. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/operations_cpu.h +1288 -0
  361. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/operations_cpu.h +136 -0
  362. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/catalog.h +232 -0
  363. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/conversion.h +33 -0
  364. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/operations_cpu.h +123 -0
  365. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/procthor.h +39 -0
  366. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_cpu.h +717 -0
  367. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_generic.h +1283 -0
  368. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/context.h +193 -0
  369. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/device_source.h +17 -0
  370. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/operations_cpu.h +1123 -0
  371. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device.h +207 -0
  372. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device_impl.h +1043 -0
  373. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/operations_cuda.h +1747 -0
  374. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/overlay_accel.h +64 -0
  375. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/specialization.h +37 -0
  376. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/context.h +251 -0
  377. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/device_source.h +48 -0
  378. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/operations_cpu.h +2067 -0
  379. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/bvh_sah.h +182 -0
  380. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/context.h +280 -0
  381. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/device_source.h +17 -0
  382. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/operations_cpu.h +1405 -0
  383. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_common.h +948 -0
  384. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_mux.h +32 -0
  385. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_post.h +96 -0
  386. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/renderer.h +484 -0
  387. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/save_cpu.h +314 -0
  388. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/scene.h +44 -0
  389. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/transforms_generic.h +25 -0
  390. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/types.h +45 -0
  391. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_cpu.h +119 -0
  392. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_generic.h +121 -0
  393. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/rig.h +70 -0
  394. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/scene.h +132 -0
  395. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/segmentation_cpu.h +145 -0
  396. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/transforms.h +204 -0
  397. hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/types.h +76 -0
  398. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/algorithms.h +6 -0
  399. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu.h +1 -0
  400. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu_mkl.h +1 -0
  401. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_generic.h +1 -0
  402. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/config.h +243 -0
  403. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_cuda.h +9 -0
  404. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_generic.h +205 -0
  405. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/persist.h +109 -0
  406. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/state.h +51 -0
  407. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/mixed_imitation.h +63 -0
  408. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_cuda.h +190 -0
  409. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic.h +332 -0
  410. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic_mixed_imitation.h +81 -0
  411. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/persist.h +28 -0
  412. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/ppo.h +105 -0
  413. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_gru.h +84 -0
  414. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_mlp.h +61 -0
  415. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/config.h +106 -0
  416. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/operations_generic.h +193 -0
  417. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/state.h +52 -0
  418. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu.h +9 -0
  419. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_accelerate.h +2 -0
  420. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mkl.h +2 -0
  421. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mux.h +9 -0
  422. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cuda.h +131 -0
  423. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_generic.h +580 -0
  424. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/sac.h +151 -0
  425. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_gru.h +72 -0
  426. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_mlp.h +54 -0
  427. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/config.h +107 -0
  428. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/operations_generic.h +174 -0
  429. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/state.h +46 -0
  430. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu.h +9 -0
  431. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_accelerate.h +2 -0
  432. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mkl.h +2 -0
  433. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mux.h +9 -0
  434. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cuda.h +117 -0
  435. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_generic.h +359 -0
  436. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/td3.h +141 -0
  437. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/components.h +4 -0
  438. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/off_policy_runner.h +225 -0
  439. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu.h +95 -0
  440. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_accelerate.h +21 -0
  441. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_mkl.h +21 -0
  442. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cuda.h +237 -0
  443. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic.h +498 -0
  444. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic_per_env.h +112 -0
  445. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/collection.h +57 -0
  446. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/on_policy_runner.h +122 -0
  447. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu.h +2 -0
  448. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_accelerate.h +8 -0
  449. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mkl.h +8 -0
  450. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mux.h +12 -0
  451. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cuda.h +183 -0
  452. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic.h +366 -0
  453. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic_common.h +74 -0
  454. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/persist.h +47 -0
  455. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu.h +2 -0
  456. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_accelerate.h +1 -0
  457. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_mkl.h +1 -0
  458. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_generic.h +2 -0
  459. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_cpu.h +9 -0
  460. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_generic.h +123 -0
  461. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/persist.h +57 -0
  462. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/replay_buffer.h +93 -0
  463. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/operations_generic.h +76 -0
  464. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/persist.h +31 -0
  465. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/running_normalizer.h +33 -0
  466. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/operations_generic.h +58 -0
  467. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/operations_generic.h +28 -0
  468. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/wrapper.h +26 -0
  469. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/wrappers.h +29 -0
  470. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/acrobot.h +88 -0
  471. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_cpu.h +152 -0
  472. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_generic.h +202 -0
  473. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/environment.h +40 -0
  474. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_cuda.h +204 -0
  475. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic.h +106 -0
  476. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic_common.h +26 -0
  477. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/persist.h +33 -0
  478. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/car.h +119 -0
  479. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_cpu.h +110 -0
  480. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_generic.h +206 -0
  481. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_json.h +59 -0
  482. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/track.h +23 -0
  483. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/ui.h +189 -0
  484. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/environments.h +28 -0
  485. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/environment.h +87 -0
  486. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_cpu.h +212 -0
  487. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_generic.h +215 -0
  488. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/observation.h +75 -0
  489. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cpu.h +1063 -0
  490. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cuda.h +564 -0
  491. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/pose.h +253 -0
  492. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/presets.h +154 -0
  493. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/operations_cpu.h +26 -0
  494. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/operations_generic.h +91 -0
  495. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/raptor.h +71 -0
  496. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_cpu.h +190 -0
  497. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_generic.h +32 -0
  498. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/rig.h +25 -0
  499. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/capture_cpu.h +86 -0
  500. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/capture_cuda.h +69 -0
  501. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/capture_optix.h +163 -0
  502. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cpu.h +223 -0
  503. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cpu_spectator.h +194 -0
  504. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cuda.h +1 -0
  505. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cuda_spectator.h +109 -0
  506. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/spectator.h +82 -0
  507. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/spy.h +107 -0
  508. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/ui.h +30 -0
  509. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/moving_gate.h +103 -0
  510. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cpu.h +279 -0
  511. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cuda.h +242 -0
  512. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cpu.h +322 -0
  513. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cuda.h +312 -0
  514. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_generic_position_hold.h +128 -0
  515. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/position_hold.h +22 -0
  516. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/target_frame.h +92 -0
  517. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/baseline.h +46 -0
  518. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/calibration.h +62 -0
  519. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/metrics.h +101 -0
  520. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/operations_cpu.h +374 -0
  521. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/visual_inertial_localization.h +126 -0
  522. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/world.h +333 -0
  523. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/inertial_velocity.h +27 -0
  524. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/metrics.h +266 -0
  525. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/multirotor.h +1138 -0
  526. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_cpu.h +2252 -0
  527. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/05_state_is_nan.h +148 -0
  528. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/10_sample_initial_parameters.h +228 -0
  529. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/20_initial_state.h +208 -0
  530. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/30_sample_initial_state.h +300 -0
  531. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/35_get_desired_state.h +63 -0
  532. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/40_observe.h +637 -0
  533. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/50_state_algebra.h +57 -0
  534. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/60_dynamics.h +134 -0
  535. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/70_post_integration.h +368 -0
  536. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/80_abs_diff.h +312 -0
  537. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic.h +367 -0
  538. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic_inertial_velocity.h +44 -0
  539. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_helper_generic.h +43 -0
  540. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic.h +70 -0
  541. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic_forward.h +24 -0
  542. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/default.h +209 -0
  543. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/arpl.h +112 -0
  544. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie.h +127 -0
  545. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie_openmv.h +119 -0
  546. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/flightmare.h +111 -0
  547. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/fs.h +113 -0
  548. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/mrs.h +110 -0
  549. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft.h +117 -0
  550. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft_rigid.h +118 -0
  551. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500.h +88 -0
  552. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_real.h +88 -0
  553. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_sim.h +114 -0
  554. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/init/default.h +56 -0
  555. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/registry.h +96 -0
  556. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/default.h +64 -0
  557. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/reward_functions.h +1 -0
  558. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/operations_generic.h +202 -0
  559. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/squared.h +52 -0
  560. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/termination/default.h +33 -0
  561. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/lissajous.h +72 -0
  562. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/trajectory.h +78 -0
  563. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist.h +21 -0
  564. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist_code.h +53 -0
  565. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/quaternion_helper.h +103 -0
  566. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/ui.h +180 -0
  567. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/environment.h +69 -0
  568. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_cpu.h +46 -0
  569. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_generic.h +78 -0
  570. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/README.MD +5 -0
  571. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ant.h +77 -0
  572. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/model.h +415 -0
  573. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/operations_cpu.h +162 -0
  574. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/persist.h +86 -0
  575. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ui.h +141 -0
  576. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/mujoco.h +1 -0
  577. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/bottleneck.h +113 -0
  578. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_cpu.h +289 -0
  579. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_generic.h +495 -0
  580. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/environments.h +16 -0
  581. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/observation.h +37 -0
  582. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_cpu.h +2 -0
  583. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_generic.h +33 -0
  584. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_cpu.h +146 -0
  585. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_generic.h +262 -0
  586. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/pendulum.h +197 -0
  587. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui.h +97 -0
  588. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui_xeus.h +124 -0
  589. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_cpu.h +426 -0
  590. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_generic.h +424 -0
  591. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/reacher.h +137 -0
  592. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/loop.h +15 -0
  593. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/config.h +28 -0
  594. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/operations_cpu.h +233 -0
  595. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/persist.h +30 -0
  596. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/state.h +21 -0
  597. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/config.h +25 -0
  598. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/operations_generic.h +47 -0
  599. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/persist.h +20 -0
  600. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/state.h +17 -0
  601. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/config.h +47 -0
  602. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/operations_generic.h +106 -0
  603. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/persist.h +40 -0
  604. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/state.h +36 -0
  605. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/config.h +22 -0
  606. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/operations_cpu.h +44 -0
  607. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/persist.h +20 -0
  608. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/state.h +26 -0
  609. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/config.h +37 -0
  610. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/operations_cpu.h +113 -0
  611. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/persist.h +20 -0
  612. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/state.h +24 -0
  613. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/config.h +43 -0
  614. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/operations_cpu.h +190 -0
  615. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/persist.h +30 -0
  616. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/state.h +37 -0
  617. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/steps.h +4 -0
  618. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/config.h +27 -0
  619. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/operations_cpu.h +52 -0
  620. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/persist.h +20 -0
  621. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/state.h +25 -0
  622. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/operations_generic.h +3 -0
  623. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/rl.h +5 -0
  624. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/evaluation.h +106 -0
  625. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_cpu.h +48 -0
  626. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_generic.h +275 -0
  627. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation.h +269 -0
  628. hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation_analysis.h +85 -0
  629. hyperdrone/_vendor/rl-tools/include/rl_tools/rl_tools.h +80 -0
  630. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/client.h +50 -0
  631. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_boost.h +92 -0
  632. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_cpu.h +174 -0
  633. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_websocket.h +208 -0
  634. hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/server.h +448 -0
  635. hyperdrone/_vendor/rl-tools/include/rl_tools/universe.h +4 -0
  636. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/declarations_cpu.h +13 -0
  637. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/declarations_cpu_emscripten.h +15 -0
  638. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_arm.h +29 -0
  639. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cpu.h +24 -0
  640. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cpu_emscripten.h +28 -0
  641. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cuda.h +33 -0
  642. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_dummy.h +18 -0
  643. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_esp32.h +20 -0
  644. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_generic.h +19 -0
  645. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_wasm32.h +18 -0
  646. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_cpu.h +16 -0
  647. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_generic.h +14 -0
  648. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/extrack.h +129 -0
  649. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/operations_cpu.h +588 -0
  650. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/integrators.h +103 -0
  651. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/memcpy.h +16 -0
  652. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/operations_generic.h +48 -0
  653. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/tuple.h +147 -0
  654. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/typing.h +122 -0
  655. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/vector_operations.h +172 -0
  656. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_cuda.h +53 -0
  657. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_generic.h +93 -0
  658. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/string/operations_generic.h +201 -0
  659. hyperdrone/_vendor/rl-tools/include/rl_tools/utils/zlib/operations_cpu.h +45 -0
  660. hyperdrone/_vendor/rl-tools/include/rl_tools/version.h +28 -0
  661. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/CMakeLists.txt +15 -0
  662. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/README.md +214 -0
  663. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/CMakeLists.txt +11 -0
  664. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/CMakeLists.txt +17 -0
  665. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/freestanding_check.cpp +134 -0
  666. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/CMakeLists.txt +31 -0
  667. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/device.metal +912 -0
  668. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/metal_cpp_impl.cpp +6 -0
  669. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/CMakeLists.txt +51 -0
  670. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/device.cu +1 -0
  671. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/overlay_accel.cu +308 -0
  672. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/CMakeLists.txt +37 -0
  673. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device.comp +970 -0
  674. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device_spirv.cpp +44 -0
  675. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/CMakeLists.txt +31 -0
  676. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/device.wgsl +1381 -0
  677. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/CMakeLists.txt +129 -0
  678. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/README.md +131 -0
  679. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark.cpp +180 -0
  680. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark_dynamic.cpp +491 -0
  681. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/download_paper_scene.py +74 -0
  682. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/CMakeLists.txt +104 -0
  683. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/Info.plist +36 -0
  684. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/Sources/BenchmarkApp.swift +172 -0
  685. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/benchmark.h +10 -0
  686. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/benchmark.mm +46 -0
  687. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/build.sh +17 -0
  688. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/rig.cpp +119 -0
  689. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.cpp +1382 -0
  690. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.h +5 -0
  691. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_config.h.in +25 -0
  692. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_identity.cmake +11 -0
  693. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_main.cpp +5 -0
  694. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics.cu +125 -0
  695. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics.h +58 -0
  696. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics_contract.h +179 -0
  697. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics_cpu.cpp +77 -0
  698. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/camera_orbit.h +51 -0
  699. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/CMakeLists.txt +199 -0
  700. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/antialiasing.cpp +214 -0
  701. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone.cpp +320 -0
  702. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone_device.cu +359 -0
  703. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/environment.h +96 -0
  704. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/operations_cpu.h +263 -0
  705. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/example.cpp +273 -0
  706. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/fixed_pose.cpp +221 -0
  707. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/flow.cpp +120 -0
  708. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/interactive.cpp +1015 -0
  709. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/make_drone_glb.py +172 -0
  710. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal.cpp +82 -0
  711. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal_overlay.cpp +137 -0
  712. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/motion_blur.cpp +232 -0
  713. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace.cpp +1829 -0
  714. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace_motion_blur.cpp +647 -0
  715. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/CMakeLists.txt +147 -0
  716. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/README.md +15 -0
  717. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/job.sbatch +28 -0
  718. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model.h +260 -0
  719. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_config.h +24 -0
  720. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_forward_cuda.h +397 -0
  721. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_operations.h +418 -0
  722. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_persist.h +45 -0
  723. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_student.h +70 -0
  724. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.cpp +222 -0
  725. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.h +68 -0
  726. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/.gitignore +4 -0
  727. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/CMakeLists.txt +4 -0
  728. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info.plist +24 -0
  729. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info_ios.plist +36 -0
  730. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/CameraManager.swift +120 -0
  731. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/ContentView.swift +703 -0
  732. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/DatasetRecorder.swift +285 -0
  733. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/YawPredictorApp.swift +25 -0
  734. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/YawPredictor.entitlements +8 -0
  735. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build.sh +66 -0
  736. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build_ios.sh +133 -0
  737. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/generate.sh +6 -0
  738. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/h5_to_tar.cpp +82 -0
  739. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.cpp +166 -0
  740. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.h +26 -0
  741. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/project.yml +30 -0
  742. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/test_tar_vs_hdf5.cpp +173 -0
  743. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_cuda.cu +699 -0
  744. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_dataset_overlay.cpp +475 -0
  745. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_distill_cuda.cu +995 -0
  746. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_eval.cu +457 -0
  747. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_real_world_eval.cpp +660 -0
  748. hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_viewer.cu +443 -0
  749. hyperdrone/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/CMakeLists.txt +63 -0
  750. hyperdrone/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/example.cpp +101 -0
  751. hyperdrone/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/ui.cpp +380 -0
  752. hyperdrone/dynamics/__init__.py +5 -0
  753. hyperdrone/dynamics/_component.py +31 -0
  754. hyperdrone/dynamics/_config.py +46 -0
  755. hyperdrone/dynamics/_sim.py +166 -0
  756. hyperdrone/env/__init__.py +23 -0
  757. hyperdrone/env/_multi_environment.py +566 -0
  758. hyperdrone/env/_rotorcraft.py +29 -0
  759. hyperdrone/env/_spy.py +39 -0
  760. hyperdrone/examples/.gitignore +3 -0
  761. hyperdrone/examples/Benchmark.ipynb +113 -0
  762. hyperdrone/examples/HyperDrone.ipynb +589 -0
  763. hyperdrone/examples/Orbiter.ipynb +496 -0
  764. hyperdrone/examples/Renderer.ipynb +218 -0
  765. hyperdrone/examples/__init__.py +16 -0
  766. hyperdrone/examples/articulation.py +55 -0
  767. hyperdrone/examples/benchmark.py +236 -0
  768. hyperdrone/examples/benchmark_minimal.py +65 -0
  769. hyperdrone/examples/data.py +71 -0
  770. hyperdrone/examples/drone_flythrough.py +169 -0
  771. hyperdrone/examples/hyperdrone_videos/my_world_preview.h +17 -0
  772. hyperdrone/examples/my_world.h +17 -0
  773. hyperdrone/examples/render_procthor.py +40 -0
  774. hyperdrone/examples/shots.py +108 -0
  775. hyperdrone/examples/spy.py +40 -0
  776. hyperdrone/examples/visual_inertial_localization.py +158 -0
  777. hyperdrone/gym/__init__.py +67 -0
  778. hyperdrone/render/__init__.py +57 -0
  779. hyperdrone/render/_component.py +51 -0
  780. hyperdrone/render/_config.py +76 -0
  781. hyperdrone/render/_renderer.py +498 -0
  782. hyperdrone/render/_rig.py +136 -0
  783. hyperdrone/render/_sampling.py +69 -0
  784. hyperdrone/render/_scene.py +38 -0
  785. hyperdrone/render/datasets.py +15 -0
  786. hyperray-0.0.1.dist-info/METADATA +519 -0
  787. hyperray-0.0.1.dist-info/RECORD +788 -0
  788. hyperray-0.0.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,970 @@
1
+ // Vulkan device programs for the RLtools raytracing renderer, compiled once per entry point
2
+ // (ENTRY_RGB / ENTRY_DEPTH / ENTRY_COLLISION / ENTRY_SEGMENTATION / ENTRY_NORMALS / ENTRY_FLOW /
3
+ // ENTRY_FLOW_FORWARD / ENTRY_RESOLVE). This file is a
4
+ // function-for-function mirror of backends/metal/device.metal (which mirrors
5
+ // backends/optix/device_impl.h) — keep the shading logic in sync; the golden-image parity
6
+ // suite is the drift detector. Metal's RGBTracer<DEPTH> template recursion is restructured
7
+ // here as shade_*_local + SecondaryRequest because GLSL forbids recursion: the leaf trace
8
+ // shades without secondary rays (= DEPTH=1 behavior).
9
+ // Struct layouts (LaunchParams, MeshRecord, InstanceData) and binding/spec-constant indices
10
+ // must match include/rl_tools/rendering/raytracing/backends/vulkan/context.h.
11
+ #version 460
12
+ #extension GL_EXT_ray_query : require
13
+ #extension GL_EXT_buffer_reference : require
14
+ #extension GL_EXT_nonuniform_qualifier : require
15
+
16
+ layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
17
+
18
+ layout(constant_id = 0) const bool fc_srgb_output = false;
19
+ layout(constant_id = 1) const bool fc_motion_blur = false;
20
+ layout(constant_id = 2) const int fc_motion_samples = 1;
21
+ layout(constant_id = 3) const int fc_aa_grid = 1;
22
+ layout(constant_id = 4) const bool fc_checker_background = false;
23
+ layout(constant_id = 5) const bool fc_load_textures = false;
24
+ layout(constant_id = 6) const bool fc_normal_shading = false;
25
+ layout(constant_id = 7) const bool fc_metallic_reflections = false;
26
+ layout(constant_id = 8) const bool fc_pbr_shading = false;
27
+ layout(constant_id = 9) const bool fc_punctual_light_shadows = false;
28
+ layout(constant_id = 10) const int fc_overlay_count = 0;
29
+ layout(constant_id = 11) const bool fc_semantic_segmentation = false;
30
+ layout(constant_id = 12) const bool fc_has_observation = false;
31
+ // dynamic motion blur: the motion loop runs at submit level (one dispatch per sample against
32
+ // per-sample overlay TLAS state); each pass reads its shutter time from the push constant and
33
+ // adds its linear mean into the accumulation buffers, resolved by ENTRY_RESOLVE
34
+ layout(constant_id = 13) const bool fc_dynamic_motion_blur = false;
35
+ layout(constant_id = 14) const bool fc_resolve_rgb = false;
36
+
37
+ #if defined(ENTRY_RGB)
38
+ layout(push_constant) uniform PushConstants{ float shutter_t; } push;
39
+ #endif
40
+
41
+ layout(std430, set = 0, binding = 0) readonly buffer LaunchParamsBuffer{
42
+ uint fb_width;
43
+ uint fb_height;
44
+ uint cam_width;
45
+ uint cam_height;
46
+ uint grid_cols;
47
+ uint num_cameras;
48
+ uint num_probes;
49
+ uint num_scene_lights;
50
+ float max_dist;
51
+ float ambient_color[3];
52
+ float miss_color_0[3];
53
+ float miss_color_1[3];
54
+ uint first_overlay_instance;
55
+ uint num_overlay_slots;
56
+ float padding[1];
57
+ } params;
58
+
59
+ struct Camera{
60
+ float pos[3];
61
+ float dir_00[3];
62
+ float dir_du[3];
63
+ float dir_dv[3];
64
+ };
65
+
66
+ layout(std430, set = 0, binding = 1) readonly buffer CamerasCloseBuffer{ Camera cameras_close[]; };
67
+ layout(set = 0, binding = 8) uniform accelerationStructureEXT tlas;
68
+ layout(std430, set = 0, binding = 13) readonly buffer OverlayAttachmentsBuffer{ uint overlay_attachments[]; };
69
+ layout(std430, set = 0, binding = 14) readonly buffer OverlayNumActiveBuffer{ uint overlay_num_active[]; };
70
+ layout(set = 0, binding = 15) uniform accelerationStructureEXT overlay_tlas[];
71
+
72
+ #if defined(ENTRY_RGB)
73
+ layout(std430, set = 0, binding = 2) readonly buffer CamerasOpenBuffer{ Camera cameras_open[]; };
74
+ #endif
75
+
76
+ #if defined(ENTRY_RGB) || defined(ENTRY_RESOLVE)
77
+ layout(std430, set = 0, binding = 18) buffer RgbAccumulationBuffer{ float rgb_accumulation[]; };
78
+ #endif
79
+ #if defined(ENTRY_RESOLVE)
80
+ layout(std430, set = 0, binding = 3) writeonly buffer ResolveFrameBuffer{ uint fb[]; };
81
+ layout(std430, set = 0, binding = 17) writeonly buffer ResolveObservationBuffer{ float observation[]; };
82
+ #endif
83
+
84
+ #if defined(ENTRY_RGB) || defined(ENTRY_NORMALS)
85
+ layout(buffer_reference, std430, buffer_reference_align = 4) readonly buffer IntArray{ int v[]; };
86
+ layout(buffer_reference, std430, buffer_reference_align = 4) readonly buffer FloatArray{ float v[]; };
87
+
88
+ struct MeshRecord{
89
+ IntArray index;
90
+ FloatArray vertices;
91
+ FloatArray tex_coord;
92
+ FloatArray normal;
93
+ uint texture;
94
+ uint normal_map;
95
+ uint metallic_roughness_map;
96
+ uint emissive_map;
97
+ uint occlusion_map;
98
+ float color[3];
99
+ float metallic;
100
+ float roughness;
101
+ float opacity;
102
+ float emissive[3];
103
+ float alpha_cutoff;
104
+ int alpha_mode;
105
+ int has_texture;
106
+ int has_normal_map;
107
+ int has_metallic_roughness_map;
108
+ int has_emissive_map;
109
+ int has_occlusion_map;
110
+ int has_tex_coord;
111
+ int has_normals;
112
+ int unlit;
113
+ };
114
+
115
+ struct InstanceData{
116
+ float object_to_world[12]; // 3x4 row-major [R|t]
117
+ float world_to_object[12];
118
+ uint identity;
119
+ uint padding0;
120
+ uint padding1;
121
+ uint padding2;
122
+ };
123
+
124
+ layout(std430, set = 0, binding = 4) readonly buffer MeshRecordsBuffer{ MeshRecord meshes[]; };
125
+ layout(std430, set = 0, binding = 11) readonly buffer InstanceRecordBaseBuffer{ uint instance_record_base[]; };
126
+ layout(std430, set = 0, binding = 12) readonly buffer InstanceDataBuffer{ InstanceData instance_data[]; };
127
+
128
+ vec3 transform_point_to_world(int instance, vec3 p){
129
+ const float m[12] = instance_data[instance].object_to_world;
130
+ return vec3(m[0]*p.x + m[1]*p.y + m[2]*p.z + m[3],
131
+ m[4]*p.x + m[5]*p.y + m[6]*p.z + m[7],
132
+ m[8]*p.x + m[9]*p.y + m[10]*p.z + m[11]);
133
+ }
134
+ #endif
135
+
136
+ #if defined(ENTRY_RGB)
137
+ struct SceneLight{
138
+ int type; // 0=directional, 1=point, 2=spot
139
+ float position[3];
140
+ float direction[3];
141
+ float color[3];
142
+ float attenuation_constant;
143
+ float attenuation_linear;
144
+ float attenuation_quadratic;
145
+ float cos_inner_cone;
146
+ float cos_outer_cone;
147
+ };
148
+
149
+ layout(std430, set = 0, binding = 3) writeonly buffer FrameBuffer{ uint fb[]; };
150
+ layout(std430, set = 0, binding = 5) readonly buffer SceneLightsBuffer{ SceneLight scene_lights[]; };
151
+ layout(std430, set = 0, binding = 17) writeonly buffer ObservationBuffer{ float observation[]; };
152
+ layout(set = 0, binding = 28) uniform sampler2D scene_textures[];
153
+
154
+ // normals transform with the inverse-transpose: multiply by the world_to_object columns
155
+ vec3 transform_normal_to_world(int instance, vec3 n){
156
+ const float m[12] = instance_data[instance].world_to_object;
157
+ return vec3(m[0]*n.x + m[4]*n.y + m[8]*n.z,
158
+ m[1]*n.x + m[5]*n.y + m[9]*n.z,
159
+ m[2]*n.x + m[6]*n.y + m[10]*n.z);
160
+ }
161
+ #endif
162
+
163
+ #if defined(ENTRY_DEPTH)
164
+ layout(std430, set = 0, binding = 9) writeonly buffer DepthBuffer{ uint depth_out[]; };
165
+ #endif
166
+
167
+ #if defined(ENTRY_SEGMENTATION)
168
+ layout(std430, set = 0, binding = 10) writeonly buffer SegmentationBuffer{ uint segmentation_out[]; };
169
+ layout(std430, set = 0, binding = 16) readonly buffer InstanceClassesBuffer{ uint instance_classes[]; };
170
+ #endif
171
+
172
+ #if defined(ENTRY_NORMALS)
173
+ layout(std430, set = 0, binding = 19) writeonly buffer NormalsBuffer{ float normals_out[]; };
174
+ #endif
175
+
176
+ #if defined(ENTRY_FLOW)
177
+ layout(std430, set = 0, binding = 20) writeonly buffer FlowBuffer{ float flow_out[]; };
178
+ layout(std430, set = 0, binding = 22) writeonly buffer FlowStatusBuffer{ uint flow_status_out[]; };
179
+ #endif
180
+ #if defined(ENTRY_FLOW_FORWARD)
181
+ layout(std430, set = 0, binding = 23) writeonly buffer FlowBuffer{ float flow_out[]; };
182
+ layout(std430, set = 0, binding = 24) writeonly buffer FlowStatusBuffer{ uint flow_status_out[]; };
183
+ #endif
184
+ #if defined(ENTRY_FLOW) || defined(ENTRY_FLOW_FORWARD)
185
+ layout(std430, set = 0, binding = 21) readonly buffer FlowDeltasBuffer{ float flow_deltas[]; };
186
+ layout(std430, set = 0, binding = 25) readonly buffer CamerasPreviousBuffer{ Camera cameras_previous[]; };
187
+ layout(std430, set = 0, binding = 26) readonly buffer OverlayNumActivePreviousBuffer{ uint overlay_num_active_previous[]; };
188
+ layout(set = 0, binding = 27) uniform accelerationStructureEXT overlay_tlas_previous[];
189
+ #endif
190
+
191
+ #if defined(ENTRY_COLLISION)
192
+ struct CollisionResult{
193
+ float distance;
194
+ int hit;
195
+ };
196
+ layout(std430, set = 0, binding = 6) readonly buffer ProbeDirectionsBuffer{ float probe_directions[]; };
197
+ layout(std430, set = 0, binding = 7) writeonly buffer CollisionResultsBuffer{ CollisionResult collision_results[]; };
198
+ #endif
199
+
200
+ vec3 camera_pos(Camera cam){ return vec3(cam.pos[0], cam.pos[1], cam.pos[2]); }
201
+ vec3 camera_dir_00(Camera cam){ return vec3(cam.dir_00[0], cam.dir_00[1], cam.dir_00[2]); }
202
+ vec3 camera_dir_du(Camera cam){ return vec3(cam.dir_du[0], cam.dir_du[1], cam.dir_du[2]); }
203
+ vec3 camera_dir_dv(Camera cam){ return vec3(cam.dir_dv[0], cam.dir_dv[1], cam.dir_dv[2]); }
204
+
205
+ struct Hit{
206
+ bool valid;
207
+ float t;
208
+ int instance_id;
209
+ int geometry_index;
210
+ int primitive_index;
211
+ vec2 bary;
212
+ };
213
+
214
+ Hit trace_single(accelerationStructureEXT as, vec3 origin, vec3 direction, float tmin, float tmax, uint flags){
215
+ rayQueryEXT rq;
216
+ rayQueryInitializeEXT(rq, as, flags, 0xffu, origin, tmin, direction, tmax);
217
+ while(rayQueryProceedEXT(rq)){}
218
+ Hit hit;
219
+ hit.valid = rayQueryGetIntersectionTypeEXT(rq, true) == gl_RayQueryCommittedIntersectionTriangleEXT;
220
+ if(hit.valid){
221
+ hit.t = rayQueryGetIntersectionTEXT(rq, true);
222
+ hit.instance_id = rayQueryGetIntersectionInstanceCustomIndexEXT(rq, true);
223
+ hit.geometry_index = rayQueryGetIntersectionGeometryIndexEXT(rq, true);
224
+ hit.primitive_index = rayQueryGetIntersectionPrimitiveIndexEXT(rq, true);
225
+ hit.bary = rayQueryGetIntersectionBarycentricsEXT(rq, true);
226
+ }
227
+ return hit;
228
+ }
229
+
230
+ // min-t composition of the shared world and the overlays attached to this camera; at
231
+ // fc_overlay_count == 0 the loop specializes away and this is a plain intersect
232
+ Hit intersect_composed(int camera, vec3 origin, vec3 direction, float tmin, float tmax, bool accept_any){
233
+ const uint flags = accept_any ? (gl_RayFlagsOpaqueEXT | gl_RayFlagsTerminateOnFirstHitEXT) : gl_RayFlagsOpaqueEXT;
234
+ Hit best = trace_single(tlas, origin, direction, tmin, tmax, flags);
235
+ for(int k = 0; k < fc_overlay_count; k++){
236
+ if(accept_any && best.valid){
237
+ return best;
238
+ }
239
+ const uint overlay = overlay_attachments[camera * fc_overlay_count + k];
240
+ if(overlay == 0xFFFFFFFFu){ continue; }
241
+ if(overlay_num_active[overlay] == 0u){ continue; }
242
+ const float clamped_tmax = best.valid ? best.t : tmax;
243
+ Hit hit = trace_single(overlay_tlas[nonuniformEXT(overlay)], origin, direction, tmin, clamped_tmax, flags);
244
+ if(hit.valid){
245
+ best = hit;
246
+ }
247
+ }
248
+ return best;
249
+ }
250
+
251
+ struct PixelLaunchContext{
252
+ int cam_idx;
253
+ int local_x;
254
+ int local_y;
255
+ int fb_offset;
256
+ bool valid;
257
+ };
258
+
259
+ PixelLaunchContext pixel_launch_context(uvec2 pixel_id){
260
+ PixelLaunchContext ctx;
261
+ const int tile_col = int(pixel_id.x / params.cam_width);
262
+ const int tile_row = int(pixel_id.y / params.cam_height);
263
+ ctx.cam_idx = tile_row * int(params.grid_cols) + tile_col;
264
+ ctx.local_x = int(pixel_id.x) - tile_col * int(params.cam_width);
265
+ ctx.local_y = int(pixel_id.y) - tile_row * int(params.cam_height);
266
+ ctx.fb_offset = ctx.cam_idx * int(params.cam_width) * int(params.cam_height) + ctx.local_y * int(params.cam_width) + ctx.local_x;
267
+ ctx.valid = pixel_id.x < params.fb_width && pixel_id.y < params.fb_height && ctx.cam_idx < int(params.num_cameras);
268
+ return ctx;
269
+ }
270
+
271
+ #if defined(ENTRY_RGB) || defined(ENTRY_RESOLVE)
272
+ uint make_8bit(float f){
273
+ return uint(min(255, max(0, int(f * 256.0))));
274
+ }
275
+
276
+ uint make_rgba(vec3 color){
277
+ return (make_8bit(color.x) << 0) | (make_8bit(color.y) << 8) | (make_8bit(color.z) << 16) | (0xffu << 24);
278
+ }
279
+
280
+ float linear_to_srgb(float x){
281
+ if(x <= 0.0031308){
282
+ return 12.92 * x;
283
+ }
284
+ return 1.055 * pow(x, 1.0 / 2.4) - 0.055;
285
+ }
286
+
287
+ uint make_srgb_rgba_from_linear(vec3 color){
288
+ color.x = linear_to_srgb(min(max(color.x, 0.0), 1.0));
289
+ color.y = linear_to_srgb(min(max(color.y, 0.0), 1.0));
290
+ color.z = linear_to_srgb(min(max(color.z, 0.0), 1.0));
291
+ return make_rgba(color);
292
+ }
293
+
294
+ uint make_linear_rgba_from_linear(vec3 color){
295
+ color.x = min(max(color.x, 0.0), 1.0);
296
+ color.y = min(max(color.y, 0.0), 1.0);
297
+ color.z = min(max(color.z, 0.0), 1.0);
298
+ return make_rgba(color);
299
+ }
300
+ #endif
301
+
302
+ #if defined(ENTRY_RGB)
303
+ vec3 miss_color(uvec2 pixel_id){
304
+ if(fc_checker_background){
305
+ int checker_pattern = (int(pixel_id.x) / 8) ^ (int(pixel_id.y) / 8);
306
+ if((checker_pattern & 1) != 0){
307
+ return vec3(params.miss_color_1[0], params.miss_color_1[1], params.miss_color_1[2]);
308
+ }
309
+ return vec3(params.miss_color_0[0], params.miss_color_0[1], params.miss_color_0[2]);
310
+ }
311
+ return vec3(params.miss_color_0[0], params.miss_color_0[1], params.miss_color_0[2]);
312
+ }
313
+
314
+ bool trace_shadow_occluded(int camera, vec3 pos, vec3 direction, float max_dist){
315
+ Hit hit = intersect_composed(camera, pos, direction, 1e-3, max_dist, true);
316
+ return hit.valid;
317
+ }
318
+ #endif
319
+
320
+ #if defined(ENTRY_RGB) || defined(ENTRY_NORMALS)
321
+ ivec3 fetch_index(int mesh, int primitive){
322
+ return ivec3(meshes[mesh].index.v[3 * primitive], meshes[mesh].index.v[3 * primitive + 1], meshes[mesh].index.v[3 * primitive + 2]);
323
+ }
324
+ vec3 fetch_vertex(int mesh, int i){
325
+ return vec3(meshes[mesh].vertices.v[3 * i], meshes[mesh].vertices.v[3 * i + 1], meshes[mesh].vertices.v[3 * i + 2]);
326
+ }
327
+ #endif
328
+
329
+ #if defined(ENTRY_RGB)
330
+ vec2 fetch_tex_coord(int mesh, int i){
331
+ return vec2(meshes[mesh].tex_coord.v[2 * i], meshes[mesh].tex_coord.v[2 * i + 1]);
332
+ }
333
+ vec3 fetch_normal(int mesh, int i){
334
+ return vec3(meshes[mesh].normal.v[3 * i], meshes[mesh].normal.v[3 * i + 1], meshes[mesh].normal.v[3 * i + 2]);
335
+ }
336
+ vec4 sample_texture(uint texture_index, vec2 tc){
337
+ return textureLod(scene_textures[nonuniformEXT(texture_index)], tc, 0.0);
338
+ }
339
+
340
+ struct SecondaryRequest{
341
+ bool want_reflection;
342
+ vec3 reflect_dir;
343
+ float reflection_weight; // basic: fresnel factor, pbr: blend weight
344
+ bool want_transparency;
345
+ float alpha;
346
+ int alpha_mode;
347
+ vec3 hit_point;
348
+ vec3 ray_dir;
349
+ };
350
+
351
+ vec3 shade_basic_local(Hit hit, vec3 ray_origin, vec3 ray_dir, out SecondaryRequest request){
352
+ const int mesh = int(instance_record_base[hit.instance_id]) + hit.geometry_index;
353
+ request.want_reflection = false;
354
+ request.want_transparency = false;
355
+
356
+ vec3 base_color = vec3(meshes[mesh].color[0], meshes[mesh].color[1], meshes[mesh].color[2]);
357
+ vec3 normal_geometric = vec3(0.0, 0.0, 1.0);
358
+
359
+ if(fc_load_textures || fc_normal_shading || fc_metallic_reflections){
360
+ const ivec3 index = fetch_index(mesh, hit.primitive_index);
361
+
362
+ if(fc_normal_shading || fc_metallic_reflections){
363
+ vec3 vertex_a = fetch_vertex(mesh, index.x);
364
+ vec3 vertex_b = fetch_vertex(mesh, index.y);
365
+ vec3 vertex_c = fetch_vertex(mesh, index.z);
366
+ if(instance_data[hit.instance_id].identity == 0u){
367
+ vertex_a = transform_point_to_world(hit.instance_id, vertex_a);
368
+ vertex_b = transform_point_to_world(hit.instance_id, vertex_b);
369
+ vertex_c = transform_point_to_world(hit.instance_id, vertex_c);
370
+ }
371
+ normal_geometric = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
372
+ }
373
+
374
+ if(fc_load_textures){
375
+ if(meshes[mesh].has_texture != 0 && meshes[mesh].has_tex_coord != 0){
376
+ const vec2 bary = hit.bary;
377
+ const vec2 tc
378
+ = (1.0 - bary.x - bary.y) * fetch_tex_coord(mesh, index.x)
379
+ + bary.x * fetch_tex_coord(mesh, index.y)
380
+ + bary.y * fetch_tex_coord(mesh, index.z);
381
+ vec4 tex_color = sample_texture(meshes[mesh].texture, tc);
382
+ base_color = tex_color.xyz * vec3(meshes[mesh].color[0], meshes[mesh].color[1], meshes[mesh].color[2]);
383
+ }
384
+ }
385
+ }
386
+
387
+ if(meshes[mesh].unlit != 0){
388
+ return base_color;
389
+ }
390
+
391
+ vec3 direct = base_color;
392
+ if(fc_normal_shading){
393
+ direct = (0.2 + 0.8 * abs(dot(ray_dir, normal_geometric))) * base_color;
394
+ }
395
+
396
+ if(fc_metallic_reflections){
397
+ if(meshes[mesh].metallic > 0.0){
398
+ vec3 hit_point = ray_origin + ray_dir * hit.t;
399
+ vec3 n = dot(ray_dir, normal_geometric) > 0.0 ? -normal_geometric : normal_geometric;
400
+ float cos_theta = abs(dot(ray_dir, n));
401
+ request.want_reflection = true;
402
+ request.reflect_dir = ray_dir - 2.0 * dot(ray_dir, n) * n;
403
+ request.reflection_weight = meshes[mesh].metallic * (0.04 + 0.96 * pow(1.0 - cos_theta, 5.0));
404
+ request.hit_point = hit_point;
405
+ request.ray_dir = ray_dir;
406
+ }
407
+ }
408
+ return direct;
409
+ }
410
+
411
+ vec3 shade_pbr_local(Hit hit, vec3 ray_origin, vec3 ray_dir, uvec2 pixel_id, int camera, out SecondaryRequest request){
412
+ const int mesh = int(instance_record_base[hit.instance_id]) + hit.geometry_index;
413
+ request.want_reflection = false;
414
+ request.want_transparency = false;
415
+
416
+ const bool instance_identity = instance_data[hit.instance_id].identity != 0u;
417
+ const ivec3 index = fetch_index(mesh, hit.primitive_index);
418
+ vec3 vertex_a = fetch_vertex(mesh, index.x);
419
+ vec3 vertex_b = fetch_vertex(mesh, index.y);
420
+ vec3 vertex_c = fetch_vertex(mesh, index.z);
421
+ if(!instance_identity){
422
+ vertex_a = transform_point_to_world(hit.instance_id, vertex_a);
423
+ vertex_b = transform_point_to_world(hit.instance_id, vertex_b);
424
+ vertex_c = transform_point_to_world(hit.instance_id, vertex_c);
425
+ }
426
+ const vec2 bary = hit.bary;
427
+ const float w0 = 1.0 - bary.x - bary.y;
428
+
429
+ const vec3 edge1 = vertex_b - vertex_a;
430
+ const vec3 edge2 = vertex_c - vertex_a;
431
+ const vec3 normal_geometric = normalize(cross(edge1, edge2));
432
+
433
+ vec3 N;
434
+ if(meshes[mesh].has_normals != 0){
435
+ vec3 normal_interpolated = w0 * fetch_normal(mesh, index.x) + bary.x * fetch_normal(mesh, index.y) + bary.y * fetch_normal(mesh, index.z);
436
+ if(!instance_identity){
437
+ normal_interpolated = transform_normal_to_world(hit.instance_id, normal_interpolated);
438
+ }
439
+ N = normalize(normal_interpolated);
440
+ }
441
+ else{
442
+ N = normal_geometric;
443
+ }
444
+
445
+ if(dot(ray_dir, N) > 0.0){
446
+ N = -N;
447
+ }
448
+
449
+ const bool has_tex_coord = meshes[mesh].has_tex_coord != 0;
450
+ const vec2 tc = has_tex_coord
451
+ ? w0 * fetch_tex_coord(mesh, index.x) + bary.x * fetch_tex_coord(mesh, index.y) + bary.y * fetch_tex_coord(mesh, index.z)
452
+ : vec2(0.0);
453
+
454
+ vec3 base_color = vec3(meshes[mesh].color[0], meshes[mesh].color[1], meshes[mesh].color[2]);
455
+ float alpha = meshes[mesh].opacity;
456
+ if(meshes[mesh].has_texture != 0 && has_tex_coord){
457
+ vec4 tex_color = sample_texture(meshes[mesh].texture, tc);
458
+ base_color = tex_color.xyz * vec3(meshes[mesh].color[0], meshes[mesh].color[1], meshes[mesh].color[2]);
459
+ alpha *= tex_color.w;
460
+ }
461
+
462
+ vec3 hit_point = ray_origin + ray_dir * hit.t;
463
+
464
+ vec3 color = base_color;
465
+ if(meshes[mesh].unlit == 0){
466
+ float metallic = meshes[mesh].metallic;
467
+ float roughness = meshes[mesh].roughness;
468
+ if(meshes[mesh].has_metallic_roughness_map != 0 && has_tex_coord){
469
+ vec4 mr_sample = sample_texture(meshes[mesh].metallic_roughness_map, tc);
470
+ roughness = mr_sample.y * meshes[mesh].roughness;
471
+ metallic = mr_sample.z * meshes[mesh].metallic;
472
+ }
473
+
474
+ if(meshes[mesh].has_normal_map != 0 && has_tex_coord){
475
+ const vec2 tc0 = fetch_tex_coord(mesh, index.x);
476
+ const vec2 tc1 = fetch_tex_coord(mesh, index.y);
477
+ const vec2 tc2 = fetch_tex_coord(mesh, index.z);
478
+ const vec2 duv1 = tc1 - tc0;
479
+ const vec2 duv2 = tc2 - tc0;
480
+ float det = duv1.x * duv2.y - duv2.x * duv1.y;
481
+ if(abs(det) > 1e-8){
482
+ float inv_det = 1.0 / det;
483
+ vec3 T = normalize(inv_det * (duv2.y * edge1 - duv1.y * edge2));
484
+ T = normalize(T - dot(T, N) * N);
485
+ vec3 B = cross(N, T);
486
+ vec4 nm_sample = sample_texture(meshes[mesh].normal_map, vec2(w0 * tc0.x + bary.x * tc1.x + bary.y * tc2.x, w0 * tc0.y + bary.x * tc1.y + bary.y * tc2.y));
487
+ vec3 n_tangent = vec3(nm_sample.x * 2.0 - 1.0, -(nm_sample.y * 2.0 - 1.0), nm_sample.z * 2.0 - 1.0);
488
+ N = normalize(T * n_tangent.x + B * n_tangent.y + N * n_tangent.z);
489
+ }
490
+ }
491
+
492
+ roughness = max(roughness, 0.04);
493
+ float roughness_alpha = roughness * roughness;
494
+ float alpha2 = roughness_alpha * roughness_alpha;
495
+ float k = (roughness + 1.0) * (roughness + 1.0) / 8.0;
496
+
497
+ vec3 V = -ray_dir;
498
+ float NdotV = max(dot(N, V), 1e-4);
499
+ vec3 F0 = vec3(0.04) * (1.0 - metallic) + base_color * metallic;
500
+
501
+ vec3 Lo = vec3(0.0);
502
+ for(int li = 0; li < int(params.num_scene_lights); li++){
503
+ vec3 Lc = vec3(scene_lights[li].color[0], scene_lights[li].color[1], scene_lights[li].color[2]);
504
+ vec3 L;
505
+ float attenuation = 1.0;
506
+ float light_distance = 1e20;
507
+
508
+ if(scene_lights[li].type == 0){
509
+ L = vec3(scene_lights[li].direction[0], scene_lights[li].direction[1], scene_lights[li].direction[2]);
510
+ }
511
+ else{
512
+ vec3 to_light = vec3(scene_lights[li].position[0], scene_lights[li].position[1], scene_lights[li].position[2]) - hit_point;
513
+ float dist = length(to_light);
514
+ light_distance = max(dist - 1e-3, 0.0);
515
+ L = to_light * (1.0 / max(dist, 1e-6));
516
+ attenuation = 1.0 / (scene_lights[li].attenuation_constant + scene_lights[li].attenuation_linear * dist + scene_lights[li].attenuation_quadratic * dist * dist);
517
+ if(scene_lights[li].type == 2){
518
+ vec3 spot_dir = vec3(scene_lights[li].direction[0], scene_lights[li].direction[1], scene_lights[li].direction[2]);
519
+ float cos_angle = dot(-L, spot_dir);
520
+ float denom = scene_lights[li].cos_inner_cone - scene_lights[li].cos_outer_cone;
521
+ float spot_t = (cos_angle - scene_lights[li].cos_outer_cone) / (abs(denom) > 1e-6 ? denom : 1e-6);
522
+ attenuation *= max(min(spot_t, 1.0), 0.0);
523
+ }
524
+ }
525
+
526
+ float NdotL = max(dot(N, L), 0.0);
527
+ if(NdotL <= 0.0){
528
+ continue;
529
+ }
530
+ if(fc_punctual_light_shadows){
531
+ if(scene_lights[li].type != 0 && trace_shadow_occluded(camera, hit_point + N * 2e-3, L, light_distance)){
532
+ continue;
533
+ }
534
+ }
535
+
536
+ vec3 H = normalize(V + L);
537
+ float NdotH = max(dot(N, H), 0.0);
538
+ float VdotH = max(dot(V, H), 0.0);
539
+
540
+ float denom_D = NdotH * NdotH * (alpha2 - 1.0) + 1.0;
541
+ float D = alpha2 / (3.14159265 * denom_D * denom_D);
542
+
543
+ float G1_V = NdotV / (NdotV * (1.0 - k) + k);
544
+ float G1_L = NdotL / (NdotL * (1.0 - k) + k);
545
+ float G = G1_V * G1_L;
546
+
547
+ float pow5 = pow(1.0 - VdotH, 5.0);
548
+ vec3 F = F0 + (vec3(1.0) - F0) * pow5;
549
+
550
+ vec3 specular = D * G * F * (1.0 / (4.0 * NdotV * NdotL + 1e-4));
551
+ vec3 kd = (vec3(1.0) - F) * (1.0 - metallic);
552
+ vec3 diffuse = kd * base_color * (1.0 / 3.14159265);
553
+
554
+ Lo = Lo + (diffuse + specular) * Lc * (attenuation * NdotL);
555
+ }
556
+
557
+ float occlusion = 1.0;
558
+ if(meshes[mesh].has_occlusion_map != 0 && has_tex_coord){
559
+ vec4 ao_sample = sample_texture(meshes[mesh].occlusion_map, tc);
560
+ occlusion = ao_sample.x;
561
+ }
562
+
563
+ vec3 emissive_color;
564
+ if(meshes[mesh].has_emissive_map != 0 && has_tex_coord){
565
+ vec4 em_sample = sample_texture(meshes[mesh].emissive_map, tc);
566
+ emissive_color = em_sample.xyz * vec3(meshes[mesh].emissive[0], meshes[mesh].emissive[1], meshes[mesh].emissive[2]);
567
+ }
568
+ else{
569
+ emissive_color = vec3(meshes[mesh].emissive[0], meshes[mesh].emissive[1], meshes[mesh].emissive[2]);
570
+ }
571
+
572
+ vec3 ambient = vec3(params.ambient_color[0], params.ambient_color[1], params.ambient_color[2]) * base_color * ((1.0 - metallic) * occlusion);
573
+ color = ambient + Lo + emissive_color;
574
+
575
+ if(metallic > 0.1){
576
+ float fresnel_refl = F0.x + (1.0 - F0.x) * pow(1.0 - max(dot(V, N), 0.0), 5.0);
577
+ request.want_reflection = true;
578
+ request.reflect_dir = ray_dir - 2.0 * dot(ray_dir, N) * N;
579
+ request.reflection_weight = fresnel_refl * (1.0 - roughness);
580
+ }
581
+
582
+ }
583
+
584
+ bool transparent = (meshes[mesh].alpha_mode == 2 && alpha < 0.99) || (meshes[mesh].alpha_mode == 1 && alpha < meshes[mesh].alpha_cutoff);
585
+ if(transparent){
586
+ request.want_transparency = true;
587
+ }
588
+ request.alpha = alpha;
589
+ request.alpha_mode = meshes[mesh].alpha_mode;
590
+ request.hit_point = hit_point;
591
+ request.ray_dir = ray_dir;
592
+
593
+ return color;
594
+ }
595
+
596
+ vec3 trace_leaf(int camera, vec3 origin, vec3 direction, float tmin, uvec2 pixel_id){
597
+ Hit hit = intersect_composed(camera, origin, direction, tmin, 1e20, false);
598
+ if(!hit.valid){
599
+ return miss_color(pixel_id);
600
+ }
601
+ SecondaryRequest request;
602
+ if(fc_pbr_shading){
603
+ return shade_pbr_local(hit, origin, direction, pixel_id, camera, request);
604
+ }
605
+ return shade_basic_local(hit, origin, direction, request);
606
+ }
607
+
608
+ vec3 trace_primary(int camera, vec3 origin, vec3 direction, float tmin, float tmax, uvec2 pixel_id){
609
+ Hit hit = intersect_composed(camera, origin, direction, tmin, tmax, false);
610
+ if(!hit.valid){
611
+ return miss_color(pixel_id);
612
+ }
613
+ SecondaryRequest request;
614
+ if(fc_pbr_shading){
615
+ vec3 color = shade_pbr_local(hit, origin, direction, pixel_id, camera, request);
616
+ if(request.want_reflection){
617
+ vec3 reflected_color = trace_leaf(camera, request.hit_point, request.reflect_dir, 1e-3, pixel_id);
618
+ color = color * (1.0 - request.reflection_weight) + reflected_color * request.reflection_weight;
619
+ }
620
+ if(request.want_transparency){
621
+ vec3 behind_color = trace_leaf(camera, request.hit_point, request.ray_dir, 1e-5, pixel_id);
622
+ if(request.alpha_mode == 1){
623
+ color = behind_color;
624
+ }
625
+ else{
626
+ color = color * request.alpha + behind_color * (1.0 - request.alpha);
627
+ }
628
+ }
629
+ return color;
630
+ }
631
+ vec3 direct = shade_basic_local(hit, origin, direction, request);
632
+ if(fc_metallic_reflections && request.want_reflection){
633
+ vec3 reflected_color = trace_leaf(camera, request.hit_point, request.reflect_dir, 1e-3, pixel_id);
634
+ float fresnel = request.reflection_weight;
635
+ return direct * ((1.0 - fresnel) + fresnel * reflected_color);
636
+ }
637
+ return direct;
638
+ }
639
+
640
+ void main(){
641
+ const uvec2 pixel_id = gl_GlobalInvocationID.xy;
642
+ const PixelLaunchContext ctx = pixel_launch_context(pixel_id);
643
+ if(!ctx.valid){
644
+ return;
645
+ }
646
+
647
+ vec3 accumulated = vec3(0.0);
648
+ const float inv_aa_grid = 1.0 / float(fc_aa_grid);
649
+ const int motion_samples = fc_dynamic_motion_blur ? 1 : fc_motion_samples;
650
+ for(int motion_i = 0; motion_i < motion_samples; motion_i++){
651
+ vec3 pos;
652
+ vec3 dir_00;
653
+ vec3 dir_du;
654
+ vec3 dir_dv;
655
+ if(fc_motion_blur){
656
+ Camera cam_open = cameras_open[ctx.cam_idx];
657
+ Camera cam_close = cameras_close[ctx.cam_idx];
658
+ const float shutter_t = fc_dynamic_motion_blur ? push.shutter_t : (float(motion_i) + 0.5) * (1.0 / float(fc_motion_samples));
659
+ pos = mix(camera_pos(cam_open), camera_pos(cam_close), shutter_t);
660
+ dir_00 = mix(camera_dir_00(cam_open), camera_dir_00(cam_close), shutter_t);
661
+ dir_du = mix(camera_dir_du(cam_open), camera_dir_du(cam_close), shutter_t);
662
+ dir_dv = mix(camera_dir_dv(cam_open), camera_dir_dv(cam_close), shutter_t);
663
+ }
664
+ else{
665
+ Camera cam = cameras_close[ctx.cam_idx];
666
+ pos = camera_pos(cam);
667
+ dir_00 = camera_dir_00(cam);
668
+ dir_du = camera_dir_du(cam);
669
+ dir_dv = camera_dir_dv(cam);
670
+ }
671
+ for(int aa_y = 0; aa_y < fc_aa_grid; aa_y++){
672
+ for(int aa_x = 0; aa_x < fc_aa_grid; aa_x++){
673
+ const vec2 screen = (vec2(ctx.local_x, ctx.local_y) + vec2((float(aa_x) + 0.5) * inv_aa_grid, (float(aa_y) + 0.5) * inv_aa_grid)) / vec2(params.cam_width, params.cam_height);
674
+ const vec3 direction = normalize(dir_00 + screen.x * dir_du + screen.y * dir_dv);
675
+ accumulated += trace_primary(ctx.cam_idx, pos, direction, 0.0, 1e30, pixel_id);
676
+ }
677
+ }
678
+ }
679
+ const int samples = motion_samples * fc_aa_grid * fc_aa_grid;
680
+ const vec3 color = accumulated * (1.0 / float(samples));
681
+ if(fc_dynamic_motion_blur){
682
+ // one pass of the launch-level motion loop: add this pass's linear mean (each
683
+ // invocation owns its pixel — no atomics); ENTRY_RESOLVE averages and quantizes
684
+ rgb_accumulation[ctx.fb_offset * 3 + 0] += color.x;
685
+ rgb_accumulation[ctx.fb_offset * 3 + 1] += color.y;
686
+ rgb_accumulation[ctx.fb_offset * 3 + 2] += color.z;
687
+ return;
688
+ }
689
+ if(fc_has_observation){
690
+ // the observation is the frame-buffer color before 8-bit quantization
691
+ vec3 obs_color = clamp(color, 0.0, 1.0);
692
+ if(fc_srgb_output){
693
+ obs_color = vec3(linear_to_srgb(obs_color.x), linear_to_srgb(obs_color.y), linear_to_srgb(obs_color.z));
694
+ }
695
+ observation[ctx.fb_offset * 3 + 0] = obs_color.x;
696
+ observation[ctx.fb_offset * 3 + 1] = obs_color.y;
697
+ observation[ctx.fb_offset * 3 + 2] = obs_color.z;
698
+ }
699
+ if(fc_srgb_output){
700
+ fb[ctx.fb_offset] = make_srgb_rgba_from_linear(color);
701
+ }
702
+ else{
703
+ fb[ctx.fb_offset] = make_linear_rgba_from_linear(color);
704
+ }
705
+ }
706
+ #endif
707
+
708
+ #if defined(ENTRY_DEPTH)
709
+ void main(){
710
+ const PixelLaunchContext ctx = pixel_launch_context(gl_GlobalInvocationID.xy);
711
+ if(!ctx.valid){
712
+ return;
713
+ }
714
+ Camera cam = cameras_close[ctx.cam_idx];
715
+ const vec2 screen = (vec2(ctx.local_x, ctx.local_y) + vec2(0.5)) / vec2(params.cam_width, params.cam_height);
716
+ const vec3 direction = normalize(camera_dir_00(cam) + screen.x * camera_dir_du(cam) + screen.y * camera_dir_dv(cam));
717
+ const vec3 normal = normalize(cross(camera_dir_du(cam), camera_dir_dv(cam)));
718
+ const Hit hit = intersect_composed(ctx.cam_idx, camera_pos(cam), direction, 0.0, 1e30, false);
719
+ if(hit.valid){
720
+ depth_out[ctx.fb_offset] = floatBitsToUint(hit.t * abs(dot(direction, normal)));
721
+ }
722
+ else{
723
+ depth_out[ctx.fb_offset] = 0x7f800000u;
724
+ }
725
+ }
726
+ #endif
727
+
728
+ #if defined(ENTRY_RESOLVE)
729
+ // divides the accumulated linear radiance by the sample count and writes the declared outputs
730
+ // with the same transfer curve + quantization as the single-dispatch path
731
+ void main(){
732
+ const uvec2 pixel_id = gl_GlobalInvocationID.xy;
733
+ const PixelLaunchContext ctx = pixel_launch_context(pixel_id);
734
+ if(!ctx.valid){
735
+ return;
736
+ }
737
+ const float inv_samples = 1.0 / float(fc_motion_samples);
738
+ if(fc_resolve_rgb){
739
+ const vec3 color = vec3(
740
+ rgb_accumulation[ctx.fb_offset * 3 + 0],
741
+ rgb_accumulation[ctx.fb_offset * 3 + 1],
742
+ rgb_accumulation[ctx.fb_offset * 3 + 2]) * inv_samples;
743
+ if(fc_has_observation){
744
+ vec3 obs_color = clamp(color, 0.0, 1.0);
745
+ if(fc_srgb_output){
746
+ obs_color = vec3(linear_to_srgb(obs_color.x), linear_to_srgb(obs_color.y), linear_to_srgb(obs_color.z));
747
+ }
748
+ observation[ctx.fb_offset * 3 + 0] = obs_color.x;
749
+ observation[ctx.fb_offset * 3 + 1] = obs_color.y;
750
+ observation[ctx.fb_offset * 3 + 2] = obs_color.z;
751
+ }
752
+ if(fc_srgb_output){
753
+ fb[ctx.fb_offset] = make_srgb_rgba_from_linear(color);
754
+ }
755
+ else{
756
+ fb[ctx.fb_offset] = make_linear_rgba_from_linear(color);
757
+ }
758
+ }
759
+ }
760
+ #endif
761
+
762
+ #if defined(ENTRY_COLLISION)
763
+ void main(){
764
+ const int cam_idx = int(gl_GlobalInvocationID.x);
765
+ const int probe_idx = int(gl_GlobalInvocationID.y);
766
+
767
+ if(cam_idx >= int(params.num_cameras) || probe_idx >= int(params.num_probes)){
768
+ return;
769
+ }
770
+
771
+ Camera cam = cameras_close[cam_idx];
772
+
773
+ vec3 dir;
774
+ if(probe_idx == 0){
775
+ dir = normalize(camera_dir_00(cam) + 0.5 * camera_dir_du(cam) + 0.5 * camera_dir_dv(cam));
776
+ }
777
+ else{
778
+ dir = vec3(probe_directions[3 * probe_idx], probe_directions[3 * probe_idx + 1], probe_directions[3 * probe_idx + 2]);
779
+ }
780
+
781
+ Hit hit = intersect_composed(cam_idx, camera_pos(cam), dir, 1e-3, params.max_dist, false);
782
+
783
+ CollisionResult result;
784
+ if(!hit.valid){
785
+ result.distance = uintBitsToFloat(0x7f800000u);
786
+ result.hit = 0;
787
+ }
788
+ else{
789
+ result.distance = hit.t;
790
+ result.hit = 1;
791
+ }
792
+ collision_results[cam_idx * int(params.num_probes) + probe_idx] = result;
793
+ }
794
+ #endif
795
+
796
+ #if defined(ENTRY_SEGMENTATION)
797
+ // single-sample by design: instance labels cannot be averaged, so anti-aliasing and motion
798
+ // blur do not apply (shutter-close camera, pixel-center ray)
799
+ void main(){
800
+ const uvec2 pixel_id = gl_GlobalInvocationID.xy;
801
+ const PixelLaunchContext ctx = pixel_launch_context(pixel_id);
802
+ if(!ctx.valid){
803
+ return;
804
+ }
805
+ Camera cam = cameras_close[ctx.cam_idx];
806
+ const vec2 screen = (vec2(ctx.local_x, ctx.local_y) + vec2(0.5, 0.5)) / vec2(params.cam_width, params.cam_height);
807
+ const vec3 direction = normalize(camera_dir_00(cam) + screen.x * camera_dir_du(cam) + screen.y * camera_dir_dv(cam));
808
+ Hit hit = intersect_composed(ctx.cam_idx, camera_pos(cam), direction, 0.0, 1e30, false);
809
+ segmentation_out[ctx.fb_offset] = hit.valid ? (fc_semantic_segmentation ? instance_classes[uint(hit.instance_id)] : uint(hit.instance_id)) : 0xFFFFFFFFu;
810
+ }
811
+ #endif
812
+
813
+ #if defined(ENTRY_NORMALS)
814
+ // single-sample by design: unit normals cannot be averaged, so anti-aliasing and motion blur
815
+ // do not apply (shutter-close camera, pixel-center ray); world-frame geometric normal,
816
+ // oriented against the ray, zero on miss
817
+ void main(){
818
+ const uvec2 pixel_id = gl_GlobalInvocationID.xy;
819
+ const PixelLaunchContext ctx = pixel_launch_context(pixel_id);
820
+ if(!ctx.valid){
821
+ return;
822
+ }
823
+ Camera cam = cameras_close[ctx.cam_idx];
824
+ const vec2 screen = (vec2(ctx.local_x, ctx.local_y) + vec2(0.5, 0.5)) / vec2(params.cam_width, params.cam_height);
825
+ const vec3 direction = normalize(camera_dir_00(cam) + screen.x * camera_dir_du(cam) + screen.y * camera_dir_dv(cam));
826
+ Hit hit = intersect_composed(ctx.cam_idx, camera_pos(cam), direction, 0.0, 1e30, false);
827
+ vec3 normal = vec3(0.0);
828
+ if(hit.valid){
829
+ const int mesh = int(instance_record_base[hit.instance_id]) + hit.geometry_index;
830
+ const ivec3 index = fetch_index(mesh, hit.primitive_index);
831
+ vec3 vertex_a = fetch_vertex(mesh, index.x);
832
+ vec3 vertex_b = fetch_vertex(mesh, index.y);
833
+ vec3 vertex_c = fetch_vertex(mesh, index.z);
834
+ if(instance_data[hit.instance_id].identity == 0u){
835
+ vertex_a = transform_point_to_world(hit.instance_id, vertex_a);
836
+ vertex_b = transform_point_to_world(hit.instance_id, vertex_b);
837
+ vertex_c = transform_point_to_world(hit.instance_id, vertex_c);
838
+ }
839
+ normal = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
840
+ if(dot(direction, normal) > 0.0){
841
+ normal = -normal;
842
+ }
843
+ }
844
+ normals_out[ctx.fb_offset * 3 + 0] = normal.x;
845
+ normals_out[ctx.fb_offset * 3 + 1] = normal.y;
846
+ normals_out[ctx.fb_offset * 3 + 2] = normal.z;
847
+ }
848
+ #endif
849
+
850
+ #if defined(ENTRY_FLOW) || defined(ENTRY_FLOW_FORWARD)
851
+ // FlowStatus codes (rl_tools/rendering/raytracing/types.h)
852
+ const uint FLOW_STATUS_VALID = 0u;
853
+ const uint FLOW_STATUS_MISS = 1u;
854
+ const uint FLOW_STATUS_BEHIND = 2u;
855
+ const uint FLOW_STATUS_OUT_OF_FRAME = 3u;
856
+ const uint FLOW_STATUS_OCCLUDED = 4u;
857
+ const float FLOW_VISIBILITY_EPSILON = 1e-4;
858
+ #if defined(ENTRY_FLOW_FORWARD)
859
+ const bool SOURCE_PREVIOUS = true;
860
+ #else
861
+ const bool SOURCE_PREVIOUS = false;
862
+ #endif
863
+
864
+ vec3 apply_flow_delta(uint base, vec3 p){
865
+ return vec3(
866
+ flow_deltas[base + 0]*p.x + flow_deltas[base + 1]*p.y + flow_deltas[base + 2]*p.z + flow_deltas[base + 3],
867
+ flow_deltas[base + 4]*p.x + flow_deltas[base + 5]*p.y + flow_deltas[base + 6]*p.z + flow_deltas[base + 7],
868
+ flow_deltas[base + 8]*p.x + flow_deltas[base + 9]*p.y + flow_deltas[base + 10]*p.z + flow_deltas[base + 11]);
869
+ }
870
+
871
+ // intersect_composed against one instant's overlay set: the current one (overlay_tlas) or the
872
+ // previous one (overlay_tlas_previous, flow only)
873
+ Hit intersect_composed_instant(bool previous, int camera, vec3 origin, vec3 direction, float tmin, float tmax, bool accept_any){
874
+ const uint flags = accept_any ? (gl_RayFlagsOpaqueEXT | gl_RayFlagsTerminateOnFirstHitEXT) : gl_RayFlagsOpaqueEXT;
875
+ Hit best = trace_single(tlas, origin, direction, tmin, tmax, flags);
876
+ for(int k = 0; k < fc_overlay_count; k++){
877
+ if(accept_any && best.valid){
878
+ return best;
879
+ }
880
+ const uint overlay = overlay_attachments[camera * fc_overlay_count + k];
881
+ if(overlay == 0xFFFFFFFFu){ continue; }
882
+ const uint num_active = previous ? overlay_num_active_previous[overlay] : overlay_num_active[overlay];
883
+ if(num_active == 0u){ continue; }
884
+ const float clamped_tmax = best.valid ? best.t : tmax;
885
+ Hit hit;
886
+ if(previous){
887
+ hit = trace_single(overlay_tlas_previous[nonuniformEXT(overlay)], origin, direction, tmin, clamped_tmax, flags);
888
+ }
889
+ else{
890
+ hit = trace_single(overlay_tlas[nonuniformEXT(overlay)], origin, direction, tmin, clamped_tmax, flags);
891
+ }
892
+ if(hit.valid){
893
+ best = hit;
894
+ }
895
+ }
896
+ return best;
897
+ }
898
+
899
+ // world point → screen fraction through the linear camera model: solves
900
+ // dir_00 + screen_x·dir_du + screen_y·dir_dv = lambda·(point − pos) by Cramer's rule;
901
+ // returns false for a degenerate basis or a point at/behind the camera (lambda <= 0)
902
+ bool project_camera(Camera cam, vec3 point, out float screen_x, out float screen_y){
903
+ const vec3 direction = point - camera_pos(cam);
904
+ const vec3 dir_du = camera_dir_du(cam);
905
+ const vec3 dir_dv = camera_dir_dv(cam);
906
+ const vec3 negative_direction = -direction;
907
+ const vec3 cross_dv_negative_direction = cross(dir_dv, negative_direction);
908
+ const float det = dot(dir_du, cross_dv_negative_direction);
909
+ if(det > -1e-12 && det < 1e-12){
910
+ return false;
911
+ }
912
+ const float inv_det = 1.0 / det;
913
+ const vec3 b = -camera_dir_00(cam);
914
+ screen_x = dot(b, cross_dv_negative_direction) * inv_det;
915
+ screen_y = dot(dir_du, cross(b, negative_direction)) * inv_det;
916
+ const float lambda = dot(dir_du, cross(dir_dv, b)) * inv_det;
917
+ return lambda > 0.0;
918
+ }
919
+
920
+ // two-instant flow, one direction per entry point (mirror of the generic render_flow_frame):
921
+ // single-sample from the source pixel centre against the source instant; the hit point is
922
+ // carried to the target instant by its slot's delta, projected through the target camera, and
923
+ // tested for visibility from the target camera against the target instant with the relative
924
+ // margin FLOW_VISIBILITY_EPSILON. Status priority MISS, BEHIND, OUT_OF_FRAME, OCCLUDED, VALID;
925
+ // the vector is zero for MISS and BEHIND and the geometric flow otherwise
926
+ void main(){
927
+ const uvec2 pixel_id = gl_GlobalInvocationID.xy;
928
+ const PixelLaunchContext ctx = pixel_launch_context(pixel_id);
929
+ if(!ctx.valid){
930
+ return;
931
+ }
932
+ Camera cam = SOURCE_PREVIOUS ? cameras_previous[ctx.cam_idx] : cameras_close[ctx.cam_idx];
933
+ Camera cam_target = SOURCE_PREVIOUS ? cameras_close[ctx.cam_idx] : cameras_previous[ctx.cam_idx];
934
+ const uint source_first_overlay_instance = params.first_overlay_instance + (SOURCE_PREVIOUS ? params.num_overlay_slots : 0u);
935
+ const uint delta_slab = SOURCE_PREVIOUS ? params.num_overlay_slots * 12u : 0u;
936
+ const vec2 screen = (vec2(ctx.local_x, ctx.local_y) + vec2(0.5, 0.5)) / vec2(params.cam_width, params.cam_height);
937
+ const vec3 direction = normalize(camera_dir_00(cam) + screen.x * camera_dir_du(cam) + screen.y * camera_dir_dv(cam));
938
+ Hit hit = intersect_composed_instant(SOURCE_PREVIOUS, ctx.cam_idx, camera_pos(cam), direction, 0.0, 1e30, false);
939
+ vec2 flow = vec2(0.0);
940
+ uint status = FLOW_STATUS_MISS;
941
+ if(hit.valid){
942
+ vec3 point = camera_pos(cam) + direction * hit.t;
943
+ if(fc_overlay_count > 0 && uint(hit.instance_id) >= source_first_overlay_instance){
944
+ point = apply_flow_delta(delta_slab + (uint(hit.instance_id) - source_first_overlay_instance) * 12u, point);
945
+ }
946
+ float target_x;
947
+ float target_y;
948
+ if(!project_camera(cam_target, point, target_x, target_y)){
949
+ status = FLOW_STATUS_BEHIND;
950
+ }
951
+ else{
952
+ flow = vec2(target_x * float(params.cam_width) - (float(ctx.local_x) + 0.5),
953
+ target_y * float(params.cam_height) - (float(ctx.local_y) + 0.5));
954
+ if(target_x < 0.0 || target_x >= 1.0 || target_y < 0.0 || target_y >= 1.0){
955
+ status = FLOW_STATUS_OUT_OF_FRAME;
956
+ }
957
+ else{
958
+ const vec3 to_point = point - camera_pos(cam_target);
959
+ const float len = length(to_point);
960
+ const vec3 visibility_direction = to_point * (1.0 / len);
961
+ Hit occluder = intersect_composed_instant(!SOURCE_PREVIOUS, ctx.cam_idx, camera_pos(cam_target), visibility_direction, 0.0, len * (1.0 - FLOW_VISIBILITY_EPSILON), true);
962
+ status = occluder.valid ? FLOW_STATUS_OCCLUDED : FLOW_STATUS_VALID;
963
+ }
964
+ }
965
+ }
966
+ flow_out[ctx.fb_offset * 2 + 0] = flow.x;
967
+ flow_out[ctx.fb_offset * 2 + 1] = flow.y;
968
+ flow_status_out[ctx.fb_offset] = status;
969
+ }
970
+ #endif