chrono_batch_render/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
2 / 2
100.0%
Branches:
7 / 8
87.5%
Functions:
-
-%

stage/views/poses.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 #pragma once
3
4 #include <cstdint>
5 #include <memory>
6
7 #include <dlpack/dlpack.h>
8
9 #include "chrono_batch_render/device/operation.h"
10 #include "chrono_batch_render/device/stream.h"
11 #include "chrono_batch_render/device/tensor.h"
12 #include "chrono_batch_render/export.h"
13 #include "chrono_batch_render/stage/views/attribute.h"
14
15 namespace chrono::batch_render {
16
17 class CHRONO_BATCH_RENDER_API Poses {
18 public:
19 explicit Poses(std::shared_ptr<ViewState> view);
20
21 105716 uint32_t Size() const {
22
7/8
✓ Branch 1 taken 7 times.
✓ Branch 4 taken 115 times.
✓ Branch 7 taken 115 times.
✓ Branch 10 taken 115 times.
✓ Branch 13 taken 35119 times.
✓ Branch 16 taken 35118 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 time.
105716 return m_translate.Size();
23 }
24
25 device::Operation Write(const DLTensor& source, Stream producer = Stream::None(),
26 QuaternionOrder order = QuaternionOrder::Xyzw,
27 const DLTensor* rows = nullptr, const DLTensor* mask = nullptr);
28 device::Operation Write(const DLTensor& translation, const DLTensor& rotation,
29 Stream producer = Stream::None(),
30 QuaternionOrder order = QuaternionOrder::Xyzw,
31 const DLTensor* rows = nullptr, const DLTensor* mask = nullptr);
32 device::Operation Write(const device::Tensor& source, Stream producer = Stream::None(),
33 QuaternionOrder order = QuaternionOrder::Xyzw,
34 const device::Tensor& rows = {}, const device::Tensor& mask = {});
35 device::Operation Write(const device::Tensor& translation, const device::Tensor& rotation,
36 Stream producer = Stream::None(),
37 QuaternionOrder order = QuaternionOrder::Xyzw,
38 const device::Tensor& rows = {}, const device::Tensor& mask = {});
39 device::Tensor Read(device::DType type = device::DType::Float32,
40 Stream consumer = Stream::Host(),
41 QuaternionOrder order = QuaternionOrder::Xyzw) const;
42
43 device::Operation WriteWorld(const device::Tensor& values, const device::Tensor* rotations,
44 Stream producer, QuaternionOrder order, const device::Tensor& rows,
45 const device::Tensor& mask);
46 device::Tensor ReadWorld(device::DType type, Stream consumer, QuaternionOrder order) const;
47 device::Tensor ReadWorldScales(device::DType type, Stream consumer) const;
48
49 private:
50 void CheckSources(const device::Tensor& values, const device::Tensor* rotations,
51 const device::Tensor& rows) const;
52 device::Operation Dispatch(const device::Tensor& values, const device::Tensor* rotations,
53 Stream producer, QuaternionOrder order, const device::Tensor& rows,
54 const device::Tensor& mask);
55
56 UntypedAttribute m_translate;
57 UntypedAttribute m_orient;
58 };
59
60 }
61