hyperverse 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hyperdrone/__init__.py +31 -0
- hyperdrone/_native/cmake/hyperdrone_jit.cmake +65 -0
- hyperdrone/_native/common/bindings.h +39 -0
- hyperdrone/_native/common/cuda_staging.h +75 -0
- hyperdrone/_native/common/jit_host.h +69 -0
- hyperdrone/_native/common/models.h +24 -0
- hyperdrone/_native/dynamics/CMakeLists.txt +61 -0
- hyperdrone/_native/dynamics/host.cpp +193 -0
- hyperdrone/_native/dynamics/iface.h +76 -0
- hyperdrone/_native/dynamics/impl.cpp +608 -0
- hyperdrone/_native/env/CMakeLists.txt +71 -0
- hyperdrone/_native/env/environment.cpp +124 -0
- hyperdrone/_native/env/environment.h +407 -0
- hyperdrone/_native/env/rotorcraft_bindings.cpp +51 -0
- hyperdrone/_native/render/CMakeLists.txt +94 -0
- hyperdrone/_native/render/renderer.cpp +962 -0
- hyperdrone/_native/render/rig_bindings.h +151 -0
- hyperdrone/_native/render/scene_bindings.cpp +466 -0
- hyperdrone/_vendor/rl-tools/CMakeLists.txt +205 -0
- hyperdrone/_vendor/rl-tools/LICENSE +21 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/all.cmake +34 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/git-diff.cmake +100 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/git-hash.cmake +24 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/summary.cmake +64 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier0-compiler.cmake +18 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier1-blas.cmake +51 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier2-json-hdf5-zlib.cmake +81 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier3-tensorboard.cmake +25 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier4-cuda.cmake +42 -0
- hyperdrone/_vendor/rl-tools/cmake/autodetect/tier5-cli11.cmake +24 -0
- hyperdrone/_vendor/rl-tools/cmake/dependencies/assimp.cmake +19 -0
- hyperdrone/_vendor/rl-tools/cmake/legacy_flags.cmake +33 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/assimp.cmake +30 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/googletest.cmake +20 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/metal.cmake +25 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/mujoco.cmake +89 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/optix.cmake +25 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/raytracing.cmake +105 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/raytracing_generic.cmake +2 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/vulkan.cmake +4 -0
- hyperdrone/_vendor/rl-tools/cmake/optional/webgpu.cmake +24 -0
- hyperdrone/_vendor/rl-tools/cmake/scripts/embed_text.cmake +7 -0
- hyperdrone/_vendor/rl-tools/cmake/scripts/generate-git-snapshot.cmake +138 -0
- hyperdrone/_vendor/rl-tools/include/conta/conta.h +1161 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/matrix.h +143 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_arm.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu.h +314 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_accelerate.h +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_blas.h +67 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_mkl.h +38 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cpu_openblas.h +34 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_cuda.h +289 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_dummy.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_esp32.h +29 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_generic.h +944 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/operations_wasm32.h +13 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/matrix/persist_code.h +136 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_arm.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu.h +94 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_accelerate.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_blas.h +115 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_mkl.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cpu_openblas.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_cuda.h +713 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/operations_generic.h +1356 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/persist_code.h +130 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/containers/tensor/tensor.h +490 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/arm.h +91 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu.h +209 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_accelerate.h +23 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_blas.h +21 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_mkl.h +45 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_openblas.h +56 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cpu_tensorboard.h +34 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cuda.h +415 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/devices.h +97 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/dummy.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/esp32.h +85 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/generic.h +0 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/wasm32.h +59 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/model.h +218 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/operations_generic.h +769 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/persist.h +278 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter.h +100 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/policy_adapter_persist.h +52 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/dyn/tensor_operations_generic.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_backend.h +117 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/c_interface.h +36 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/l2f.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_dyn.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/applications/l2f/operations_generic.h +268 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_backend.h +31 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/debugging_pool/c_interface.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_backend.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/c_interface.h +50 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/executor.h +133 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/helper.h +109 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/inference/executor/operations_generic.h +219 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arduino.h +117 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_arm.h +56 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu.h +93 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cpu_tensorboard.h +151 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_cuda.h +65 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_dummy.h +45 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/logging/operations_wasm32.h +56 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_arm.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cpu.h +138 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_cuda.h +380 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_dummy.h +93 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_esp32.h +92 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_generic.h +295 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/math/operations_wasm32.h +230 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/mode/mode.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/activation_functions.h +113 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/capability.h +61 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/capability/persist_code.h +31 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/group.h +99 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/layer.h +122 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_cuda.h +64 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/operations_generic.h +186 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/avg_pool2d/persist.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/layer.h +300 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cpu_mkl.h +590 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_cuda.h +809 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/operations_generic.h +1219 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist.h +99 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/conv2d/persist_code.h +170 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/layer.h +145 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/dsp.h +63 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_arm/opt.h +173 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu.h +13 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_accelerate.h +66 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_blas.h +282 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_mkl.h +66 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cpu_openblas.h +65 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_cuda.h +519 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_dummy.h +8 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/dsp.h +58 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_esp32/opt.h +167 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/operations_generic.h +429 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist.h +62 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_code.h +178 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dense/persist_common.h +59 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/layer.h +188 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_cuda.h +356 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/operations_generic.h +536 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/dynamic_conv2d/persist.h +32 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/layer.h +119 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/operations_generic.h +223 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/embedding/persist.h +46 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/layer.h +121 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/operations_generic.h +154 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist.h +44 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/flatten/persist_code.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_cuda.h +602 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/helper_operations_generic.h +251 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/layer.h +206 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/operations_generic.h +889 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist.h +75 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/gru/persist_code.h +199 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/layers.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/layer.h +143 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_cuda.h +80 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/operations_generic.h +216 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/max_pool2d/persist.h +39 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_accelerate.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_blas.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_mkl.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cpu_openblas.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_cuda.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_dummy.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/operations_generic.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/layer.h +223 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_cuda.h +138 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/operations_generic.h +446 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/resnet_block/persist.h +70 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/layer.h +154 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_cuda.h +119 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/operations_generic.h +502 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist.h +50 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/sample_and_squash/persist_code.h +173 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/layer.h +116 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_cuda.h +156 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/operations_generic.h +295 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist.h +83 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/standardize/persist_code.h +163 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/layer.h +123 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/operations_generic.h +272 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/td3_sampling/persist_code.h +164 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/layer.h +122 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_cuda.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/operations_generic.h +160 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist.h +47 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/unflatten/persist_code.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/layer.h +132 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_cuda.h +141 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/layers/upsample2d/operations_generic.h +230 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/categorical_cross_entropy/operations_generic.h +102 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_cuda.h +97 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/mse/operations_generic.h +101 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/loss_functions/operations_generic.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/nn.h +14 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_accelerate.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_blas.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mkl.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_mux.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cpu_openblas.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_cuda.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_dummy.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/operations_generic.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/adam.h +121 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_cuda.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/operations_generic.h +150 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist.h +39 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/instance/persist_code.h +80 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_cuda.h +85 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/operations_generic.h +109 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/adam/persist.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/instance/operations_generic.h +107 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/lamb.h +40 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/lamb/operations_generic.h +68 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/optimizers.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_cuda.h +85 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/operations_generic.h +140 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist.h +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/instance/persist_code.h +72 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_cuda.h +49 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/operations_generic.h +50 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/sgd/sgd.h +92 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/optimizers/update.h +54 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_cuda.h +0 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/operations_generic.h +98 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/parameters.h +79 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist.h +34 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/parameters/persist_code.h +136 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn/persist_code.h +27 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/behaviors/skip_parameter_gradients.h +65 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/README.md +107 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/model.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/group/persist_code.h +77 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/network.h +174 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_cuda.h +10 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_dummy.h +8 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/operations_generic.h +407 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist.h +56 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp/persist_code.h +137 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/network.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/operations_generic.h +86 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist.h +43 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/mlp_unconditional_stddev/persist_code.h +142 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/models.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/model.h +148 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/operations_generic.h +288 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/multi_agent_wrapper/persist_code.h +71 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cpu.h +0 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_cuda.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_dummy.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/operations_generic.h +4 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/model.h +290 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_cuda.h +174 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/operations_generic.h +623 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist.h +80 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/parallel/persist_code.h +200 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/persist_code.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/model.h +43 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/random_uniform/operations_generic.h +73 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/resnet/resnet.h +97 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/model.h +270 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/operations_generic.h +625 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist.h +99 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/nn_models/sequential/persist_code.h +115 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/bf16.h +28 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/categories.h +22 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/persist_code.h +54 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/numeric_types/policy.h +48 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_1.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_2.h +14 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm/group_3.h +14 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/arm.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_1.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu/group_3.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_1.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate/group_3.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_accelerate.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_1.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl/group_3.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mkl.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_mux.h +148 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_1.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas/group_3.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_openblas.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_1.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard/group_3.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cpu_tensorboard.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_1.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda/group_3.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/cuda.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_1.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy/group_3.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/dummy.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_1.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32/group_3.h +13 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/esp32.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_1.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_2.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32/group_3.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/operations/wasm32.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/hdf5.h +54 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/hdf5/operations_cpu.h +419 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/io.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_cpu.h +58 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_generic.h +620 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/operations_posix.h +63 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/backends/tar/tar.h +74 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/persist/code.h +38 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_arm.h +39 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cpu.h +81 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_cuda.h +169 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_dummy.h +72 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_esp32.h +45 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic.h +133 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_generic_array.h +73 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/operations_wasm32.h +57 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/random/persist.h +77 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/camera.h +105 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/cache.h +26 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/free_space.h +60 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/annotations/operations_cpu.h +408 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/operations_cpu.h +1313 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/operations_cpu.h +96 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/conversion.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/operations_cpu.h +141 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/procthor.h +40 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_cpu.h +733 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_generic.h +1299 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/context.h +198 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/device_source.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/operations_cpu.h +1140 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device.h +233 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device_impl.h +1084 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/operations_cuda.h +1808 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/overlay_accel.h +64 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/specialization.h +38 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/context.h +248 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/device_source.h +48 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/operations_cpu.h +2056 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/bvh_sah.h +182 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/context.h +303 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/device_source.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/webgpu/operations_cpu.h +1455 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_common.h +916 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_mux.h +31 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_post.h +85 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/renderer.h +478 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/save_cpu.h +315 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/scene.h +44 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/transforms_generic.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/types.h +45 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_cpu.h +119 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/operations_generic.h +121 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/rig/rig.h +70 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/scene.h +134 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/segmentation_cpu.h +145 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/transforms.h +204 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/types.h +55 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/algorithms.h +6 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_cpu_mkl.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/operations_generic.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/config.h +243 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_cuda.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/operations_generic.h +205 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/persist.h +109 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/loop/core/state.h +51 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/mixed_imitation.h +63 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_cuda.h +190 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic.h +332 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/operations_generic_mixed_imitation.h +81 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/persist.h +28 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/ppo/ppo.h +105 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_gru.h +84 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/approximators_mlp.h +61 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/config.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/operations_generic.h +193 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/loop/core/state.h +52 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_accelerate.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mkl.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cpu_mux.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_cuda.h +131 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/operations_generic.h +580 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/sac/sac.h +151 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_gru.h +72 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/approximators_mlp.h +54 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/config.h +107 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/operations_generic.h +174 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/loop/core/state.h +46 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_accelerate.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mkl.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cpu_mux.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_cuda.h +117 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/operations_generic.h +359 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/algorithms/td3/td3.h +141 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/components.h +4 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/off_policy_runner.h +225 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu.h +95 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_accelerate.h +21 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cpu_mkl.h +21 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_cuda.h +237 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic.h +498 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/off_policy_runner/operations_generic_per_env.h +112 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/collection.h +57 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/on_policy_runner.h +122 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_accelerate.h +8 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mkl.h +8 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cpu_mux.h +12 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_cuda.h +183 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic.h +366 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/operations_generic_common.h +74 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/on_policy_runner/persist.h +47 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_accelerate.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_cpu_mkl.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/operations_generic.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_cpu.h +9 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/operations_generic.h +123 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/persist.h +57 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/replay_buffer/replay_buffer.h +93 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/operations_generic.h +76 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/persist.h +31 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/components/running_normalizer/running_normalizer.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/operations_generic.h +58 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/operations_generic.h +28 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/scale_observations/wrapper.h +26 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environment_wrappers/wrappers.h +29 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/acrobot.h +88 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_cpu.h +152 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/acrobot/operations_generic.h +202 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/environment.h +40 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_cuda.h +204 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/operations_generic_common.h +26 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/batch/persist.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/car.h +119 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_cpu.h +110 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_generic.h +206 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/operations_json.h +59 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/track.h +23 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/car/ui.h +189 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/environments.h +28 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/environment.h +87 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_cpu.h +212 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/flag/operations_generic.h +215 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/observation.h +75 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cpu.h +938 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cuda.h +380 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/pose.h +228 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/presets.h +148 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_cpu.h +189 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_generic.h +32 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/rig.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/moving_gate.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cpu.h +262 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cuda.h +254 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cpu.h +224 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cuda.h +218 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_generic_position_hold.h +128 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/position_hold.h +22 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/target_frame.h +77 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/autopilot.h +61 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/baseline.h +46 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/calibration.h +62 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/metrics.h +101 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/operations_cpu.h +389 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/visual_inertial_localization.h +123 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/world.h +318 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/inertial_velocity.h +27 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/metrics.h +266 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/multirotor.h +1138 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_cpu.h +2246 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/05_state_is_nan.h +148 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/10_sample_initial_parameters.h +228 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/20_initial_state.h +208 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/30_sample_initial_state.h +300 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/35_get_desired_state.h +63 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/40_observe.h +637 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/50_state_algebra.h +57 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/60_dynamics.h +134 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/70_post_integration.h +368 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic/80_abs_diff.h +312 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic.h +367 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_generic_inertial_velocity.h +44 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_helper_generic.h +43 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic.h +70 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/operations_multitask_generic_forward.h +24 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/default.h +209 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/arpl.h +112 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie.h +127 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/crazyflie_openmv.h +119 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/flightmare.h +111 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/fs.h +113 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/mrs.h +110 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft.h +117 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/soft_rigid.h +118 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500.h +88 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_real.h +88 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/dynamics/x500_sim.h +114 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/init/default.h +56 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/registry.h +96 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/default.h +64 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/reward_functions.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/operations_generic.h +202 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/reward_functions/squared/squared.h +52 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/termination/default.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/lissajous.h +72 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/parameters/trajectories/trajectory.h +78 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist.h +21 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/persist_code.h +53 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/quaternion_helper.h +103 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/l2f/ui.h +180 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/environment.h +69 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_cpu.h +46 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/memory/operations_generic.h +78 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/README.MD +5 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ant.h +77 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/model.h +415 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/operations_cpu.h +162 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/persist.h +86 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/ant/ui.h +141 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/mujoco/mujoco.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/bottleneck.h +113 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_cpu.h +289 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/bottleneck/operations_generic.h +495 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/multi_agent/environments.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/observation.h +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_cpu.h +2 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/operations_generic.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_cpu.h +146 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/operations_generic.h +262 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/pendulum.h +197 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui.h +97 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/pendulum/ui_xeus.h +124 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_cpu.h +426 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/operations_generic.h +424 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/reacher/reacher.h +137 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/loop.h +15 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/config.h +28 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/operations_cpu.h +233 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/persist.h +30 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/checkpoint/state.h +21 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/config.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/operations_generic.h +47 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/persist.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/curriculum/state.h +17 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/config.h +47 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/operations_generic.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/persist.h +40 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/evaluation/state.h +36 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/config.h +22 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/operations_cpu.h +44 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/persist.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/extrack/state.h +26 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/config.h +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/operations_cpu.h +113 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/persist.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/nn_analytics/state.h +24 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/config.h +43 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/operations_cpu.h +190 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/persist.h +30 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/save_trajectories/state.h +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/steps.h +4 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/config.h +27 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/operations_cpu.h +52 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/persist.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/loop/steps/timing/state.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/operations_generic.h +3 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/rl.h +5 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/evaluation.h +106 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_cpu.h +48 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/evaluation/operations_generic.h +275 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation.h +269 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/utils/validation_analysis.h +85 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl_tools.h +80 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/client.h +50 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_boost.h +92 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_cpu.h +174 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/client/operations_websocket.h +208 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/ui_server/server.h +448 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/universe.h +4 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/declarations_cpu.h +13 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_arm.h +29 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cpu.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cuda.h +33 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_dummy.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_esp32.h +20 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_generic.h +19 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_wasm32.h +18 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_cpu.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/env/operations_generic.h +14 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/extrack.h +129 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/extrack/operations_cpu.h +588 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/integrators.h +103 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/memcpy.h +16 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/operations_generic.h +48 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/tuple/tuple.h +147 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/typing.h +122 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/generic/vector_operations.h +172 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_cuda.h +53 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/polyak/operations_generic.h +93 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/string/operations_generic.h +201 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/zlib/operations_cpu.h +45 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/version.h +28 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/CMakeLists.txt +15 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/README.md +193 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/CMakeLists.txt +11 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/CMakeLists.txt +17 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/generic/freestanding_check.cpp +135 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/CMakeLists.txt +31 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/device.metal +953 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/metal/metal_cpp_impl.cpp +6 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/CMakeLists.txt +51 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/device.cu +1 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/optix/overlay_accel.cu +311 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/CMakeLists.txt +37 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device.comp +1013 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/vulkan/device_spirv.cpp +44 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/CMakeLists.txt +31 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/backends/webgpu/device.wgsl +1448 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/CMakeLists.txt +110 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/README.md +55 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark.cpp +180 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/benchmark_dynamic.cpp +491 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/rig.cpp +119 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.cpp +1130 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_config.h.in +13 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/camera_orbit.h +51 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/CMakeLists.txt +199 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/antialiasing.cpp +214 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone.cpp +320 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/drone_device.cu +359 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/environment.h +96 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/environment/operations_cpu.h +263 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/example.cpp +273 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/fixed_pose.cpp +221 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/flow.cpp +120 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/interactive.cpp +1015 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/make_drone_glb.py +172 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal.cpp +82 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/minimal_overlay.cpp +137 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/motion_blur.cpp +232 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace.cpp +1829 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/render_pose_trace_motion_blur.cpp +647 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/assimp/CMakeLists.txt +8 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/build.sh +80 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/example/web/drone_web.cpp +234 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/CMakeLists.txt +147 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/README.md +15 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/job.sbatch +28 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model.h +260 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_config.h +24 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_forward_cuda.h +397 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_operations.h +418 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_persist.h +45 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/model_student.h +70 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.cpp +222 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/scene.h +68 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/.gitignore +4 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/CMakeLists.txt +4 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info.plist +24 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Info_ios.plist +36 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/CameraManager.swift +120 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/ContentView.swift +703 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/DatasetRecorder.swift +285 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/Sources/YawPredictorApp.swift +25 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/YawPredictor.entitlements +8 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build.sh +66 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/build_ios.sh +133 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/generate.sh +6 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/h5_to_tar.cpp +82 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.cpp +166 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/inference.h +26 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/project.yml +30 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/swift_app/test_tar_vs_hdf5.cpp +173 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_cuda.cu +699 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_dataset_overlay.cpp +475 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_distill_cuda.cu +995 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_eval.cu +457 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_real_world_eval.cpp +660 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/yaw_prediction/yaw_prediction_viewer.cu +443 -0
- hyperdrone/cuda/__init__.py +78 -0
- hyperdrone/dynamics/__init__.py +22 -0
- hyperdrone/dynamics/_component.py +35 -0
- hyperdrone/dynamics/_config.py +48 -0
- hyperdrone/dynamics/_sim.py +195 -0
- hyperdrone/env/__init__.py +17 -0
- hyperdrone/env/_multi_environment.py +407 -0
- hyperdrone/env/_rotorcraft.py +31 -0
- hyperdrone/examples/.gitignore +2 -0
- hyperdrone/examples/Benchmark.ipynb +102 -0
- hyperdrone/examples/HyperDrone.ipynb +514 -0
- hyperdrone/examples/Orbiter.ipynb +462 -0
- hyperdrone/examples/Renderer.ipynb +173 -0
- hyperdrone/examples/__init__.py +16 -0
- hyperdrone/examples/articulation.py +55 -0
- hyperdrone/examples/benchmark.py +236 -0
- hyperdrone/examples/benchmark_minimal.py +65 -0
- hyperdrone/examples/data.py +70 -0
- hyperdrone/examples/drone_flythrough.py +169 -0
- hyperdrone/examples/hyperdrone_videos/my_world_preview.h +17 -0
- hyperdrone/examples/my_world.h +17 -0
- hyperdrone/examples/render_procthor.py +41 -0
- hyperdrone/examples/visual_inertial_localization.py +159 -0
- hyperdrone/gym/__init__.py +63 -0
- hyperdrone/jit/__init__.py +129 -0
- hyperdrone/jit/_build.py +113 -0
- hyperdrone/jit/_lock.py +23 -0
- hyperdrone/jit/_patches.py +99 -0
- hyperdrone/jit/_toolchain.py +17 -0
- hyperdrone/jit/_workspace.py +68 -0
- hyperdrone/render/__init__.py +53 -0
- hyperdrone/render/_component.py +51 -0
- hyperdrone/render/_config.py +92 -0
- hyperdrone/render/_renderer.py +447 -0
- hyperdrone/render/_rig.py +136 -0
- hyperdrone/render/_sampling.py +69 -0
- hyperdrone/render/_scene.py +36 -0
- hyperverse-0.0.1.dist-info/METADATA +370 -0
- hyperverse-0.0.1.dist-info/RECORD +746 -0
- hyperverse-0.0.1.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,916 @@
|
|
|
1
|
+
#include "../../version.h"
|
|
2
|
+
#include "../../rl_tools.h"
|
|
3
|
+
#if (defined(RL_TOOLS_DISABLE_INCLUDE_GUARDS) || !defined(RL_TOOLS_RENDERING_RAYTRACING_OPERATIONS_CPU_COMMON_H)) && (RL_TOOLS_USE_THIS_VERSION == 1)
|
|
4
|
+
#pragma once
|
|
5
|
+
#define RL_TOOLS_RENDERING_RAYTRACING_OPERATIONS_CPU_COMMON_H
|
|
6
|
+
|
|
7
|
+
#include "renderer.h"
|
|
8
|
+
#include "../segmentation_cpu.h"
|
|
9
|
+
#include "transforms_generic.h"
|
|
10
|
+
|
|
11
|
+
#include <vector>
|
|
12
|
+
#include <limits>
|
|
13
|
+
#include <algorithm>
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <string>
|
|
16
|
+
#include <map>
|
|
17
|
+
#include <chrono>
|
|
18
|
+
#include <cmath>
|
|
19
|
+
#include <cstring>
|
|
20
|
+
#include <cstdio>
|
|
21
|
+
#include <cstdint>
|
|
22
|
+
#include <fstream>
|
|
23
|
+
#include <iostream>
|
|
24
|
+
|
|
25
|
+
#define RL_TOOLS_RENDERING_RAYTRACING_LOG(message) do { std::cout << "\033[0;34m" << "#rl_tools::rendering::raytracing: " << message << "\033[0m" << std::endl; } while(false)
|
|
26
|
+
#define RL_TOOLS_RENDERING_RAYTRACING_LOG_ERR(message) do { std::cerr << "\033[0;31m" << "#rl_tools::rendering::raytracing: " << message << "\033[0m" << std::endl; } while(false)
|
|
27
|
+
|
|
28
|
+
#ifndef RL_TOOLS_RENDERING_RAYTRACING_DISABLE_PROBE_RAYS
|
|
29
|
+
#define RL_TOOLS_RENDERING_RAYTRACING_DISABLE_PROBE_RAYS 0
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
RL_TOOLS_NAMESPACE_WRAPPER_START
|
|
33
|
+
namespace rl_tools {
|
|
34
|
+
template <typename SPEC, typename DEVICE>
|
|
35
|
+
void validate_semantic_segmentation(DEVICE& device, const rendering::Scene& scene, const rendering::AssetPool& pool){
|
|
36
|
+
if constexpr(SPEC::SEMANTIC_SEGMENTATION){
|
|
37
|
+
if constexpr(SPEC::ENABLE_OVERLAYS){
|
|
38
|
+
validate_semantic_segmentation(device, scene, pool);
|
|
39
|
+
}
|
|
40
|
+
else{
|
|
41
|
+
validate_semantic_segmentation(device, segmentation_objects(device, scene));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// backend-generic launch+sync composite, defined in operations_cpu_post.h; declared here so
|
|
47
|
+
// backend-internal callers (init) resolve it before the definition is included
|
|
48
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
49
|
+
void update(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer);
|
|
50
|
+
|
|
51
|
+
namespace rendering::raytracing::detail{
|
|
52
|
+
template <typename BACKEND>
|
|
53
|
+
void announce_backend(){
|
|
54
|
+
std::fprintf(
|
|
55
|
+
stderr,
|
|
56
|
+
"#rl_tools::rendering::raytracing: backend=%s\n",
|
|
57
|
+
rendering::raytracing::backends::name<BACKEND>()
|
|
58
|
+
);
|
|
59
|
+
std::fflush(stderr);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
template <typename SPEC, typename BACKEND>
|
|
63
|
+
void announce_backend(const rendering::raytracing::Renderer<SPEC, BACKEND>&){
|
|
64
|
+
announce_backend<BACKEND>();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// =========================================================================
|
|
69
|
+
// Default cube geometry
|
|
70
|
+
// =========================================================================
|
|
71
|
+
namespace rendering::raytracing::constants{
|
|
72
|
+
const int NUM_VERTICES = 8;
|
|
73
|
+
const float default_vertices[8][3] = {
|
|
74
|
+
{ -1.f,-1.f,-1.f },
|
|
75
|
+
{ +1.f,-1.f,-1.f },
|
|
76
|
+
{ -1.f,+1.f,-1.f },
|
|
77
|
+
{ +1.f,+1.f,-1.f },
|
|
78
|
+
{ -1.f,-1.f,+1.f },
|
|
79
|
+
{ +1.f,-1.f,+1.f },
|
|
80
|
+
{ -1.f,+1.f,+1.f },
|
|
81
|
+
{ +1.f,+1.f,+1.f }
|
|
82
|
+
};
|
|
83
|
+
const int NUM_INDICES = 12;
|
|
84
|
+
const int default_indices[12][3] = {
|
|
85
|
+
{ 0,1,3 }, { 2,3,0 },
|
|
86
|
+
{ 5,7,6 }, { 5,6,4 },
|
|
87
|
+
{ 0,4,5 }, { 0,5,1 },
|
|
88
|
+
{ 2,3,7 }, { 2,7,6 },
|
|
89
|
+
{ 1,5,7 }, { 1,7,3 },
|
|
90
|
+
{ 4,0,2 }, { 4,2,6 }
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
namespace rendering::raytracing::detail{
|
|
95
|
+
|
|
96
|
+
inline constexpr float IDENTITY_TRANSFORM[12] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0};
|
|
97
|
+
|
|
98
|
+
// Host staging of the overlay transform inputs. The verbs write the staging mirrors and mark
|
|
99
|
+
// rows pending; update() publishes exactly the pending rows into the resident tensors in the
|
|
100
|
+
// backend's memory domain and clears the marks. Producers write the resident tensors
|
|
101
|
+
// directly and are never touched by the publish — a row belongs to whoever wrote it last.
|
|
102
|
+
template <typename SPEC, typename BACKEND>
|
|
103
|
+
void malloc_overlay_staging(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
104
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
105
|
+
renderer.transforms_staging.assign(SLOTS * 12, 0.0f);
|
|
106
|
+
if constexpr (SPEC::HAS_FLOW_OVERLAYS){
|
|
107
|
+
renderer.transforms_previous_staging.assign(SLOTS * 12, 0.0f);
|
|
108
|
+
}
|
|
109
|
+
if constexpr (SPEC::ENABLE_DYNAMIC_MOTION_BLUR){
|
|
110
|
+
renderer.transforms_motion_staging.assign((size_t)SPEC::MOTION_BLUR_SAMPLES * SLOTS * 12, 0.0f);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// one slot's current pose; under dynamic blur the same pose in every motion sample (sharp)
|
|
115
|
+
template <typename SPEC, typename BACKEND>
|
|
116
|
+
void stage_transform(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, size_t slot, const float pose[12]){
|
|
117
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
118
|
+
std::memcpy(renderer.transforms_staging.data() + slot * 12, pose, 12 * sizeof(float));
|
|
119
|
+
renderer.transforms_pending[slot] = true;
|
|
120
|
+
if constexpr (SPEC::ENABLE_DYNAMIC_MOTION_BLUR){
|
|
121
|
+
for(typename SPEC::TI sample = 0; sample < SPEC::MOTION_BLUR_SAMPLES; sample++){
|
|
122
|
+
std::memcpy(renderer.transforms_motion_staging.data() + (sample * SLOTS + slot) * 12, pose, 12 * sizeof(float));
|
|
123
|
+
}
|
|
124
|
+
renderer.transforms_motion_pending[slot] = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// one slot's motion: MOTION_BLUR_SAMPLES poses sample_stride floats apart, and the
|
|
129
|
+
// shutter-close pose as the steady state
|
|
130
|
+
template <typename SPEC, typename BACKEND>
|
|
131
|
+
void stage_motion(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, size_t slot, const float* samples, size_t sample_stride, const float close[12]){
|
|
132
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
133
|
+
std::memcpy(renderer.transforms_staging.data() + slot * 12, close, 12 * sizeof(float));
|
|
134
|
+
renderer.transforms_pending[slot] = true;
|
|
135
|
+
for(typename SPEC::TI sample = 0; sample < SPEC::MOTION_BLUR_SAMPLES; sample++){
|
|
136
|
+
std::memcpy(renderer.transforms_motion_staging.data() + (sample * SLOTS + slot) * 12, samples + sample * sample_stride, 12 * sizeof(float));
|
|
137
|
+
}
|
|
138
|
+
renderer.transforms_motion_pending[slot] = true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
template <typename SPEC, typename BACKEND>
|
|
142
|
+
void stage_previous(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, size_t slot, const float pose[12]){
|
|
143
|
+
std::memcpy(renderer.transforms_previous_staging.data() + slot * 12, pose, 12 * sizeof(float));
|
|
144
|
+
renderer.transforms_previous_pending[slot] = true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// publish for backends whose resident tensors are host-addressable (after their in-flight
|
|
148
|
+
// wait); OptiX scatters the same pending rows on its stream (optix::publish_rows)
|
|
149
|
+
template <typename SPEC, typename BACKEND>
|
|
150
|
+
void publish_overlay_transforms(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
151
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
152
|
+
for(size_t slot = 0; slot < SLOTS; slot++){
|
|
153
|
+
if(renderer.transforms_pending[slot]){
|
|
154
|
+
std::memcpy(data(renderer.transforms) + slot * 12, renderer.transforms_staging.data() + slot * 12, 12 * sizeof(float));
|
|
155
|
+
renderer.transforms_pending[slot] = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if constexpr (SPEC::HAS_FLOW_OVERLAYS){
|
|
159
|
+
for(size_t slot = 0; slot < SLOTS; slot++){
|
|
160
|
+
if(renderer.transforms_previous_pending[slot]){
|
|
161
|
+
std::memcpy(data(renderer.transforms_previous) + slot * 12, renderer.transforms_previous_staging.data() + slot * 12, 12 * sizeof(float));
|
|
162
|
+
renderer.transforms_previous_pending[slot] = false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if constexpr (SPEC::ENABLE_DYNAMIC_MOTION_BLUR){
|
|
167
|
+
for(size_t slot = 0; slot < SLOTS; slot++){
|
|
168
|
+
if(renderer.transforms_motion_pending[slot]){
|
|
169
|
+
for(typename SPEC::TI sample = 0; sample < SPEC::MOTION_BLUR_SAMPLES; sample++){
|
|
170
|
+
const size_t offset = (sample * SLOTS + slot) * 12;
|
|
171
|
+
std::memcpy(data(renderer.transforms_motion) + offset, renderer.transforms_motion_staging.data() + offset, 12 * sizeof(float));
|
|
172
|
+
}
|
|
173
|
+
renderer.transforms_motion_pending[slot] = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// host half of advance_flow: a row the host wrote but has not yet published becomes the
|
|
180
|
+
// previous instant through its staging mirror; the backend copies the resident rows
|
|
181
|
+
template <typename SPEC, typename BACKEND>
|
|
182
|
+
void advance_flow_staging(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
183
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
184
|
+
for(size_t slot = 0; slot < SLOTS; slot++){
|
|
185
|
+
if(renderer.transforms_pending[slot]){
|
|
186
|
+
stage_previous(renderer, slot, renderer.transforms_staging.data() + slot * 12);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
192
|
+
void assert_placement(DEVICE& device, const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement){
|
|
193
|
+
utils::assert_exit(device, overlay.index < SPEC::NUM_OVERLAYS, "overlay verb: overlay index out of range");
|
|
194
|
+
utils::assert_exit(device, placement.first_slot + placement.num_parts <= SPEC::MAX_OVERLAY_INSTANCES, "overlay verb: placement out of range");
|
|
195
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
196
|
+
utils::assert_exit(device, renderer.overlays[overlay.index].slots[placement.first_slot + part].active, "overlay verb: placement is not spawned");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// per-slot flow delta table [2][SLOTS][12] from two transforms-layout slabs: slab 0 carries a
|
|
201
|
+
// current-instant point to the previous instant (world_previous ∘ world_current⁻¹, the
|
|
202
|
+
// backward pass), slab 1 the inverse (forward pass); identity for inactive slots. Backends
|
|
203
|
+
// with host-resident tensors call it in update() after the flush; OptiX runs the same
|
|
204
|
+
// composition on-device (overlay_accel_compose_flow_deltas).
|
|
205
|
+
template <typename SPEC, typename BACKEND>
|
|
206
|
+
void compose_flow_deltas(const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, const float* current_slab, const float* previous_slab, float* deltas){
|
|
207
|
+
using TI = typename SPEC::TI;
|
|
208
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
209
|
+
for(TI overlay = 0; overlay < SPEC::NUM_OVERLAYS; overlay++){
|
|
210
|
+
for(TI slot = 0; slot < SPEC::MAX_OVERLAY_INSTANCES; slot++){
|
|
211
|
+
const size_t index = (size_t)overlay * SPEC::MAX_OVERLAY_INSTANCES + slot;
|
|
212
|
+
float* backward = deltas + index * 12;
|
|
213
|
+
float* forward = deltas + (SLOTS + index) * 12;
|
|
214
|
+
if(!renderer.overlays[overlay].slots[slot].active){
|
|
215
|
+
std::memcpy(backward, IDENTITY_TRANSFORM, 12 * sizeof(float));
|
|
216
|
+
std::memcpy(forward, IDENTITY_TRANSFORM, 12 * sizeof(float));
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const float* world_current = current_slab + index * 12;
|
|
220
|
+
const float* world_previous = previous_slab + index * 12;
|
|
221
|
+
float world_current_inverse[12], world_previous_inverse[12];
|
|
222
|
+
invert_transform(world_current, world_current_inverse);
|
|
223
|
+
invert_transform(world_previous, world_previous_inverse);
|
|
224
|
+
compose_transforms(world_previous, world_current_inverse, backward);
|
|
225
|
+
compose_transforms(world_current, world_previous_inverse, forward);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// flattens the asset pool for overlay spawns: appends pool objects to the combined object
|
|
231
|
+
// list and records per-part global object indices + local transforms on the renderer
|
|
232
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
233
|
+
void register_pool_assets(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, const rendering::raytracing::AssetPool& pool, std::vector<const rendering::raytracing::Object*>& all_objects){
|
|
234
|
+
using TI = typename SPEC::TI;
|
|
235
|
+
renderer.assets.clear();
|
|
236
|
+
renderer.asset_part_objects.clear();
|
|
237
|
+
renderer.asset_part_transforms.clear();
|
|
238
|
+
for(const auto& assembly : pool.assemblies){
|
|
239
|
+
typename rendering::raytracing::Renderer<SPEC, BACKEND>::AssetRecord record;
|
|
240
|
+
record.first_part = (TI)renderer.asset_part_objects.size();
|
|
241
|
+
record.num_parts = (TI)assembly.parts.size();
|
|
242
|
+
utils::assert_exit(device, record.num_parts <= SPEC::MAX_OVERLAY_INSTANCES, "asset has more parts than the overlay capacity");
|
|
243
|
+
const TI object_base = (TI)all_objects.size();
|
|
244
|
+
for(const auto& object : assembly.objects){
|
|
245
|
+
all_objects.push_back(&object);
|
|
246
|
+
}
|
|
247
|
+
for(const auto& part : assembly.parts){
|
|
248
|
+
renderer.asset_part_objects.push_back(object_base + (TI)part.object);
|
|
249
|
+
renderer.asset_part_transforms.insert(renderer.asset_part_transforms.end(), part.transform, part.transform + 12);
|
|
250
|
+
}
|
|
251
|
+
renderer.assets.push_back(record);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Deterministic first-fit is a contract, not an implementation detail: the chosen slot defines
|
|
256
|
+
// the global instance id (segmentation output), which must be reproducible across runs and
|
|
257
|
+
// identical across backends. Do not replace with a free-list or best-fit strategy.
|
|
258
|
+
template <typename SPEC, typename BACKEND>
|
|
259
|
+
typename SPEC::TI first_fit_slot(const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, size_t overlay, typename SPEC::TI num_parts){
|
|
260
|
+
using TI = typename SPEC::TI;
|
|
261
|
+
const auto& state = renderer.overlays[overlay];
|
|
262
|
+
TI run = 0;
|
|
263
|
+
for(TI slot = 0; slot < SPEC::MAX_OVERLAY_INSTANCES; slot++){
|
|
264
|
+
run = state.slots[slot].active ? 0 : run + 1;
|
|
265
|
+
if(run == num_parts){
|
|
266
|
+
return slot + 1 - num_parts;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return SPEC::MAX_OVERLAY_INSTANCES;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
template <typename SPEC, typename BACKEND>
|
|
273
|
+
void reset_overlay_state(rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
274
|
+
using TI = typename SPEC::TI;
|
|
275
|
+
constexpr size_t SLOTS = (size_t)SPEC::NUM_OVERLAYS * SPEC::MAX_OVERLAY_INSTANCES;
|
|
276
|
+
for(auto& overlay_state : renderer.overlays){
|
|
277
|
+
for(auto& slot : overlay_state.slots){
|
|
278
|
+
slot.active = false;
|
|
279
|
+
}
|
|
280
|
+
overlay_state.dirty = true;
|
|
281
|
+
}
|
|
282
|
+
for(size_t slot = 0; slot < SLOTS; slot++){
|
|
283
|
+
renderer.transforms_pending[slot] = false;
|
|
284
|
+
if constexpr (SPEC::HAS_FLOW_OVERLAYS){
|
|
285
|
+
renderer.transforms_previous_pending[slot] = false;
|
|
286
|
+
}
|
|
287
|
+
if constexpr (SPEC::ENABLE_DYNAMIC_MOTION_BLUR){
|
|
288
|
+
renderer.transforms_motion_pending[slot] = false;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
for(TI attachment_i = 0; attachment_i < SPEC::NUM_CAMERAS * SPEC::MAX_OVERLAYS_PER_CAMERA; attachment_i++){
|
|
292
|
+
renderer.attachments[attachment_i] = rendering::raytracing::Renderer<SPEC, BACKEND>::INVALID_OVERLAY;
|
|
293
|
+
}
|
|
294
|
+
renderer.attachments_dirty = true;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// resolved-configuration echo: makes a silently-defaulted (e.g. misspelled) fringe
|
|
298
|
+
// config member visible on the first run
|
|
299
|
+
template <typename SPEC>
|
|
300
|
+
void announce_configuration(){
|
|
301
|
+
RL_TOOLS_RENDERING_RAYTRACING_LOG("config: " << SPEC::NUM_CAMERAS << " camera(s) " << SPEC::CAM_WIDTH << "x" << SPEC::CAM_HEIGHT
|
|
302
|
+
<< " outputs[rgb=" << SPEC::HAS_RGB << " depth=" << SPEC::HAS_DEPTH << " segmentation=" << SPEC::HAS_SEGMENTATION << (SPEC::SEMANTIC_SEGMENTATION ? " (semantic)" : "") << " normals=" << SPEC::HAS_NORMALS << " flow=" << SPEC::HAS_FLOW << " flow_forward=" << SPEC::HAS_FLOW_FORWARD << "]"
|
|
303
|
+
<< " probes=" << (RL_TOOLS_RENDERING_RAYTRACING_DISABLE_PROBE_RAYS ? 0 : SPEC::NUM_PROBES)
|
|
304
|
+
<< " motion_blur_samples=" << (SPEC::ENABLE_MOTION_BLUR ? SPEC::MOTION_BLUR_SAMPLES : 0)
|
|
305
|
+
<< " anti_aliasing_grid=" << (SPEC::ENABLE_ANTI_ALIASING ? SPEC::ANTI_ALIASING_GRID_SIZE : 0)
|
|
306
|
+
<< " overlays=" << SPEC::NUM_OVERLAYS << "x" << SPEC::MAX_OVERLAY_INSTANCES << " overlays_per_camera=" << SPEC::MAX_OVERLAYS_PER_CAMERA);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// resolves a Scene::Environment into the concrete ambient + miss color pair the shaders
|
|
310
|
+
// consume. DEFAULT reproduces the historical constants exactly (golden-pinned); GRADIENT and
|
|
311
|
+
// EQUIRECT fall back to a solid horizon background until the shaders consume them.
|
|
312
|
+
template <typename SPEC>
|
|
313
|
+
void resolve_environment(const rendering::Scene::Environment& environment, typename SPEC::T ambient_color[3], typename SPEC::T miss_color_0[3], typename SPEC::T miss_color_1[3]){
|
|
314
|
+
using T = typename SPEC::T;
|
|
315
|
+
using Environment = rendering::Scene::Environment;
|
|
316
|
+
if(environment.mode == Environment::Mode::DEFAULT){
|
|
317
|
+
ambient_color[0] = 0.10f; ambient_color[1] = 0.10f; ambient_color[2] = 0.10f;
|
|
318
|
+
if constexpr (SPEC::HAS_RGB && SPEC::SHADING::PBR_SHADING){
|
|
319
|
+
for(int component = 0; component < 3; component++){
|
|
320
|
+
miss_color_0[component] = 0.f;
|
|
321
|
+
miss_color_1[component] = 0.f;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else{
|
|
325
|
+
miss_color_0[0] = .8f; miss_color_0[1] = 0.f; miss_color_0[2] = 0.f;
|
|
326
|
+
miss_color_1[0] = .8f; miss_color_1[1] = .8f; miss_color_1[2] = .8f;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else{
|
|
330
|
+
for(int component = 0; component < 3; component++){
|
|
331
|
+
ambient_color[component] = (T)environment.ambient[component];
|
|
332
|
+
miss_color_0[component] = (T)environment.horizon[component];
|
|
333
|
+
miss_color_1[component] = (T)environment.horizon[component];
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Lights as uploaded to the device: only the PBR tiers consume punctual lights. Object lights
|
|
339
|
+
// are authored in the object's local frame and follow the instance placing it.
|
|
340
|
+
template <bool APPLY>
|
|
341
|
+
std::vector<rendering::raytracing::SceneLight> effective_scene_lights(const rendering::raytracing::Scene& scene){
|
|
342
|
+
std::vector<rendering::raytracing::SceneLight> lights;
|
|
343
|
+
if constexpr (APPLY) {
|
|
344
|
+
lights = scene.lights;
|
|
345
|
+
for(const auto& instance : scene.instances){
|
|
346
|
+
for(const auto& object_light : scene.objects[instance.object].lights){
|
|
347
|
+
rendering::raytracing::SceneLight light = object_light;
|
|
348
|
+
if(!instance.identity){
|
|
349
|
+
transform_point(instance.transform, object_light.position, light.position);
|
|
350
|
+
transform_vector(instance.transform, object_light.direction, light.direction);
|
|
351
|
+
const float length = sqrtf(light.direction[0]*light.direction[0] + light.direction[1]*light.direction[1] + light.direction[2]*light.direction[2]);
|
|
352
|
+
if(length > 0){
|
|
353
|
+
light.direction[0] /= length;
|
|
354
|
+
light.direction[1] /= length;
|
|
355
|
+
light.direction[2] /= length;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
lights.push_back(light);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
RL_TOOLS_RENDERING_RAYTRACING_LOG("Scene lights: " << lights.size());
|
|
362
|
+
for (size_t li = 0; li < lights.size(); li++) {
|
|
363
|
+
auto& sl = lights[li];
|
|
364
|
+
RL_TOOLS_RENDERING_RAYTRACING_LOG(" light " << li << ": pos=(" << sl.position[0] << "," << sl.position[1] << "," << sl.position[2]
|
|
365
|
+
<< ") dir=(" << sl.direction[0] << "," << sl.direction[1] << "," << sl.direction[2]
|
|
366
|
+
<< ") color=(" << sl.color[0] << "," << sl.color[1] << "," << sl.color[2] << ")");
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return lights;
|
|
370
|
+
}
|
|
371
|
+
} // namespace rendering::raytracing::detail
|
|
372
|
+
|
|
373
|
+
namespace rendering::raytracing::detail{
|
|
374
|
+
// content-hash dedup insert: on a miss the library takes ownership of the bundle's scene
|
|
375
|
+
// (the bundle's metadata stays with the caller for producer-side use)
|
|
376
|
+
template <typename DEVICE, typename SPEC, typename BACKEND, typename T>
|
|
377
|
+
typename SPEC::TI library_insert(DEVICE& device, rendering::raytracing::AssetLibrary<SPEC, BACKEND>& library, rendering::Bundle<T>& bundle, bool& is_new){
|
|
378
|
+
validate_semantic_segmentation<SPEC>(device, bundle.scene, library.pool);
|
|
379
|
+
using TI = typename SPEC::TI;
|
|
380
|
+
utils::assert_exit(device, !bundle.metadata.content_hash.empty(), "library: bundle has no content hash — load it through a dataset loader");
|
|
381
|
+
for(TI scene_i = 0; scene_i < (TI)library.metadata.size(); scene_i++){
|
|
382
|
+
if(library.metadata[scene_i].content_hash == bundle.metadata.content_hash){
|
|
383
|
+
is_new = false;
|
|
384
|
+
RL_TOOLS_RENDERING_RAYTRACING_LOG("library: scene " << bundle.metadata.content_hash << " shares build " << scene_i << " (content hash match)");
|
|
385
|
+
return scene_i;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
is_new = true;
|
|
389
|
+
utils::assert_exit(device, !bundle.scene.objects.empty(), "library: bundle scene is empty (already inserted elsewhere?)");
|
|
390
|
+
library.scenes.push_back(std::move(bundle.scene));
|
|
391
|
+
bundle.scene = {};
|
|
392
|
+
library.metadata.push_back({});
|
|
393
|
+
auto& stored = library.metadata.back();
|
|
394
|
+
for(int d = 0; d < 3; d++){
|
|
395
|
+
stored.center[d] = (typename SPEC::T)bundle.metadata.center[d];
|
|
396
|
+
stored.half_extent[d] = (typename SPEC::T)bundle.metadata.half_extent[d];
|
|
397
|
+
}
|
|
398
|
+
stored.max_ray_length = (typename SPEC::T)bundle.metadata.max_ray_length;
|
|
399
|
+
stored.content_hash = bundle.metadata.content_hash;
|
|
400
|
+
library.assets.push_back(nullptr);
|
|
401
|
+
return (TI)(library.scenes.size() - 1);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
template <typename DEVICE, typename SPEC, typename BACKEND, typename T>
|
|
406
|
+
typename SPEC::TI insert(DEVICE& device, rendering::raytracing::AssetLibrary<SPEC, BACKEND>& library, rendering::Bundle<T>& bundle){
|
|
407
|
+
bool is_new = false;
|
|
408
|
+
return rendering::raytracing::detail::library_insert(device, library, bundle, is_new);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// appends a root part (geometry in the part frame, placed by transform within the assembly)
|
|
412
|
+
template <typename DEVICE>
|
|
413
|
+
size_t add(DEVICE& device, rendering::raytracing::ObjectAssembly& assembly, const rendering::raytracing::Object& object, const float transform[12]){
|
|
414
|
+
rendering::raytracing::ObjectAssembly::Part part;
|
|
415
|
+
part.object = assembly.objects.size();
|
|
416
|
+
std::memcpy(part.transform, transform, sizeof(part.transform));
|
|
417
|
+
assembly.objects.push_back(object);
|
|
418
|
+
assembly.parts.push_back(part);
|
|
419
|
+
return assembly.parts.size() - 1;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
template <typename DEVICE>
|
|
423
|
+
size_t add(DEVICE& device, rendering::raytracing::Scene& scene, const rendering::raytracing::Object& object, const float transform[12]){
|
|
424
|
+
scene.objects.push_back(object);
|
|
425
|
+
scene.instances.push_back({scene.objects.size() - 1, {}, rendering::raytracing::detail::transform_is_identity(transform)});
|
|
426
|
+
std::memcpy(scene.instances.back().transform, transform, 12 * sizeof(float));
|
|
427
|
+
return scene.instances.size() - 1;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
template <typename DEVICE>
|
|
431
|
+
size_t add(DEVICE& device, rendering::raytracing::Scene& scene, const rendering::raytracing::Object& object){
|
|
432
|
+
const float identity[12] = {1,0,0,0, 0,1,0,0, 0,0,1,0};
|
|
433
|
+
return add(device, scene, object, identity);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
template <typename DEVICE>
|
|
437
|
+
size_t add(DEVICE& device, rendering::raytracing::Scene& scene, const rendering::raytracing::Mesh& mesh){
|
|
438
|
+
rendering::raytracing::Object object;
|
|
439
|
+
object.meshes.push_back(mesh);
|
|
440
|
+
return add(device, scene, object);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
template <typename DEVICE>
|
|
445
|
+
rendering::raytracing::Placement add(DEVICE& device, rendering::raytracing::Scene& scene, const rendering::raytracing::ObjectAssembly& assembly, const float transform[12]){
|
|
446
|
+
rendering::raytracing::Placement placement{scene.instances.size(), assembly.parts.size()};
|
|
447
|
+
const size_t object_base = scene.objects.size();
|
|
448
|
+
scene.objects.insert(scene.objects.end(), assembly.objects.begin(), assembly.objects.end());
|
|
449
|
+
for(const auto& part : assembly.parts){
|
|
450
|
+
float composed[12];
|
|
451
|
+
rendering::raytracing::detail::compose_transforms(transform, part.transform, composed);
|
|
452
|
+
scene.instances.push_back({object_base + part.object, {}, rendering::raytracing::detail::transform_is_identity(composed)});
|
|
453
|
+
std::memcpy(scene.instances.back().transform, composed, sizeof(composed));
|
|
454
|
+
}
|
|
455
|
+
return placement;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
template <typename DEVICE>
|
|
459
|
+
rendering::raytracing::Placement add(DEVICE& device, rendering::raytracing::Scene& scene, const rendering::raytracing::ObjectAssembly& assembly){
|
|
460
|
+
const float identity[12] = {1,0,0,0, 0,1,0,0, 0,0,1,0};
|
|
461
|
+
return add(device, scene, assembly, identity);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
template <typename DEVICE>
|
|
465
|
+
rendering::raytracing::AssetHandle add(DEVICE& device, rendering::raytracing::AssetPool& pool, const rendering::raytracing::ObjectAssembly& assembly){
|
|
466
|
+
pool.assemblies.push_back(assembly);
|
|
467
|
+
return {pool.assemblies.size() - 1};
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
template <typename DEVICE>
|
|
471
|
+
rendering::raytracing::AssetHandle add(DEVICE& device, rendering::raytracing::AssetPool& pool, const rendering::raytracing::Object& object){
|
|
472
|
+
rendering::raytracing::ObjectAssembly assembly;
|
|
473
|
+
assembly.objects.push_back(object);
|
|
474
|
+
assembly.parts.push_back({0, {1,0,0,0, 0,1,0,0, 0,0,1,0}});
|
|
475
|
+
return add(device, pool, assembly);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
template <typename DEVICE>
|
|
479
|
+
rendering::raytracing::AssetHandle add(DEVICE& device, rendering::raytracing::AssetPool& pool, const rendering::raytracing::Mesh& mesh){
|
|
480
|
+
rendering::raytracing::Object object;
|
|
481
|
+
object.meshes.push_back(mesh);
|
|
482
|
+
return add(device, pool, object);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
// Validation predicates for boundaries (language bindings, C interface) that must not trip
|
|
486
|
+
// the fail-fast asserts inside the verbs: check first, then call.
|
|
487
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
488
|
+
bool can_attach(DEVICE& device, const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, typename SPEC::TI camera, rendering::raytracing::OverlayIndex overlay){
|
|
489
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "can_attach requires an overlay-enabled renderer specification");
|
|
490
|
+
using TI = typename SPEC::TI;
|
|
491
|
+
if(camera >= SPEC::NUM_CAMERAS || overlay.index >= SPEC::NUM_OVERLAYS){
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
const TI* row = &renderer.attachments[camera * SPEC::MAX_OVERLAYS_PER_CAMERA];
|
|
495
|
+
for(TI slot = 0; slot < SPEC::MAX_OVERLAYS_PER_CAMERA; slot++){
|
|
496
|
+
if(row[slot] == (TI)overlay.index || row[slot] == rendering::raytracing::Renderer<SPEC, BACKEND>::INVALID_OVERLAY){
|
|
497
|
+
return true;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return false;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
504
|
+
bool can_spawn(DEVICE& device, const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, rendering::raytracing::AssetHandle asset){
|
|
505
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "can_spawn requires an overlay-enabled renderer specification");
|
|
506
|
+
if(overlay.index >= SPEC::NUM_OVERLAYS || asset.index >= renderer.assets.size()){
|
|
507
|
+
return false;
|
|
508
|
+
}
|
|
509
|
+
return rendering::raytracing::detail::first_fit_slot<SPEC>(renderer, overlay.index, renderer.assets[asset.index].num_parts) < SPEC::MAX_OVERLAY_INSTANCES;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// Overlay verbs mutate host-side truth on the renderer and mark it dirty; update(device,
|
|
513
|
+
// renderer) is the single point where the backend consumes it. All bookkeeping is
|
|
514
|
+
// deterministic: slot allocation is a first-fit scan, so identical call sequences yield
|
|
515
|
+
// identical slots (and therefore identical global instance ids).
|
|
516
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
517
|
+
void attach(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, typename SPEC::TI camera, rendering::raytracing::OverlayIndex overlay){
|
|
518
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "attach requires an overlay-enabled renderer specification");
|
|
519
|
+
using TI = typename SPEC::TI;
|
|
520
|
+
utils::assert_exit(device, overlay.index < SPEC::NUM_OVERLAYS, "attach: overlay index out of range");
|
|
521
|
+
constexpr TI INVALID = rendering::raytracing::Renderer<SPEC, BACKEND>::INVALID_OVERLAY;
|
|
522
|
+
TI* row = &renderer.attachments[camera * SPEC::MAX_OVERLAYS_PER_CAMERA];
|
|
523
|
+
TI free_slot = SPEC::MAX_OVERLAYS_PER_CAMERA;
|
|
524
|
+
for(TI slot = 0; slot < SPEC::MAX_OVERLAYS_PER_CAMERA; slot++){
|
|
525
|
+
if(row[slot] == (TI)overlay.index){
|
|
526
|
+
return; // a camera's attachments form a set: attach is idempotent
|
|
527
|
+
}
|
|
528
|
+
if(row[slot] == INVALID && free_slot == SPEC::MAX_OVERLAYS_PER_CAMERA){
|
|
529
|
+
free_slot = slot;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
utils::assert_exit(device, free_slot < SPEC::MAX_OVERLAYS_PER_CAMERA, "attach: camera already holds MAX_OVERLAYS_PER_CAMERA overlays");
|
|
533
|
+
row[free_slot] = (TI)overlay.index;
|
|
534
|
+
renderer.attachments_dirty = true;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
538
|
+
void detach(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, typename SPEC::TI camera, rendering::raytracing::OverlayIndex overlay){
|
|
539
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "detach requires an overlay-enabled renderer specification");
|
|
540
|
+
using TI = typename SPEC::TI;
|
|
541
|
+
TI* row = &renderer.attachments[camera * SPEC::MAX_OVERLAYS_PER_CAMERA];
|
|
542
|
+
for(TI slot = 0; slot < SPEC::MAX_OVERLAYS_PER_CAMERA; slot++){
|
|
543
|
+
if(row[slot] == (TI)overlay.index){
|
|
544
|
+
row[slot] = rendering::raytracing::Renderer<SPEC, BACKEND>::INVALID_OVERLAY;
|
|
545
|
+
renderer.attachments_dirty = true;
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
552
|
+
rendering::raytracing::OverlayPlacement spawn(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, rendering::raytracing::AssetHandle asset, const float transform[12]){
|
|
553
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "spawn requires an overlay-enabled renderer specification");
|
|
554
|
+
using TI = typename SPEC::TI;
|
|
555
|
+
if(overlay.index >= SPEC::NUM_OVERLAYS){
|
|
556
|
+
utils::assert_exit(device, false, "spawn: overlay index out of range");
|
|
557
|
+
return {0, 0, 0};
|
|
558
|
+
}
|
|
559
|
+
if(asset.index >= renderer.assets.size()){
|
|
560
|
+
utils::assert_exit(device, false, "spawn: asset handle out of range");
|
|
561
|
+
return {0, 0, 0};
|
|
562
|
+
}
|
|
563
|
+
auto& state = renderer.overlays[overlay.index];
|
|
564
|
+
const auto& record = renderer.assets[asset.index];
|
|
565
|
+
|
|
566
|
+
const TI first_slot = rendering::raytracing::detail::first_fit_slot<SPEC>(renderer, overlay.index, record.num_parts);
|
|
567
|
+
if(first_slot >= SPEC::MAX_OVERLAY_INSTANCES){
|
|
568
|
+
utils::assert_exit(device, false, "spawn: overlay capacity exceeded");
|
|
569
|
+
return {0, 0, 0};
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
for(TI part = 0; part < record.num_parts; part++){
|
|
573
|
+
auto& slot = state.slots[first_slot + part];
|
|
574
|
+
slot.object = renderer.asset_part_objects[record.first_part + part];
|
|
575
|
+
std::memcpy(slot.rest, &renderer.asset_part_transforms[(record.first_part + part) * 12], sizeof(slot.rest));
|
|
576
|
+
slot.active = true;
|
|
577
|
+
const size_t row = (size_t)overlay.index * SPEC::MAX_OVERLAY_INSTANCES + first_slot + part;
|
|
578
|
+
float world[12];
|
|
579
|
+
rendering::compose_transforms(transform, slot.rest, world);
|
|
580
|
+
rendering::raytracing::detail::stage_transform(renderer, row, world);
|
|
581
|
+
if constexpr (SPEC::HAS_FLOW_OVERLAYS){
|
|
582
|
+
rendering::raytracing::detail::stage_previous(renderer, row, world); // a fresh object has no motion of its own: pure camera flow
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
state.dirty = true;
|
|
586
|
+
return {(size_t)first_slot, (size_t)record.num_parts, (size_t)record.first_part};
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
590
|
+
void despawn(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement){
|
|
591
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "despawn requires an overlay-enabled renderer specification");
|
|
592
|
+
auto& state = renderer.overlays[overlay.index];
|
|
593
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
594
|
+
state.slots[placement.first_slot + part].active = false;
|
|
595
|
+
}
|
|
596
|
+
state.dirty = true;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// poses: placement.num_parts geometry-to-world transforms (12 floats each) in asset part
|
|
600
|
+
// order — the output of rig::evaluate for the placement's assembly. Only the current instant
|
|
601
|
+
// changes: the flow pair advances through advance_flow (or spawn)
|
|
602
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
603
|
+
void set_transforms(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement, const float* poses){
|
|
604
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "set_transforms requires an overlay-enabled renderer specification");
|
|
605
|
+
rendering::raytracing::detail::assert_placement(device, renderer, overlay, placement);
|
|
606
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
607
|
+
rendering::raytracing::detail::stage_transform(renderer, overlay.index * SPEC::MAX_OVERLAY_INSTANCES + placement.first_slot + part, poses + part * 12);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
// samples: [MOTION_BLUR_SAMPLES][placement.num_parts][12] poses at the shutter times
|
|
612
|
+
// (sample + 0.5) / MOTION_BLUR_SAMPLES the camera lerp uses; close: [placement.num_parts][12]
|
|
613
|
+
// shutter-close poses, the steady state segmentation, probes and the next frame see — the
|
|
614
|
+
// output of rig::sample for the placement's assembly
|
|
615
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
616
|
+
void set_motion_transforms(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement, const float* samples, const float* close){
|
|
617
|
+
static_assert(SPEC::ENABLE_DYNAMIC_MOTION_BLUR, "set_motion_transforms requires a dynamic-motion-blur renderer specification");
|
|
618
|
+
rendering::raytracing::detail::assert_placement(device, renderer, overlay, placement);
|
|
619
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
620
|
+
rendering::raytracing::detail::stage_motion(renderer, overlay.index * SPEC::MAX_OVERLAY_INSTANCES + placement.first_slot + part, samples + part * 12, placement.num_parts * 12, close + part * 12);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// rigid move of the whole assembly: every part at pose ∘ rest
|
|
625
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
626
|
+
void set_transform(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement, const float pose[12]){
|
|
627
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "set_transform requires an overlay-enabled renderer specification");
|
|
628
|
+
rendering::raytracing::detail::assert_placement(device, renderer, overlay, placement);
|
|
629
|
+
const auto& state = renderer.overlays[overlay.index];
|
|
630
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
631
|
+
float world[12];
|
|
632
|
+
rendering::compose_transforms(pose, state.slots[placement.first_slot + part].rest, world);
|
|
633
|
+
rendering::raytracing::detail::stage_transform(renderer, overlay.index * SPEC::MAX_OVERLAY_INSTANCES + placement.first_slot + part, world);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// rigid move with shutter-open/close poses: constant-twist interpolation of the assembly pose
|
|
638
|
+
// into every motion sample, the close pose as the steady state
|
|
639
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
640
|
+
void set_transform_pair(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, rendering::raytracing::OverlayIndex overlay, const rendering::raytracing::OverlayPlacement& placement, const float open[12], const float close[12]){
|
|
641
|
+
static_assert(SPEC::ENABLE_DYNAMIC_MOTION_BLUR, "set_transform_pair requires a dynamic-motion-blur renderer specification");
|
|
642
|
+
rendering::raytracing::detail::assert_placement(device, renderer, overlay, placement);
|
|
643
|
+
float poses[SPEC::MOTION_BLUR_SAMPLES][12];
|
|
644
|
+
for(size_t sample = 0; sample < SPEC::MOTION_BLUR_SAMPLES; sample++){
|
|
645
|
+
rendering::screw_interpolate(open, close, ((float)sample + 0.5f) / (float)SPEC::MOTION_BLUR_SAMPLES, poses[sample]);
|
|
646
|
+
}
|
|
647
|
+
const auto& state = renderer.overlays[overlay.index];
|
|
648
|
+
for(size_t part = 0; part < placement.num_parts; part++){
|
|
649
|
+
const float* rest = state.slots[placement.first_slot + part].rest;
|
|
650
|
+
float samples[SPEC::MOTION_BLUR_SAMPLES][12], world_close[12];
|
|
651
|
+
for(size_t sample = 0; sample < SPEC::MOTION_BLUR_SAMPLES; sample++){
|
|
652
|
+
rendering::compose_transforms(poses[sample], rest, samples[sample]);
|
|
653
|
+
}
|
|
654
|
+
rendering::compose_transforms(close, rest, world_close);
|
|
655
|
+
rendering::raytracing::detail::stage_motion(renderer, overlay.index * SPEC::MAX_OVERLAY_INSTANCES + placement.first_slot + part, &samples[0][0], 12, world_close);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
660
|
+
auto& transforms(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
661
|
+
static_assert(SPEC::ENABLE_OVERLAYS, "transforms requires an overlay-enabled renderer specification");
|
|
662
|
+
return renderer.transforms;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
// the previous instant's overlay poses (flow): producer input under the transforms()
|
|
666
|
+
// ownership contract, snapshotted from transforms by advance_flow
|
|
667
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
668
|
+
auto& transforms_previous(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
669
|
+
static_assert(SPEC::HAS_FLOW_OVERLAYS, "transforms_previous requires a flow renderer specification with overlays");
|
|
670
|
+
return renderer.transforms_previous;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
674
|
+
auto& transforms_motion(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
675
|
+
static_assert(SPEC::ENABLE_DYNAMIC_MOTION_BLUR, "transforms_motion requires a dynamic-motion-blur renderer specification");
|
|
676
|
+
return renderer.transforms_motion;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
// camera input tensors, backend-native residency like transforms: device memory on OptiX,
|
|
680
|
+
// host on generic, shared/mapped on Metal/Vulkan. Producers write them via rlt::copy or
|
|
681
|
+
// kernels; the launch verbs consume them directly. Under motion blur the pair is
|
|
682
|
+
// cameras_open (shutter open) and cameras_close (shutter close, aliasing cameras) — both
|
|
683
|
+
// must be written each step (identical values for a blur-free frame). Under flow,
|
|
684
|
+
// cameras_previous holds the previous instant (snapshotted from cameras by advance_flow).
|
|
685
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
686
|
+
auto& cameras(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
687
|
+
return renderer.cameras;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
691
|
+
auto& cameras_open(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
692
|
+
static_assert(SPEC::HAS_CAMERA_PAIR, "cameras_open requires a motion-blur renderer specification");
|
|
693
|
+
return renderer.cameras_open;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
697
|
+
auto& cameras_close(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
698
|
+
static_assert(SPEC::HAS_CAMERA_PAIR, "cameras_close requires a motion-blur renderer specification");
|
|
699
|
+
return renderer.cameras;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
703
|
+
auto& cameras_previous(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
704
|
+
static_assert(SPEC::HAS_FLOW, "cameras_previous requires a flow-capable renderer specification");
|
|
705
|
+
return renderer.cameras_previous;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
// output tensors, same backend-native residency as the inputs: consumers on the device read
|
|
709
|
+
// them in place (zero-copy); host readers stage through a memory-domain copy at readback
|
|
710
|
+
// boundaries — copy(renderer.device, device, ...) — which orders itself after the
|
|
711
|
+
// renderer's in-flight work
|
|
712
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
713
|
+
auto& frame_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
714
|
+
static_assert(SPEC::HAS_RGB, "frame_buffer requires an RGB-capable renderer specification");
|
|
715
|
+
return renderer.frame_buffer;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
719
|
+
auto& depth_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
720
|
+
static_assert(SPEC::HAS_DEPTH, "depth_buffer requires a depth-capable renderer specification");
|
|
721
|
+
return renderer.depth_buffer;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
725
|
+
auto& segmentation_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
726
|
+
static_assert(SPEC::HAS_SEGMENTATION, "segmentation_buffer requires a segmentation-capable renderer specification");
|
|
727
|
+
return renderer.segmentation_buffer;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
731
|
+
auto& normals_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
732
|
+
static_assert(SPEC::HAS_NORMALS, "normals_buffer requires a normals-capable renderer specification");
|
|
733
|
+
return renderer.normals_buffer;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
// flow on the current grid: p_previous - p_current in pixels, with a FlowStatus per pixel
|
|
737
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
738
|
+
auto& flow_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
739
|
+
static_assert(SPEC::HAS_FLOW, "flow_buffer requires a flow-capable renderer specification");
|
|
740
|
+
return renderer.flow_buffer;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
744
|
+
auto& flow_status_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
745
|
+
static_assert(SPEC::HAS_FLOW, "flow_status_buffer requires a flow-capable renderer specification");
|
|
746
|
+
return renderer.flow_status_buffer;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
// forward flow on the previous grid: q_current - q_previous in pixels, with a FlowStatus per pixel
|
|
750
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
751
|
+
auto& flow_forward_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
752
|
+
static_assert(SPEC::HAS_FLOW_FORWARD, "flow_forward_buffer requires OUTPUT_FLOW_FORWARD in the renderer specification");
|
|
753
|
+
return renderer.flow_forward_buffer;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
757
|
+
auto& flow_forward_status_buffer(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
758
|
+
static_assert(SPEC::HAS_FLOW_FORWARD, "flow_forward_status_buffer requires OUTPUT_FLOW_FORWARD in the renderer specification");
|
|
759
|
+
return renderer.flow_forward_status_buffer;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
763
|
+
auto& collision_results(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
764
|
+
return renderer.collision_results;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
768
|
+
auto& observation(DEVICE& device, rendering::raytracing::Renderer<SPEC, BACKEND>& renderer){
|
|
769
|
+
static_assert(SPEC::HAS_OBSERVATION, "observation requires OUTPUT_OBSERVATION in the renderer specification");
|
|
770
|
+
return renderer.observation;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// decodes a rendered segmentation id back to the object it references. Single owner of the
|
|
774
|
+
// global id layout: scene instances occupy [0, S); overlay o's slot s sits at S + o*CAP + s;
|
|
775
|
+
// object indices count scene objects first, then each pool assembly's objects in
|
|
776
|
+
// registration order. Returns nullptr for the miss sentinel and out-of-range ids.
|
|
777
|
+
// This layout is cross-backend API surface: the generic flat instance array, Metal's user-ID
|
|
778
|
+
// descriptors, and OptiX's user instance ids all realize it identically, and segmentation
|
|
779
|
+
// consumers depend on that equivalence — treat any change to it as breaking.
|
|
780
|
+
template <typename DEVICE, typename SPEC, typename BACKEND>
|
|
781
|
+
const rendering::raytracing::Object* segmentation_object(DEVICE& device, const rendering::raytracing::Scene& scene, const rendering::raytracing::AssetPool& pool, const rendering::raytracing::Renderer<SPEC, BACKEND>& renderer, uint32_t id){
|
|
782
|
+
static_assert(!SPEC::SEMANTIC_SEGMENTATION, "segmentation_object expects instance IDs, not semantic class IDs");
|
|
783
|
+
if(id == 0xFFFFFFFFu){
|
|
784
|
+
return nullptr;
|
|
785
|
+
}
|
|
786
|
+
if(id < scene.instances.size()){
|
|
787
|
+
return &scene.objects[scene.instances[id].object];
|
|
788
|
+
}
|
|
789
|
+
if constexpr (SPEC::ENABLE_OVERLAYS){
|
|
790
|
+
const size_t relative = id - scene.instances.size();
|
|
791
|
+
const size_t overlay = relative / SPEC::MAX_OVERLAY_INSTANCES;
|
|
792
|
+
const size_t slot = relative % SPEC::MAX_OVERLAY_INSTANCES;
|
|
793
|
+
if(overlay >= SPEC::NUM_OVERLAYS){
|
|
794
|
+
return nullptr;
|
|
795
|
+
}
|
|
796
|
+
size_t object = renderer.overlays[overlay].slots[slot].object;
|
|
797
|
+
if(object < scene.objects.size()){
|
|
798
|
+
return &scene.objects[object];
|
|
799
|
+
}
|
|
800
|
+
object -= scene.objects.size();
|
|
801
|
+
for(const auto& assembly : pool.assemblies){
|
|
802
|
+
if(object < assembly.objects.size()){
|
|
803
|
+
return &assembly.objects[object];
|
|
804
|
+
}
|
|
805
|
+
object -= assembly.objects.size();
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
return nullptr;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
inline void make_transform(const float position[3], const float orientation_wxyz[4], float out[12]){
|
|
812
|
+
const float w = orientation_wxyz[0], x = orientation_wxyz[1], y = orientation_wxyz[2], z = orientation_wxyz[3];
|
|
813
|
+
out[0] = 1 - 2*(y*y + z*z); out[1] = 2*(x*y - w*z); out[2] = 2*(x*z + w*y); out[3] = position[0];
|
|
814
|
+
out[4] = 2*(x*y + w*z); out[5] = 1 - 2*(x*x + z*z); out[6] = 2*(y*z - w*x); out[7] = position[1];
|
|
815
|
+
out[8] = 2*(x*z - w*y); out[9] = 2*(y*z + w*x); out[10] = 1 - 2*(x*x + y*y); out[11] = position[2];
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
inline void compose_transforms(const float a[12], const float b[12], float out[12]){
|
|
819
|
+
rendering::raytracing::detail::compose_transforms(a, b, out);
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
namespace rendering::raytracing::detail{
|
|
824
|
+
template <typename SPEC>
|
|
825
|
+
std::vector<float> generate_probe_direction_vectors(){
|
|
826
|
+
std::vector<float> dirs;
|
|
827
|
+
dirs.reserve(SPEC::NUM_PROBES * 3);
|
|
828
|
+
|
|
829
|
+
const float golden_ratio = (1.0f + sqrtf(5.0f)) / 2.0f;
|
|
830
|
+
|
|
831
|
+
for(int i = 0; i < (int)SPEC::NUM_PROBES; i++){
|
|
832
|
+
float theta = 2.0f * (float)M_PI * i / golden_ratio;
|
|
833
|
+
float cos_inc = 1.0f - 2.0f * (i + 0.5f) / SPEC::NUM_PROBES;
|
|
834
|
+
float sin_inc = sqrtf(1.0f - cos_inc * cos_inc);
|
|
835
|
+
|
|
836
|
+
const float dir[3] = {sin_inc * cosf(theta), sin_inc * sinf(theta), cos_inc};
|
|
837
|
+
const float inv_len = 1.0f / sqrtf(dir[0]*dir[0] + dir[1]*dir[1] + dir[2]*dir[2]);
|
|
838
|
+
dirs.push_back(dir[0] * inv_len);
|
|
839
|
+
dirs.push_back(dir[1] * inv_len);
|
|
840
|
+
dirs.push_back(dir[2] * inv_len);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
RL_TOOLS_RENDERING_RAYTRACING_LOG("Generated " << SPEC::NUM_PROBES << " probe directions per camera");
|
|
844
|
+
return dirs;
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
// one distinct color per instance id (golden-ratio hue hash); miss sentinel renders black
|
|
848
|
+
inline uint32_t segmentation_id_to_rgba(uint32_t id){
|
|
849
|
+
if(id == 0xFFFFFFFFu){
|
|
850
|
+
return 0xFF000000u;
|
|
851
|
+
}
|
|
852
|
+
const float hue = std::fmod((float)id * 0.61803398875f, 1.0f) * 6.0f;
|
|
853
|
+
const float descending = 1.0f - std::fabs(std::fmod(hue, 2.0f) - 1.0f);
|
|
854
|
+
float r = 0, g = 0, b = 0;
|
|
855
|
+
switch((int)hue){
|
|
856
|
+
case 0: r = 1; g = descending; break;
|
|
857
|
+
case 1: r = descending; g = 1; break;
|
|
858
|
+
case 2: g = 1; b = descending; break;
|
|
859
|
+
case 3: g = descending; b = 1; break;
|
|
860
|
+
case 4: r = descending; b = 1; break;
|
|
861
|
+
default: r = 1; b = descending; break;
|
|
862
|
+
}
|
|
863
|
+
return 0xFF000000u | ((uint32_t)(b * 255) << 16) | ((uint32_t)(g * 255) << 8) | (uint32_t)(r * 255);
|
|
864
|
+
}
|
|
865
|
+
// pinned normals encoding, the single owner shared by save verbs and the golden corpus:
|
|
866
|
+
// each component maps through round((clamp(n, -1, 1) * 0.5 + 0.5) * 255). The miss value
|
|
867
|
+
// (0,0,0) encodes to (128,128,128), which no unit normal can reach (a unit vector has a
|
|
868
|
+
// component of magnitude >= 1/sqrt(3)).
|
|
869
|
+
inline uint32_t normal_to_rgba(const float normal[3]){
|
|
870
|
+
uint32_t rgba = 0xFF000000u;
|
|
871
|
+
for(int component = 0; component < 3; component++){
|
|
872
|
+
const float clamped = fminf(fmaxf(normal[component], -1.f), 1.f);
|
|
873
|
+
const uint32_t value = (uint32_t)lroundf((clamped * 0.5f + 0.5f) * 255.f);
|
|
874
|
+
rgba |= value << (8 * component);
|
|
875
|
+
}
|
|
876
|
+
return rgba;
|
|
877
|
+
}
|
|
878
|
+
// pinned flow-status false colour shared by the save verbs and the golden corpus (ABGR
|
|
879
|
+
// packed like the frame buffer): VALID white, MISS black, BEHIND magenta, OUT_OF_FRAME
|
|
880
|
+
// blue, OCCLUDED orange; unknown codes red
|
|
881
|
+
// direction -> hue, magnitude -> saturation against magnitude_scale (pixels); the review
|
|
882
|
+
// writers pass the per-image maximum, live viewers a fixed scale so the image does not flicker
|
|
883
|
+
inline uint32_t flow_to_rgba(float u, float v, float magnitude_scale){
|
|
884
|
+
constexpr float TWO_PI = 6.28318530717958647692f;
|
|
885
|
+
const float magnitude = std::sqrt(u * u + v * v);
|
|
886
|
+
const float saturation = magnitude_scale > 0 ? std::fmin(magnitude / magnitude_scale, 1.f) : 0.f;
|
|
887
|
+
const float hue = (std::atan2(v, u) / TWO_PI + 0.5f) * 6.f;
|
|
888
|
+
const float descending = 1.f - std::fabs(std::fmod(hue, 2.f) - 1.f);
|
|
889
|
+
float red = 0, green = 0, blue = 0;
|
|
890
|
+
switch((int)hue % 6){
|
|
891
|
+
case 0: red = 1; green = descending; break;
|
|
892
|
+
case 1: red = descending; green = 1; break;
|
|
893
|
+
case 2: green = 1; blue = descending; break;
|
|
894
|
+
case 3: green = descending; blue = 1; break;
|
|
895
|
+
case 4: red = descending; blue = 1; break;
|
|
896
|
+
default: red = 1; blue = descending; break;
|
|
897
|
+
}
|
|
898
|
+
const auto channel = [&](float value){ return (uint32_t)((1.f - saturation * (1.f - value)) * 255.f); };
|
|
899
|
+
return 0xFF000000u | (channel(blue) << 16) | (channel(green) << 8) | channel(red);
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
inline uint32_t flow_status_to_rgba(uint32_t status){
|
|
903
|
+
switch(status){
|
|
904
|
+
case FlowStatus::VALID: return 0xFFFFFFFFu;
|
|
905
|
+
case FlowStatus::MISS: return 0xFF000000u;
|
|
906
|
+
case FlowStatus::BEHIND: return 0xFFFF00FFu;
|
|
907
|
+
case FlowStatus::OUT_OF_FRAME: return 0xFFFF4020u;
|
|
908
|
+
case FlowStatus::OCCLUDED: return 0xFF0090FFu;
|
|
909
|
+
default: return 0xFF0000FFu;
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
RL_TOOLS_NAMESPACE_WRAPPER_END
|
|
915
|
+
|
|
916
|
+
#endif
|