hyperray 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hyperdrone/__init__.py +53 -0
- hyperdrone/_cuda/__init__.py +76 -0
- hyperdrone/_dlpack.py +30 -0
- hyperdrone/_jit/__init__.py +131 -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 +94 -0
- hyperdrone/_native/cmake/hyperdrone_jit.cmake +65 -0
- hyperdrone/_native/common/bindings.h +39 -0
- hyperdrone/_native/common/cuda_staging.h +80 -0
- hyperdrone/_native/common/jit_host.h +69 -0
- hyperdrone/_native/common/models.h +24 -0
- hyperdrone/_native/common/verbosity.h +52 -0
- hyperdrone/_native/dynamics/CMakeLists.txt +63 -0
- hyperdrone/_native/dynamics/host.cpp +188 -0
- hyperdrone/_native/dynamics/iface.h +71 -0
- hyperdrone/_native/dynamics/impl.cpp +638 -0
- hyperdrone/_native/env/CMakeLists.txt +98 -0
- hyperdrone/_native/env/environment.cpp +190 -0
- hyperdrone/_native/env/environment.h +282 -0
- hyperdrone/_native/env/impl.cpp +779 -0
- hyperdrone/_native/env/rotorcraft_bindings.cpp +53 -0
- hyperdrone/_native/render/CMakeLists.txt +96 -0
- hyperdrone/_native/render/renderer.cpp +973 -0
- hyperdrone/_native/render/rig_bindings.h +152 -0
- hyperdrone/_native/render/scene_bindings.cpp +515 -0
- hyperdrone/_outputs.py +32 -0
- hyperdrone/_parameters.py +36 -0
- hyperdrone/_vendor/rl-tools/CMakeLists.txt +207 -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 +65 -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 +82 -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 +1480 -0
- hyperdrone/_vendor/rl-tools/include/metra/metra.h +381 -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 +210 -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_emscripten.h +20 -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 +464 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/cuda_streams.h +23 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/devices/devices.h +105 -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 +57 -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 +158 -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 +172 -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 +411 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/glb.h +25 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/glb/operations_cpu.h +1288 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/operations_cpu.h +136 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/catalog.h +232 -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 +123 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/datasets/procthor/procthor.h +39 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_cpu.h +717 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/generic/operations_generic.h +1283 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/metal/context.h +193 -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 +1123 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device.h +207 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/device_impl.h +1043 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/optix/operations_cuda.h +1747 -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 +37 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/backends/vulkan/context.h +251 -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 +2067 -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 +280 -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 +1405 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_common.h +948 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_mux.h +32 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/operations_cpu_post.h +96 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/renderer.h +484 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rendering/raytracing/save_cpu.h +314 -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 +132 -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 +76 -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 +1063 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/operations_cuda.h +564 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/pose.h +253 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/presets.h +154 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/operations_cpu.h +26 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/operations_generic.h +91 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/raptor/raptor.h +71 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/rig/operations_cpu.h +190 -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/spy/capture_cpu.h +86 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/capture_cuda.h +69 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/capture_optix.h +163 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cpu.h +223 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cpu_spectator.h +194 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cuda.h +1 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/operations_cuda_spectator.h +109 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/spectator.h +82 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/spy.h +107 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/spy/ui.h +30 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/moving_gate.h +103 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cpu.h +279 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/moving_gate/operations_cuda.h +242 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cpu.h +322 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/target_frame/operations_cuda.h +312 -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 +92 -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 +374 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/tasks/visual_inertial_localization/visual_inertial_localization.h +126 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/rl/environments/hyperdrone/world.h +333 -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 +2252 -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/declarations_cpu_emscripten.h +15 -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 +24 -0
- hyperdrone/_vendor/rl-tools/include/rl_tools/utils/assert/operations_cpu_emscripten.h +28 -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 +214 -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 +134 -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 +912 -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 +308 -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 +970 -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 +1381 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/CMakeLists.txt +129 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/README.md +131 -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/download_paper_scene.py +74 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/CMakeLists.txt +104 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/Info.plist +36 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/Sources/BenchmarkApp.swift +172 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/benchmark.h +10 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/benchmark.mm +46 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/ios_app/build.sh +17 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/rig.cpp +119 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.cpp +1382 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix.h +5 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_config.h.in +25 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_identity.cmake +11 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_main.cpp +5 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics.cu +125 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics.h +58 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics_contract.h +179 -0
- hyperdrone/_vendor/rl-tools/src/rendering/raytracing/benchmark/simulator_matrix_physics_cpu.cpp +77 -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/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/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/CMakeLists.txt +63 -0
- hyperdrone/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/example.cpp +101 -0
- hyperdrone/_vendor/rl-tools/src/rl/environments/hyperdrone/spy/ui.cpp +380 -0
- hyperdrone/dynamics/__init__.py +5 -0
- hyperdrone/dynamics/_component.py +31 -0
- hyperdrone/dynamics/_config.py +46 -0
- hyperdrone/dynamics/_sim.py +166 -0
- hyperdrone/env/__init__.py +23 -0
- hyperdrone/env/_multi_environment.py +566 -0
- hyperdrone/env/_rotorcraft.py +29 -0
- hyperdrone/env/_spy.py +39 -0
- hyperdrone/examples/.gitignore +3 -0
- hyperdrone/examples/Benchmark.ipynb +113 -0
- hyperdrone/examples/HyperDrone.ipynb +589 -0
- hyperdrone/examples/Orbiter.ipynb +496 -0
- hyperdrone/examples/Renderer.ipynb +218 -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 +71 -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 +40 -0
- hyperdrone/examples/shots.py +108 -0
- hyperdrone/examples/spy.py +40 -0
- hyperdrone/examples/visual_inertial_localization.py +158 -0
- hyperdrone/gym/__init__.py +67 -0
- hyperdrone/render/__init__.py +57 -0
- hyperdrone/render/_component.py +51 -0
- hyperdrone/render/_config.py +76 -0
- hyperdrone/render/_renderer.py +498 -0
- hyperdrone/render/_rig.py +136 -0
- hyperdrone/render/_sampling.py +69 -0
- hyperdrone/render/_scene.py +38 -0
- hyperdrone/render/datasets.py +15 -0
- hyperray-0.0.1.dist-info/METADATA +519 -0
- hyperray-0.0.1.dist-info/RECORD +788 -0
- hyperray-0.0.1.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,912 @@
|
|
|
1
|
+
// Metal device programs for the RLtools raytracing renderer.
|
|
2
|
+
// This file is a function-for-function mirror of backends/optix/device_impl.h — keep the shading
|
|
3
|
+
// logic in sync; the golden-image parity suite is the drift detector.
|
|
4
|
+
// Struct layouts (LaunchParams, MeshRecord) and buffer/function-constant indices must match
|
|
5
|
+
// include/rl_tools/rendering/raytracing/backends/metal/context.h.
|
|
6
|
+
#include <metal_stdlib>
|
|
7
|
+
#include <metal_raytracing>
|
|
8
|
+
|
|
9
|
+
using namespace metal;
|
|
10
|
+
using namespace metal::raytracing;
|
|
11
|
+
|
|
12
|
+
constant bool fc_srgb_output [[function_constant(0)]];
|
|
13
|
+
constant bool fc_motion_blur [[function_constant(1)]];
|
|
14
|
+
constant int fc_motion_samples [[function_constant(2)]];
|
|
15
|
+
constant int fc_aa_grid [[function_constant(3)]];
|
|
16
|
+
constant bool fc_checker_background [[function_constant(4)]];
|
|
17
|
+
constant bool fc_load_textures [[function_constant(5)]];
|
|
18
|
+
constant bool fc_normal_shading [[function_constant(6)]];
|
|
19
|
+
constant bool fc_metallic_reflections [[function_constant(7)]];
|
|
20
|
+
constant bool fc_pbr_shading [[function_constant(8)]];
|
|
21
|
+
constant bool fc_punctual_light_shadows [[function_constant(9)]];
|
|
22
|
+
constant int fc_overlay_count [[function_constant(10)]];
|
|
23
|
+
constant bool fc_semantic_segmentation [[function_constant(11)]];
|
|
24
|
+
constant bool fc_has_observation [[function_constant(12)]];
|
|
25
|
+
// dynamic motion blur: the motion loop runs at submit level (one dispatch per sample against
|
|
26
|
+
// per-sample overlay structure state); each pass reads its shutter time from the SHUTTER
|
|
27
|
+
// binding and adds its linear mean into the accumulation buffers, resolved by resolve_outputs
|
|
28
|
+
constant bool fc_dynamic_motion_blur [[function_constant(13)]];
|
|
29
|
+
constant bool fc_resolve_rgb [[function_constant(14)]];
|
|
30
|
+
constant bool fc_resolve_observation = fc_resolve_rgb && fc_has_observation;
|
|
31
|
+
|
|
32
|
+
struct LaunchParams{
|
|
33
|
+
uint fb_width;
|
|
34
|
+
uint fb_height;
|
|
35
|
+
uint cam_width;
|
|
36
|
+
uint cam_height;
|
|
37
|
+
uint grid_cols;
|
|
38
|
+
uint num_cameras;
|
|
39
|
+
uint num_probes;
|
|
40
|
+
uint num_scene_lights;
|
|
41
|
+
float max_dist;
|
|
42
|
+
packed_float3 ambient_color;
|
|
43
|
+
packed_float3 miss_color_0;
|
|
44
|
+
packed_float3 miss_color_1;
|
|
45
|
+
uint first_overlay_instance;
|
|
46
|
+
uint num_overlay_slots;
|
|
47
|
+
float padding[1];
|
|
48
|
+
};
|
|
49
|
+
static_assert(sizeof(LaunchParams) == 84, "LaunchParams layout must match context.h");
|
|
50
|
+
|
|
51
|
+
struct MeshRecord{
|
|
52
|
+
device const packed_int3* index;
|
|
53
|
+
device const packed_float3* vertices;
|
|
54
|
+
device const packed_float2* tex_coord;
|
|
55
|
+
device const packed_float3* normal;
|
|
56
|
+
texture2d<float> texture;
|
|
57
|
+
texture2d<float> normal_map;
|
|
58
|
+
texture2d<float> metallic_roughness_map;
|
|
59
|
+
texture2d<float> emissive_map;
|
|
60
|
+
texture2d<float> occlusion_map;
|
|
61
|
+
packed_float3 color;
|
|
62
|
+
float metallic;
|
|
63
|
+
float roughness;
|
|
64
|
+
float opacity;
|
|
65
|
+
packed_float3 emissive;
|
|
66
|
+
float alpha_cutoff;
|
|
67
|
+
int alpha_mode;
|
|
68
|
+
int has_texture;
|
|
69
|
+
int has_normal_map;
|
|
70
|
+
int has_metallic_roughness_map;
|
|
71
|
+
int has_emissive_map;
|
|
72
|
+
int has_occlusion_map;
|
|
73
|
+
int unlit;
|
|
74
|
+
int padding[1];
|
|
75
|
+
};
|
|
76
|
+
static_assert(sizeof(MeshRecord) == 144, "MeshRecord layout must match context.h");
|
|
77
|
+
|
|
78
|
+
struct SceneLight{
|
|
79
|
+
int type; // 0=directional, 1=point, 2=spot
|
|
80
|
+
packed_float3 position;
|
|
81
|
+
packed_float3 direction;
|
|
82
|
+
packed_float3 color;
|
|
83
|
+
float attenuation_constant;
|
|
84
|
+
float attenuation_linear;
|
|
85
|
+
float attenuation_quadratic;
|
|
86
|
+
float cos_inner_cone;
|
|
87
|
+
float cos_outer_cone;
|
|
88
|
+
};
|
|
89
|
+
static_assert(sizeof(SceneLight) == 60, "SceneLight layout must match rendering/raytracing/types.h");
|
|
90
|
+
|
|
91
|
+
struct Camera{
|
|
92
|
+
packed_float3 pos;
|
|
93
|
+
packed_float3 dir_00;
|
|
94
|
+
packed_float3 dir_du;
|
|
95
|
+
packed_float3 dir_dv;
|
|
96
|
+
};
|
|
97
|
+
static_assert(sizeof(Camera) == 48, "Camera layout must match rendering/raytracing/types.h");
|
|
98
|
+
|
|
99
|
+
struct InstanceData{
|
|
100
|
+
float object_to_world[12]; // 3x4 row-major [R|t]
|
|
101
|
+
float world_to_object[12];
|
|
102
|
+
int identity;
|
|
103
|
+
int padding[3];
|
|
104
|
+
};
|
|
105
|
+
static_assert(sizeof(InstanceData) == 112, "InstanceData layout must match context.h");
|
|
106
|
+
|
|
107
|
+
inline float3 transform_point(device const float* m, float3 p){
|
|
108
|
+
return float3(m[0]*p.x + m[1]*p.y + m[2]*p.z + m[3],
|
|
109
|
+
m[4]*p.x + m[5]*p.y + m[6]*p.z + m[7],
|
|
110
|
+
m[8]*p.x + m[9]*p.y + m[10]*p.z + m[11]);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// normals transform with the inverse-transpose: multiply by the world_to_object columns
|
|
114
|
+
inline float3 transform_normal(device const float* m, float3 n){
|
|
115
|
+
return float3(m[0]*n.x + m[4]*n.y + m[8]*n.z,
|
|
116
|
+
m[1]*n.x + m[5]*n.y + m[9]*n.z,
|
|
117
|
+
m[2]*n.x + m[6]*n.y + m[10]*n.z);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// world point → screen fraction through the linear camera model: solves
|
|
121
|
+
// dir_00 + screen_x·dir_du + screen_y·dir_dv = lambda·(point − pos) by Cramer's rule;
|
|
122
|
+
// returns false for a degenerate basis or a point at/behind the camera (lambda <= 0)
|
|
123
|
+
inline bool project_camera(device const Camera& cam, float3 point, thread float& screen_x, thread float& screen_y){
|
|
124
|
+
const float3 direction = point - float3(cam.pos);
|
|
125
|
+
const float3 dir_du = float3(cam.dir_du);
|
|
126
|
+
const float3 dir_dv = float3(cam.dir_dv);
|
|
127
|
+
const float3 negative_direction = -direction;
|
|
128
|
+
const float3 cross_dv_negative_direction = cross(dir_dv, negative_direction);
|
|
129
|
+
const float det = dot(dir_du, cross_dv_negative_direction);
|
|
130
|
+
if (det > -1e-12f && det < 1e-12f)
|
|
131
|
+
return false;
|
|
132
|
+
const float inv_det = 1.f / det;
|
|
133
|
+
const float3 b = -float3(cam.dir_00);
|
|
134
|
+
screen_x = dot(b, cross_dv_negative_direction) * inv_det;
|
|
135
|
+
screen_y = dot(dir_du, cross(b, negative_direction)) * inv_det;
|
|
136
|
+
const float lambda = dot(dir_du, cross(dir_dv, b)) * inv_det;
|
|
137
|
+
return lambda > 0.f;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
struct CollisionResult{
|
|
141
|
+
float distance;
|
|
142
|
+
int hit;
|
|
143
|
+
};
|
|
144
|
+
static_assert(sizeof(CollisionResult) == 8, "CollisionResult layout must match rendering/raytracing/types.h");
|
|
145
|
+
|
|
146
|
+
constexpr sampler tex_sampler(address::repeat, filter::linear, coord::normalized);
|
|
147
|
+
|
|
148
|
+
inline uint make_8bit(float f){
|
|
149
|
+
return (uint)min(255, max(0, (int)(f * 256.0f)));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
inline uint make_rgba(float3 color){
|
|
153
|
+
return (make_8bit(color.x) << 0) | (make_8bit(color.y) << 8) | (make_8bit(color.z) << 16) | (0xffu << 24);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
inline float linear_to_srgb(float x){
|
|
157
|
+
if (x <= 0.0031308f) return 12.92f * x;
|
|
158
|
+
return 1.055f * pow(x, 1.f / 2.4f) - 0.055f;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
inline uint make_srgb_rgba_from_linear(float3 color){
|
|
162
|
+
color.x = linear_to_srgb(fmin(fmax(color.x, 0.f), 1.f));
|
|
163
|
+
color.y = linear_to_srgb(fmin(fmax(color.y, 0.f), 1.f));
|
|
164
|
+
color.z = linear_to_srgb(fmin(fmax(color.z, 0.f), 1.f));
|
|
165
|
+
return make_rgba(color);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
inline uint make_linear_rgba_from_linear(float3 color){
|
|
169
|
+
color.x = fmin(fmax(color.x, 0.f), 1.f);
|
|
170
|
+
color.y = fmin(fmax(color.y, 0.f), 1.f);
|
|
171
|
+
color.z = fmin(fmax(color.z, 0.f), 1.f);
|
|
172
|
+
return make_rgba(color);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
inline float3 lerp_camera_vec(float3 a, float3 b, float t){
|
|
176
|
+
return (1.f - t) * a + t * b;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
struct PixelLaunchContext{
|
|
180
|
+
int cam_idx;
|
|
181
|
+
int local_x;
|
|
182
|
+
int local_y;
|
|
183
|
+
int fb_offset;
|
|
184
|
+
bool valid;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
inline PixelLaunchContext pixel_launch_context(constant LaunchParams& params, uint2 pixel_id){
|
|
188
|
+
const int tile_col = (int)(pixel_id.x / params.cam_width);
|
|
189
|
+
const int tile_row = (int)(pixel_id.y / params.cam_height);
|
|
190
|
+
const int cam_idx = tile_row * (int)params.grid_cols + tile_col;
|
|
191
|
+
const int local_x = (int)pixel_id.x - tile_col * (int)params.cam_width;
|
|
192
|
+
const int local_y = (int)pixel_id.y - tile_row * (int)params.cam_height;
|
|
193
|
+
const int fb_offset = cam_idx * (int)params.cam_width * (int)params.cam_height + local_y * (int)params.cam_width + local_x;
|
|
194
|
+
return {cam_idx, local_x, local_y, fb_offset, cam_idx < (int)params.num_cameras};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
struct OverlayStructure{
|
|
198
|
+
instance_acceleration_structure structure;
|
|
199
|
+
uint num_active;
|
|
200
|
+
uint padding;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
struct TraceContext{
|
|
204
|
+
instance_acceleration_structure accel;
|
|
205
|
+
device const MeshRecord* meshes;
|
|
206
|
+
device const SceneLight* scene_lights;
|
|
207
|
+
device const uint* instance_record_base;
|
|
208
|
+
device const InstanceData* instance_data;
|
|
209
|
+
device const OverlayStructure* overlays;
|
|
210
|
+
device const uint* attachments;
|
|
211
|
+
constant LaunchParams* params;
|
|
212
|
+
uint2 pixel_id;
|
|
213
|
+
int camera;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// min-t composition of the shared world and the overlays attached to this camera; at
|
|
217
|
+
// fc_overlay_count == 0 the loop specializes away and this is a plain intersect
|
|
218
|
+
inline intersection_result<triangle_data, instancing> intersect_composed(
|
|
219
|
+
instance_acceleration_structure accel,
|
|
220
|
+
device const OverlayStructure* overlays,
|
|
221
|
+
device const uint* attachments,
|
|
222
|
+
int camera,
|
|
223
|
+
ray r,
|
|
224
|
+
bool accept_any)
|
|
225
|
+
{
|
|
226
|
+
intersector<triangle_data, instancing> i;
|
|
227
|
+
i.assume_geometry_type(geometry_type::triangle);
|
|
228
|
+
i.force_opacity(forced_opacity::opaque);
|
|
229
|
+
i.accept_any_intersection(accept_any);
|
|
230
|
+
intersection_result<triangle_data, instancing> best = i.intersect(r, accel);
|
|
231
|
+
for (int k = 0; k < fc_overlay_count; k++) {
|
|
232
|
+
if (accept_any && best.type != intersection_type::none) {
|
|
233
|
+
return best;
|
|
234
|
+
}
|
|
235
|
+
const uint overlay = attachments[camera * fc_overlay_count + k];
|
|
236
|
+
if (overlay == 0xFFFFFFFFu) continue;
|
|
237
|
+
device const OverlayStructure& entry = overlays[overlay];
|
|
238
|
+
if (entry.num_active == 0) continue;
|
|
239
|
+
ray clamped = r;
|
|
240
|
+
if (best.type != intersection_type::none) {
|
|
241
|
+
clamped.max_distance = best.distance;
|
|
242
|
+
}
|
|
243
|
+
intersection_result<triangle_data, instancing> hit = i.intersect(clamped, entry.structure);
|
|
244
|
+
if (hit.type != intersection_type::none) {
|
|
245
|
+
best = hit;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return best;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
inline float3 miss_color(thread const TraceContext& ctx){
|
|
252
|
+
if (fc_checker_background) {
|
|
253
|
+
int checker_pattern = ((int)ctx.pixel_id.x / 8) ^ ((int)ctx.pixel_id.y / 8);
|
|
254
|
+
return (checker_pattern & 1) ? float3(ctx.params->miss_color_1) : float3(ctx.params->miss_color_0);
|
|
255
|
+
}
|
|
256
|
+
return float3(ctx.params->miss_color_0);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
inline bool trace_shadow_occluded(thread const TraceContext& ctx, float3 pos, float3 direction, float max_dist){
|
|
260
|
+
ray r(pos, direction, 1e-3f, max_dist);
|
|
261
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(ctx.accel, ctx.overlays, ctx.attachments, ctx.camera, r, true);
|
|
262
|
+
return hit.type != intersection_type::none;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
template <int DEPTH>
|
|
267
|
+
struct RGBTracer;
|
|
268
|
+
|
|
269
|
+
// Bounded depth-1 "recursion": the ENABLED=false specialization does not reference RGBTracer, so
|
|
270
|
+
// template instantiation terminates (mirrors the optixGetPayload_2()-based depth in device_impl.h).
|
|
271
|
+
template <int DEPTH, bool ENABLED>
|
|
272
|
+
struct SecondaryTrace{
|
|
273
|
+
static float3 trace(thread const TraceContext& ctx, float3 origin, float3 direction, float tmin){
|
|
274
|
+
return RGBTracer<DEPTH>::trace(ctx, origin, direction, tmin, 1e20f);
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
template <int DEPTH>
|
|
279
|
+
struct SecondaryTrace<DEPTH, false>{
|
|
280
|
+
static float3 trace(thread const TraceContext&, float3, float3, float){
|
|
281
|
+
return float3(0.f);
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
template <int DEPTH>
|
|
286
|
+
inline float3 shade_basic(thread const TraceContext& ctx, thread const ray& r, thread const intersection_result<triangle_data, instancing>& hit){
|
|
287
|
+
constexpr bool SECONDARY = DEPTH < 1;
|
|
288
|
+
device const MeshRecord& self = ctx.meshes[ctx.instance_record_base[hit.user_instance_id] + hit.geometry_id];
|
|
289
|
+
device const InstanceData& instance = ctx.instance_data[hit.user_instance_id];
|
|
290
|
+
|
|
291
|
+
float3 base_color = float3(self.color);
|
|
292
|
+
float3 normal_geometric = float3(0.f, 0.f, 1.f);
|
|
293
|
+
float3 ray_dir = float3(0.f);
|
|
294
|
+
|
|
295
|
+
if (fc_load_textures || fc_normal_shading || fc_metallic_reflections) {
|
|
296
|
+
const int prim_id = hit.primitive_id;
|
|
297
|
+
const int3 index = int3(self.index[prim_id]);
|
|
298
|
+
|
|
299
|
+
if (fc_normal_shading || fc_metallic_reflections) {
|
|
300
|
+
float3 vertex_a = float3(self.vertices[index.x]);
|
|
301
|
+
float3 vertex_b = float3(self.vertices[index.y]);
|
|
302
|
+
float3 vertex_c = float3(self.vertices[index.z]);
|
|
303
|
+
if (!instance.identity) {
|
|
304
|
+
vertex_a = transform_point(instance.object_to_world, vertex_a);
|
|
305
|
+
vertex_b = transform_point(instance.object_to_world, vertex_b);
|
|
306
|
+
vertex_c = transform_point(instance.object_to_world, vertex_c);
|
|
307
|
+
}
|
|
308
|
+
normal_geometric = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
|
|
309
|
+
ray_dir = r.direction;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
if (fc_load_textures) {
|
|
313
|
+
if (self.has_texture && self.tex_coord != nullptr) {
|
|
314
|
+
const float2 bary = hit.triangle_barycentric_coord;
|
|
315
|
+
const float2 tc
|
|
316
|
+
= (1.f - bary.x - bary.y) * float2(self.tex_coord[index.x])
|
|
317
|
+
+ bary.x * float2(self.tex_coord[index.y])
|
|
318
|
+
+ bary.y * float2(self.tex_coord[index.z]);
|
|
319
|
+
float4 tex_color = self.texture.sample(tex_sampler, tc);
|
|
320
|
+
base_color = tex_color.xyz * float3(self.color);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if(self.unlit != 0){
|
|
326
|
+
return base_color;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
float3 direct = base_color;
|
|
330
|
+
if (fc_normal_shading) {
|
|
331
|
+
direct = (.2f + .8f * fabs(dot(ray_dir, normal_geometric))) * base_color;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (fc_metallic_reflections) {
|
|
335
|
+
if (SECONDARY && self.metallic > 0.f) {
|
|
336
|
+
float3 hit_point = r.origin + ray_dir * hit.distance;
|
|
337
|
+
float3 n = dot(ray_dir, normal_geometric) > 0.f ? -normal_geometric : normal_geometric;
|
|
338
|
+
float3 reflect_dir = ray_dir - 2.f * dot(ray_dir, n) * n;
|
|
339
|
+
|
|
340
|
+
float3 reflected_color = SecondaryTrace<DEPTH + 1, SECONDARY>::trace(ctx, hit_point, reflect_dir, 1e-3f);
|
|
341
|
+
|
|
342
|
+
float cos_theta = fabs(dot(ray_dir, n));
|
|
343
|
+
float fresnel = self.metallic * (0.04f + 0.96f * pow(1.f - cos_theta, 5.f));
|
|
344
|
+
return direct * ((1.f - fresnel) + fresnel * reflected_color);
|
|
345
|
+
}
|
|
346
|
+
return direct;
|
|
347
|
+
}
|
|
348
|
+
return direct;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
template <int DEPTH>
|
|
352
|
+
inline float3 shade_pbr(thread const TraceContext& ctx, thread const ray& r, thread const intersection_result<triangle_data, instancing>& hit){
|
|
353
|
+
constexpr bool SECONDARY = DEPTH < 1;
|
|
354
|
+
device const MeshRecord& self = ctx.meshes[ctx.instance_record_base[hit.user_instance_id] + hit.geometry_id];
|
|
355
|
+
device const InstanceData& instance = ctx.instance_data[hit.user_instance_id];
|
|
356
|
+
|
|
357
|
+
const int prim_id = hit.primitive_id;
|
|
358
|
+
const int3 index = int3(self.index[prim_id]);
|
|
359
|
+
float3 vertex_a = float3(self.vertices[index.x]);
|
|
360
|
+
float3 vertex_b = float3(self.vertices[index.y]);
|
|
361
|
+
float3 vertex_c = float3(self.vertices[index.z]);
|
|
362
|
+
if (!instance.identity) {
|
|
363
|
+
vertex_a = transform_point(instance.object_to_world, vertex_a);
|
|
364
|
+
vertex_b = transform_point(instance.object_to_world, vertex_b);
|
|
365
|
+
vertex_c = transform_point(instance.object_to_world, vertex_c);
|
|
366
|
+
}
|
|
367
|
+
const float2 bary = hit.triangle_barycentric_coord;
|
|
368
|
+
const float w0 = 1.f - bary.x - bary.y;
|
|
369
|
+
|
|
370
|
+
const float3 edge1 = vertex_b - vertex_a;
|
|
371
|
+
const float3 edge2 = vertex_c - vertex_a;
|
|
372
|
+
const float3 normal_geometric = normalize(cross(edge1, edge2));
|
|
373
|
+
|
|
374
|
+
float3 N;
|
|
375
|
+
if (self.normal != nullptr) {
|
|
376
|
+
float3 normal_interpolated = w0 * float3(self.normal[index.x]) + bary.x * float3(self.normal[index.y]) + bary.y * float3(self.normal[index.z]);
|
|
377
|
+
if (!instance.identity) {
|
|
378
|
+
normal_interpolated = transform_normal(instance.world_to_object, normal_interpolated);
|
|
379
|
+
}
|
|
380
|
+
N = normalize(normal_interpolated);
|
|
381
|
+
} else {
|
|
382
|
+
N = normal_geometric;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const float3 ray_dir = r.direction;
|
|
386
|
+
if (dot(ray_dir, N) > 0.f) N = -N;
|
|
387
|
+
|
|
388
|
+
const float2 tc = (self.tex_coord != nullptr)
|
|
389
|
+
? w0 * float2(self.tex_coord[index.x]) + bary.x * float2(self.tex_coord[index.y]) + bary.y * float2(self.tex_coord[index.z])
|
|
390
|
+
: float2(0.f);
|
|
391
|
+
|
|
392
|
+
float3 base_color = float3(self.color);
|
|
393
|
+
float alpha = self.opacity;
|
|
394
|
+
if (self.has_texture && self.tex_coord != nullptr) {
|
|
395
|
+
float4 tex_color = self.texture.sample(tex_sampler, tc);
|
|
396
|
+
base_color = tex_color.xyz * float3(self.color);
|
|
397
|
+
alpha *= tex_color.w;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
float3 hit_point = r.origin + ray_dir * hit.distance;
|
|
401
|
+
|
|
402
|
+
float3 color = base_color;
|
|
403
|
+
if(self.unlit == 0){
|
|
404
|
+
float metallic = self.metallic;
|
|
405
|
+
float roughness = self.roughness;
|
|
406
|
+
if (self.has_metallic_roughness_map && self.tex_coord != nullptr) {
|
|
407
|
+
float4 mr_sample = self.metallic_roughness_map.sample(tex_sampler, tc);
|
|
408
|
+
roughness = mr_sample.y * self.roughness;
|
|
409
|
+
metallic = mr_sample.z * self.metallic;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
if (self.has_normal_map && self.tex_coord != nullptr) {
|
|
413
|
+
const float2 tc0 = float2(self.tex_coord[index.x]);
|
|
414
|
+
const float2 tc1 = float2(self.tex_coord[index.y]);
|
|
415
|
+
const float2 tc2 = float2(self.tex_coord[index.z]);
|
|
416
|
+
const float2 duv1 = tc1 - tc0;
|
|
417
|
+
const float2 duv2 = tc2 - tc0;
|
|
418
|
+
float det = duv1.x * duv2.y - duv2.x * duv1.y;
|
|
419
|
+
if (fabs(det) > 1e-8f) {
|
|
420
|
+
float inv_det = 1.f / det;
|
|
421
|
+
float3 T = normalize(inv_det * (duv2.y * edge1 - duv1.y * edge2));
|
|
422
|
+
T = normalize(T - dot(T, N) * N);
|
|
423
|
+
float3 B = cross(N, T);
|
|
424
|
+
float4 nm_sample = self.normal_map.sample(tex_sampler, float2(w0 * tc0.x + bary.x * tc1.x + bary.y * tc2.x, w0 * tc0.y + bary.x * tc1.y + bary.y * tc2.y));
|
|
425
|
+
float3 n_tangent = float3(nm_sample.x * 2.f - 1.f, -(nm_sample.y * 2.f - 1.f), nm_sample.z * 2.f - 1.f);
|
|
426
|
+
N = normalize(T * n_tangent.x + B * n_tangent.y + N * n_tangent.z);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
roughness = fmax(roughness, 0.04f);
|
|
431
|
+
float roughness_alpha = roughness * roughness;
|
|
432
|
+
float alpha2 = roughness_alpha * roughness_alpha;
|
|
433
|
+
float k = (roughness + 1.f) * (roughness + 1.f) / 8.f;
|
|
434
|
+
|
|
435
|
+
float3 V = -ray_dir;
|
|
436
|
+
float NdotV = fmax(dot(N, V), 1e-4f);
|
|
437
|
+
float3 F0 = float3(0.04f) * (1.f - metallic) + base_color * metallic;
|
|
438
|
+
|
|
439
|
+
float3 Lo = float3(0.f);
|
|
440
|
+
for (int li = 0; li < (int)ctx.params->num_scene_lights; li++) {
|
|
441
|
+
device const SceneLight& light = ctx.scene_lights[li];
|
|
442
|
+
float3 Lc = float3(light.color);
|
|
443
|
+
float3 L;
|
|
444
|
+
float attenuation = 1.f;
|
|
445
|
+
float light_distance = 1e20f;
|
|
446
|
+
|
|
447
|
+
if (light.type == 0) {
|
|
448
|
+
L = float3(light.direction);
|
|
449
|
+
} else {
|
|
450
|
+
float3 to_light = float3(light.position) - hit_point;
|
|
451
|
+
float dist = length(to_light);
|
|
452
|
+
light_distance = fmax(dist - 1e-3f, 0.f);
|
|
453
|
+
L = to_light * (1.f / fmax(dist, 1e-6f));
|
|
454
|
+
attenuation = 1.f / (light.attenuation_constant + light.attenuation_linear * dist + light.attenuation_quadratic * dist * dist);
|
|
455
|
+
if (light.type == 2) {
|
|
456
|
+
float3 spot_dir = float3(light.direction);
|
|
457
|
+
float cos_angle = dot(-L, spot_dir);
|
|
458
|
+
float denom = light.cos_inner_cone - light.cos_outer_cone;
|
|
459
|
+
float spot_t = (cos_angle - light.cos_outer_cone) / (fabs(denom) > 1e-6f ? denom : 1e-6f);
|
|
460
|
+
attenuation *= fmax(fmin(spot_t, 1.f), 0.f);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
float NdotL = fmax(dot(N, L), 0.f);
|
|
465
|
+
if (NdotL <= 0.f) continue;
|
|
466
|
+
if (fc_punctual_light_shadows) {
|
|
467
|
+
if (light.type != 0 && trace_shadow_occluded(ctx, hit_point + N * 2e-3f, L, light_distance)) continue;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
float3 H = normalize(V + L);
|
|
471
|
+
float NdotH = fmax(dot(N, H), 0.f);
|
|
472
|
+
float VdotH = fmax(dot(V, H), 0.f);
|
|
473
|
+
|
|
474
|
+
float denom_D = NdotH * NdotH * (alpha2 - 1.f) + 1.f;
|
|
475
|
+
float D = alpha2 / (3.14159265f * denom_D * denom_D);
|
|
476
|
+
|
|
477
|
+
float G1_V = NdotV / (NdotV * (1.f - k) + k);
|
|
478
|
+
float G1_L = NdotL / (NdotL * (1.f - k) + k);
|
|
479
|
+
float G = G1_V * G1_L;
|
|
480
|
+
|
|
481
|
+
float pow5 = pow(1.f - VdotH, 5.f);
|
|
482
|
+
float3 F = F0 + (float3(1.f) - F0) * pow5;
|
|
483
|
+
|
|
484
|
+
float3 specular = D * G * F * (1.f / (4.f * NdotV * NdotL + 1e-4f));
|
|
485
|
+
float3 kd = (float3(1.f) - F) * (1.f - metallic);
|
|
486
|
+
float3 diffuse = kd * base_color * (1.f / 3.14159265f);
|
|
487
|
+
|
|
488
|
+
Lo = Lo + (diffuse + specular) * Lc * (attenuation * NdotL);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
float occlusion = 1.f;
|
|
492
|
+
if (self.has_occlusion_map && self.tex_coord != nullptr) {
|
|
493
|
+
float4 ao_sample = self.occlusion_map.sample(tex_sampler, tc);
|
|
494
|
+
occlusion = ao_sample.x;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
float3 emissive_color = float3(0.f);
|
|
498
|
+
if (self.has_emissive_map && self.tex_coord != nullptr) {
|
|
499
|
+
float4 em_sample = self.emissive_map.sample(tex_sampler, tc);
|
|
500
|
+
emissive_color = em_sample.xyz * float3(self.emissive);
|
|
501
|
+
} else {
|
|
502
|
+
emissive_color = float3(self.emissive);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
float3 ambient = float3(ctx.params->ambient_color) * base_color * ((1.f - metallic) * occlusion);
|
|
506
|
+
color = ambient + Lo + emissive_color;
|
|
507
|
+
|
|
508
|
+
if (SECONDARY && metallic > 0.1f) {
|
|
509
|
+
float3 reflect_dir = ray_dir - 2.f * dot(ray_dir, N) * N;
|
|
510
|
+
|
|
511
|
+
float3 reflected_color = SecondaryTrace<DEPTH + 1, SECONDARY>::trace(ctx, hit_point, reflect_dir, 1e-3f);
|
|
512
|
+
|
|
513
|
+
float fresnel_refl = F0.x + (1.f - F0.x) * pow(1.f - fmax(dot(V, N), 0.f), 5.f);
|
|
514
|
+
float reflection_weight = fresnel_refl * (1.f - roughness);
|
|
515
|
+
color = color * (1.f - reflection_weight) + reflected_color * reflection_weight;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
bool transparent = (self.alpha_mode == 2 && alpha < 0.99f) || (self.alpha_mode == 1 && alpha < self.alpha_cutoff);
|
|
521
|
+
if (SECONDARY && transparent) {
|
|
522
|
+
float3 behind_color = SecondaryTrace<DEPTH + 1, SECONDARY>::trace(ctx, hit_point, ray_dir, 1e-5f);
|
|
523
|
+
|
|
524
|
+
if (self.alpha_mode == 1) {
|
|
525
|
+
color = behind_color;
|
|
526
|
+
} else {
|
|
527
|
+
color = color * alpha + behind_color * (1.f - alpha);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return color;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
template <int DEPTH>
|
|
535
|
+
struct RGBTracer{
|
|
536
|
+
static float3 trace(thread const TraceContext& ctx, float3 origin, float3 direction, float tmin, float tmax){
|
|
537
|
+
ray r(origin, direction, tmin, tmax);
|
|
538
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(ctx.accel, ctx.overlays, ctx.attachments, ctx.camera, r, false);
|
|
539
|
+
if (hit.type == intersection_type::none) {
|
|
540
|
+
return miss_color(ctx);
|
|
541
|
+
}
|
|
542
|
+
if (fc_pbr_shading) {
|
|
543
|
+
return shade_pbr<DEPTH>(ctx, r, hit);
|
|
544
|
+
}
|
|
545
|
+
return shade_basic<DEPTH>(ctx, r, hit);
|
|
546
|
+
}
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
kernel void render_rgb(
|
|
550
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
551
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
552
|
+
device const Camera* cameras_open [[buffer(2)]],
|
|
553
|
+
device uint* fb [[buffer(3)]],
|
|
554
|
+
device const MeshRecord* meshes [[buffer(4)]],
|
|
555
|
+
device const SceneLight* scene_lights [[buffer(5)]],
|
|
556
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
557
|
+
device const uint* instance_record_base [[buffer(9)]],
|
|
558
|
+
device const InstanceData* instance_data [[buffer(10)]],
|
|
559
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
560
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
561
|
+
device float* observation [[buffer(14), function_constant(fc_has_observation)]],
|
|
562
|
+
device float* rgb_accumulation [[buffer(15), function_constant(fc_dynamic_motion_blur)]],
|
|
563
|
+
constant float& shutter [[buffer(17), function_constant(fc_dynamic_motion_blur)]],
|
|
564
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
565
|
+
{
|
|
566
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
567
|
+
if (!ctx.valid)
|
|
568
|
+
return;
|
|
569
|
+
|
|
570
|
+
TraceContext trace_ctx{accel, meshes, scene_lights, instance_record_base, instance_data, overlays, overlay_attachments, ¶ms, pixel_id, ctx.cam_idx};
|
|
571
|
+
|
|
572
|
+
float3 accumulated = float3(0.f);
|
|
573
|
+
const float inv_aa_grid = 1.f / float(fc_aa_grid);
|
|
574
|
+
const int motion_samples = fc_dynamic_motion_blur ? 1 : fc_motion_samples;
|
|
575
|
+
for (int motion_i = 0; motion_i < motion_samples; motion_i++) {
|
|
576
|
+
float3 pos;
|
|
577
|
+
float3 dir_00;
|
|
578
|
+
float3 dir_du;
|
|
579
|
+
float3 dir_dv;
|
|
580
|
+
if (fc_motion_blur) {
|
|
581
|
+
device const Camera& cam_open = cameras_open[ctx.cam_idx];
|
|
582
|
+
device const Camera& cam_close = cameras_close[ctx.cam_idx];
|
|
583
|
+
const float shutter_t = fc_dynamic_motion_blur ? shutter : (float(motion_i) + .5f) * (1.f / float(fc_motion_samples));
|
|
584
|
+
pos = lerp_camera_vec(float3(cam_open.pos), float3(cam_close.pos), shutter_t);
|
|
585
|
+
dir_00 = lerp_camera_vec(float3(cam_open.dir_00), float3(cam_close.dir_00), shutter_t);
|
|
586
|
+
dir_du = lerp_camera_vec(float3(cam_open.dir_du), float3(cam_close.dir_du), shutter_t);
|
|
587
|
+
dir_dv = lerp_camera_vec(float3(cam_open.dir_dv), float3(cam_close.dir_dv), shutter_t);
|
|
588
|
+
}
|
|
589
|
+
else {
|
|
590
|
+
device const Camera& cam = cameras_close[ctx.cam_idx];
|
|
591
|
+
pos = float3(cam.pos);
|
|
592
|
+
dir_00 = float3(cam.dir_00);
|
|
593
|
+
dir_du = float3(cam.dir_du);
|
|
594
|
+
dir_dv = float3(cam.dir_dv);
|
|
595
|
+
}
|
|
596
|
+
for (int aa_y = 0; aa_y < fc_aa_grid; aa_y++) {
|
|
597
|
+
for (int aa_x = 0; aa_x < fc_aa_grid; aa_x++) {
|
|
598
|
+
const float2 screen = (float2(ctx.local_x, ctx.local_y) + float2((float(aa_x) + .5f) * inv_aa_grid, (float(aa_y) + .5f) * inv_aa_grid)) / float2(params.cam_width, params.cam_height);
|
|
599
|
+
const float3 direction = normalize(dir_00 + screen.x * dir_du + screen.y * dir_dv);
|
|
600
|
+
accumulated += RGBTracer<0>::trace(trace_ctx, pos, direction, 0.f, 1e30f);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
const int samples = motion_samples * fc_aa_grid * fc_aa_grid;
|
|
605
|
+
const float3 color = accumulated * (1.f / float(samples));
|
|
606
|
+
if (fc_dynamic_motion_blur) {
|
|
607
|
+
// one pass of the launch-level motion loop: add this pass's linear mean (each thread
|
|
608
|
+
// owns its pixel — no atomics); resolve_outputs averages and quantizes
|
|
609
|
+
rgb_accumulation[ctx.fb_offset * 3 + 0] += color.x;
|
|
610
|
+
rgb_accumulation[ctx.fb_offset * 3 + 1] += color.y;
|
|
611
|
+
rgb_accumulation[ctx.fb_offset * 3 + 2] += color.z;
|
|
612
|
+
return;
|
|
613
|
+
}
|
|
614
|
+
if (fc_has_observation) {
|
|
615
|
+
// the observation is the frame-buffer color before 8-bit quantization
|
|
616
|
+
float3 obs_color = clamp(color, 0.f, 1.f);
|
|
617
|
+
if (fc_srgb_output) {
|
|
618
|
+
obs_color = float3(linear_to_srgb(obs_color.x), linear_to_srgb(obs_color.y), linear_to_srgb(obs_color.z));
|
|
619
|
+
}
|
|
620
|
+
observation[ctx.fb_offset * 3 + 0] = obs_color.x;
|
|
621
|
+
observation[ctx.fb_offset * 3 + 1] = obs_color.y;
|
|
622
|
+
observation[ctx.fb_offset * 3 + 2] = obs_color.z;
|
|
623
|
+
}
|
|
624
|
+
if (fc_srgb_output) {
|
|
625
|
+
fb[ctx.fb_offset] = make_srgb_rgba_from_linear(color);
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
fb[ctx.fb_offset] = make_linear_rgba_from_linear(color);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
kernel void render_depth(
|
|
633
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
634
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
635
|
+
device uint* depth_out [[buffer(3)]],
|
|
636
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
637
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
638
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
639
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
640
|
+
{
|
|
641
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
642
|
+
if(!ctx.valid){
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
device const Camera& cam = cameras_close[ctx.cam_idx];
|
|
646
|
+
const float2 screen = (float2(ctx.local_x, ctx.local_y) + float2(.5f)) / float2(params.cam_width, params.cam_height);
|
|
647
|
+
const float3 direction = normalize(float3(cam.dir_00) + screen.x * float3(cam.dir_du) + screen.y * float3(cam.dir_dv));
|
|
648
|
+
const float3 normal = normalize(cross(float3(cam.dir_du), float3(cam.dir_dv)));
|
|
649
|
+
ray r(float3(cam.pos), direction, 0.f, 1e30f);
|
|
650
|
+
const auto hit = intersect_composed(accel, overlays, overlay_attachments, ctx.cam_idx, r, false);
|
|
651
|
+
if(hit.type == intersection_type::none){
|
|
652
|
+
depth_out[ctx.fb_offset] = 0x7f800000u;
|
|
653
|
+
}
|
|
654
|
+
else{
|
|
655
|
+
depth_out[ctx.fb_offset] = as_type<uint>(hit.distance * abs(dot(direction, normal)));
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
// divides the accumulated linear radiance by the sample count and writes the declared outputs
|
|
660
|
+
// with the same transfer curve + quantization as the single-dispatch path
|
|
661
|
+
kernel void resolve_outputs(
|
|
662
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
663
|
+
device uint* fb [[buffer(3), function_constant(fc_resolve_rgb)]],
|
|
664
|
+
device float* observation [[buffer(14), function_constant(fc_resolve_observation)]],
|
|
665
|
+
device const float* rgb_accumulation [[buffer(15), function_constant(fc_resolve_rgb)]],
|
|
666
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
667
|
+
{
|
|
668
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
669
|
+
if (!ctx.valid)
|
|
670
|
+
return;
|
|
671
|
+
const float inv_samples = 1.f / float(fc_motion_samples);
|
|
672
|
+
if (fc_resolve_rgb) {
|
|
673
|
+
const float3 color = float3(
|
|
674
|
+
rgb_accumulation[ctx.fb_offset * 3 + 0],
|
|
675
|
+
rgb_accumulation[ctx.fb_offset * 3 + 1],
|
|
676
|
+
rgb_accumulation[ctx.fb_offset * 3 + 2]) * inv_samples;
|
|
677
|
+
if (fc_resolve_observation) {
|
|
678
|
+
float3 obs_color = clamp(color, 0.f, 1.f);
|
|
679
|
+
if (fc_srgb_output) {
|
|
680
|
+
obs_color = float3(linear_to_srgb(obs_color.x), linear_to_srgb(obs_color.y), linear_to_srgb(obs_color.z));
|
|
681
|
+
}
|
|
682
|
+
observation[ctx.fb_offset * 3 + 0] = obs_color.x;
|
|
683
|
+
observation[ctx.fb_offset * 3 + 1] = obs_color.y;
|
|
684
|
+
observation[ctx.fb_offset * 3 + 2] = obs_color.z;
|
|
685
|
+
}
|
|
686
|
+
if (fc_srgb_output) {
|
|
687
|
+
fb[ctx.fb_offset] = make_srgb_rgba_from_linear(color);
|
|
688
|
+
}
|
|
689
|
+
else {
|
|
690
|
+
fb[ctx.fb_offset] = make_linear_rgba_from_linear(color);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
// single-sample by design: instance labels cannot be averaged, so anti-aliasing and motion blur
|
|
696
|
+
// do not apply (shutter-close camera, pixel-center ray)
|
|
697
|
+
kernel void render_segmentation(
|
|
698
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
699
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
700
|
+
device uint* segmentation_out [[buffer(3)]],
|
|
701
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
702
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
703
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
704
|
+
device const uint* instance_classes [[buffer(13)]],
|
|
705
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
706
|
+
{
|
|
707
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
708
|
+
if (!ctx.valid)
|
|
709
|
+
return;
|
|
710
|
+
|
|
711
|
+
device const Camera& cam = cameras_close[ctx.cam_idx];
|
|
712
|
+
const float2 screen = (float2(ctx.local_x, ctx.local_y) + float2(0.5f, 0.5f)) / float2(params.cam_width, params.cam_height);
|
|
713
|
+
const float3 direction = normalize(float3(cam.dir_00) + screen.x * float3(cam.dir_du) + screen.y * float3(cam.dir_dv));
|
|
714
|
+
|
|
715
|
+
ray r(float3(cam.pos), direction, 0.f, 1e30f);
|
|
716
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(accel, overlays, overlay_attachments, ctx.cam_idx, r, false);
|
|
717
|
+
segmentation_out[ctx.fb_offset] = hit.type == intersection_type::none ? 0xFFFFFFFFu : (fc_semantic_segmentation ? instance_classes[hit.user_instance_id] : (uint)hit.user_instance_id);
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
// single-sample by design: unit normals cannot be averaged, so anti-aliasing and motion blur
|
|
721
|
+
// do not apply (shutter-close camera, pixel-center ray); world-frame geometric normal,
|
|
722
|
+
// oriented against the ray, zero on miss
|
|
723
|
+
kernel void render_normals(
|
|
724
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
725
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
726
|
+
device float* normals_out [[buffer(3)]],
|
|
727
|
+
device const MeshRecord* meshes [[buffer(4)]],
|
|
728
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
729
|
+
device const uint* instance_record_base [[buffer(9)]],
|
|
730
|
+
device const InstanceData* instance_data [[buffer(10)]],
|
|
731
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
732
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
733
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
734
|
+
{
|
|
735
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
736
|
+
if (!ctx.valid)
|
|
737
|
+
return;
|
|
738
|
+
|
|
739
|
+
device const Camera& cam = cameras_close[ctx.cam_idx];
|
|
740
|
+
const float2 screen = (float2(ctx.local_x, ctx.local_y) + float2(0.5f, 0.5f)) / float2(params.cam_width, params.cam_height);
|
|
741
|
+
const float3 direction = normalize(float3(cam.dir_00) + screen.x * float3(cam.dir_du) + screen.y * float3(cam.dir_dv));
|
|
742
|
+
|
|
743
|
+
ray r(float3(cam.pos), direction, 0.f, 1e30f);
|
|
744
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(accel, overlays, overlay_attachments, ctx.cam_idx, r, false);
|
|
745
|
+
float3 normal = float3(0.f);
|
|
746
|
+
if (hit.type != intersection_type::none) {
|
|
747
|
+
device const MeshRecord& self = meshes[instance_record_base[hit.user_instance_id] + hit.geometry_id];
|
|
748
|
+
device const InstanceData& instance = instance_data[hit.user_instance_id];
|
|
749
|
+
const int3 index = int3(self.index[hit.primitive_id]);
|
|
750
|
+
float3 vertex_a = float3(self.vertices[index.x]);
|
|
751
|
+
float3 vertex_b = float3(self.vertices[index.y]);
|
|
752
|
+
float3 vertex_c = float3(self.vertices[index.z]);
|
|
753
|
+
if (!instance.identity) {
|
|
754
|
+
vertex_a = transform_point(instance.object_to_world, vertex_a);
|
|
755
|
+
vertex_b = transform_point(instance.object_to_world, vertex_b);
|
|
756
|
+
vertex_c = transform_point(instance.object_to_world, vertex_c);
|
|
757
|
+
}
|
|
758
|
+
normal = normalize(cross(vertex_b - vertex_a, vertex_c - vertex_a));
|
|
759
|
+
if (dot(direction, normal) > 0.f) {
|
|
760
|
+
normal = -normal;
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
normals_out[ctx.fb_offset * 3 + 0] = normal.x;
|
|
764
|
+
normals_out[ctx.fb_offset * 3 + 1] = normal.y;
|
|
765
|
+
normals_out[ctx.fb_offset * 3 + 2] = normal.z;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
// FlowStatus codes (rl_tools/rendering/raytracing/types.h)
|
|
769
|
+
constant uint FLOW_STATUS_VALID = 0u;
|
|
770
|
+
constant uint FLOW_STATUS_MISS = 1u;
|
|
771
|
+
constant uint FLOW_STATUS_BEHIND = 2u;
|
|
772
|
+
constant uint FLOW_STATUS_OUT_OF_FRAME = 3u;
|
|
773
|
+
constant uint FLOW_STATUS_OCCLUDED = 4u;
|
|
774
|
+
constant float FLOW_VISIBILITY_EPSILON = 1e-4f;
|
|
775
|
+
|
|
776
|
+
// two-instant flow, one direction per kernel (mirror of the generic render_flow_frame):
|
|
777
|
+
// single-sample from the source pixel centre against the source instant's overlay structures;
|
|
778
|
+
// the hit point is carried to the target instant by its slot's delta, projected through the
|
|
779
|
+
// target camera, and tested for visibility from the target camera against the target instant
|
|
780
|
+
// with the relative margin FLOW_VISIBILITY_EPSILON. Status priority MISS, BEHIND, OUT_OF_FRAME,
|
|
781
|
+
// OCCLUDED, VALID; the vector is zero for MISS and BEHIND and the geometric flow otherwise
|
|
782
|
+
inline void flow_pixel(
|
|
783
|
+
bool source_previous,
|
|
784
|
+
constant LaunchParams& params,
|
|
785
|
+
device const Camera* cameras_close,
|
|
786
|
+
device const Camera* cameras_previous,
|
|
787
|
+
device float* flow_out,
|
|
788
|
+
device uint* flow_status_out,
|
|
789
|
+
instance_acceleration_structure accel,
|
|
790
|
+
device const OverlayStructure* overlays,
|
|
791
|
+
device const OverlayStructure* overlays_previous,
|
|
792
|
+
device const uint* overlay_attachments,
|
|
793
|
+
device const float* flow_deltas,
|
|
794
|
+
thread const PixelLaunchContext& ctx)
|
|
795
|
+
{
|
|
796
|
+
device const Camera& cam = source_previous ? cameras_previous[ctx.cam_idx] : cameras_close[ctx.cam_idx];
|
|
797
|
+
device const Camera& cam_target = source_previous ? cameras_close[ctx.cam_idx] : cameras_previous[ctx.cam_idx];
|
|
798
|
+
device const OverlayStructure* overlays_source = source_previous ? overlays_previous : overlays;
|
|
799
|
+
device const OverlayStructure* overlays_target = source_previous ? overlays : overlays_previous;
|
|
800
|
+
const uint source_first_overlay_instance = params.first_overlay_instance + (source_previous ? params.num_overlay_slots * (1u + (fc_dynamic_motion_blur ? (uint)fc_motion_samples : 0u)) : 0u);
|
|
801
|
+
const uint delta_slab = source_previous ? params.num_overlay_slots * 12u : 0u;
|
|
802
|
+
const float2 screen = (float2(ctx.local_x, ctx.local_y) + float2(0.5f, 0.5f)) / float2(params.cam_width, params.cam_height);
|
|
803
|
+
const float3 direction = normalize(float3(cam.dir_00) + screen.x * float3(cam.dir_du) + screen.y * float3(cam.dir_dv));
|
|
804
|
+
|
|
805
|
+
ray r(float3(cam.pos), direction, 0.f, 1e30f);
|
|
806
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(accel, overlays_source, overlay_attachments, ctx.cam_idx, r, false);
|
|
807
|
+
float2 flow = float2(0.f);
|
|
808
|
+
uint status = FLOW_STATUS_MISS;
|
|
809
|
+
if (hit.type != intersection_type::none) {
|
|
810
|
+
float3 point = float3(cam.pos) + direction * hit.distance;
|
|
811
|
+
if (fc_overlay_count > 0 && (uint)hit.user_instance_id >= source_first_overlay_instance) {
|
|
812
|
+
point = transform_point(flow_deltas + delta_slab + ((uint)hit.user_instance_id - source_first_overlay_instance) * 12, point);
|
|
813
|
+
}
|
|
814
|
+
float target_x, target_y;
|
|
815
|
+
if (!project_camera(cam_target, point, target_x, target_y)) {
|
|
816
|
+
status = FLOW_STATUS_BEHIND;
|
|
817
|
+
} else {
|
|
818
|
+
flow = float2(target_x * (float)params.cam_width - ((float)ctx.local_x + 0.5f),
|
|
819
|
+
target_y * (float)params.cam_height - ((float)ctx.local_y + 0.5f));
|
|
820
|
+
if (target_x < 0.f || target_x >= 1.f || target_y < 0.f || target_y >= 1.f) {
|
|
821
|
+
status = FLOW_STATUS_OUT_OF_FRAME;
|
|
822
|
+
} else {
|
|
823
|
+
const float3 to_point = point - float3(cam_target.pos);
|
|
824
|
+
const float len = length(to_point);
|
|
825
|
+
const float3 visibility_direction = to_point * (1.f / len);
|
|
826
|
+
ray visibility(float3(cam_target.pos), visibility_direction, 0.f, len * (1.f - FLOW_VISIBILITY_EPSILON));
|
|
827
|
+
intersection_result<triangle_data, instancing> occluder = intersect_composed(accel, overlays_target, overlay_attachments, ctx.cam_idx, visibility, true);
|
|
828
|
+
status = occluder.type != intersection_type::none ? FLOW_STATUS_OCCLUDED : FLOW_STATUS_VALID;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
flow_out[ctx.fb_offset * 2 + 0] = flow.x;
|
|
833
|
+
flow_out[ctx.fb_offset * 2 + 1] = flow.y;
|
|
834
|
+
flow_status_out[ctx.fb_offset] = status;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
kernel void render_flow(
|
|
838
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
839
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
840
|
+
device float* flow_out [[buffer(3)]],
|
|
841
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
842
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
843
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
844
|
+
device const float* flow_deltas [[buffer(19)]],
|
|
845
|
+
device uint* flow_status_out [[buffer(20)]],
|
|
846
|
+
device const Camera* cameras_previous [[buffer(21)]],
|
|
847
|
+
device const OverlayStructure* overlays_previous [[buffer(22)]],
|
|
848
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
849
|
+
{
|
|
850
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
851
|
+
if (!ctx.valid)
|
|
852
|
+
return;
|
|
853
|
+
flow_pixel(false, params, cameras_close, cameras_previous, flow_out, flow_status_out, accel, overlays, overlays_previous, overlay_attachments, flow_deltas, ctx);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
kernel void render_flow_forward(
|
|
857
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
858
|
+
device const Camera* cameras_close [[buffer(1)]],
|
|
859
|
+
device float* flow_out [[buffer(3)]],
|
|
860
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
861
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
862
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
863
|
+
device const float* flow_deltas [[buffer(19)]],
|
|
864
|
+
device uint* flow_status_out [[buffer(20)]],
|
|
865
|
+
device const Camera* cameras_previous [[buffer(21)]],
|
|
866
|
+
device const OverlayStructure* overlays_previous [[buffer(22)]],
|
|
867
|
+
uint2 pixel_id [[thread_position_in_grid]])
|
|
868
|
+
{
|
|
869
|
+
const PixelLaunchContext ctx = pixel_launch_context(params, pixel_id);
|
|
870
|
+
if (!ctx.valid)
|
|
871
|
+
return;
|
|
872
|
+
flow_pixel(true, params, cameras_close, cameras_previous, flow_out, flow_status_out, accel, overlays, overlays_previous, overlay_attachments, flow_deltas, ctx);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
kernel void render_collision(
|
|
876
|
+
constant LaunchParams& params [[buffer(0)]],
|
|
877
|
+
device const Camera* cameras [[buffer(1)]],
|
|
878
|
+
device const packed_float3* probe_directions [[buffer(6)]],
|
|
879
|
+
device CollisionResult* results [[buffer(7)]],
|
|
880
|
+
instance_acceleration_structure accel [[buffer(8)]],
|
|
881
|
+
device const OverlayStructure* overlays [[buffer(11)]],
|
|
882
|
+
device const uint* overlay_attachments [[buffer(12)]],
|
|
883
|
+
uint2 idx [[thread_position_in_grid]])
|
|
884
|
+
{
|
|
885
|
+
const int cam_idx = (int)idx.x;
|
|
886
|
+
const int probe_idx = (int)idx.y;
|
|
887
|
+
|
|
888
|
+
if (cam_idx >= (int)params.num_cameras || probe_idx >= (int)params.num_probes)
|
|
889
|
+
return;
|
|
890
|
+
|
|
891
|
+
device const Camera& cam = cameras[cam_idx];
|
|
892
|
+
|
|
893
|
+
float3 dir;
|
|
894
|
+
if (probe_idx == 0) {
|
|
895
|
+
dir = normalize(float3(cam.dir_00) + 0.5f * float3(cam.dir_du) + 0.5f * float3(cam.dir_dv));
|
|
896
|
+
} else {
|
|
897
|
+
dir = float3(probe_directions[probe_idx]);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
ray r(float3(cam.pos), dir, 1e-3f, params.max_dist);
|
|
901
|
+
intersection_result<triangle_data, instancing> hit = intersect_composed(accel, overlays, overlay_attachments, cam_idx, r, false);
|
|
902
|
+
|
|
903
|
+
CollisionResult result;
|
|
904
|
+
if (hit.type == intersection_type::none) {
|
|
905
|
+
result.distance = as_type<float>(0x7f800000u);
|
|
906
|
+
result.hit = 0;
|
|
907
|
+
} else {
|
|
908
|
+
result.distance = hit.distance;
|
|
909
|
+
result.hit = 1;
|
|
910
|
+
}
|
|
911
|
+
results[cam_idx * (int)params.num_probes + probe_idx] = result;
|
|
912
|
+
}
|