Wayverb
conversions.h
1 #pragma once
2 
3 #include "core/cl/include.h"
4 
5 #include "glm/glm.hpp"
6 
7 namespace wayverb {
8 namespace core {
9 
10 struct to_cl_float3 final {
11  template <typename T>
12  constexpr cl_float3 operator()(const T& t) const {
13  return cl_float3{{t.x, t.y, t.z, 0}};
14  }
15 };
16 
17 struct to_cl_int3 final {
18  template <typename T>
19  constexpr cl_int3 operator()(const T& t) const {
20  return cl_int3{{t.x, t.y, t.z, 0}};
21  }
22 };
23 
25 
26 struct to_vec3 final {
27  template <typename T>
28  constexpr glm::vec3 operator()(const T& t) const {
29  return glm::vec3{t.x, t.y, t.z};
30  }
31 };
32 
33 template <>
34 constexpr glm::vec3 to_vec3::operator()(const cl_float3& t) const {
35  return glm::vec3{t.s[0], t.s[1], t.s[2]};
36 }
37 
38 template <>
39 constexpr glm::vec3 to_vec3::operator()(const glm::vec3& t) const {
40  return t;
41 }
42 
43 struct to_ivec3 final {
44  template <typename T>
45  constexpr glm::ivec3 operator()(const T& t) const {
46  return glm::ivec3{t.x, t.y, t.z};
47  }
48 };
49 
50 template <>
51 constexpr glm::ivec3 to_ivec3::operator()(const cl_int3& t) const {
52  return glm::ivec3{t.s[0], t.s[1], t.s[2]};
53 }
54 
55 template <>
56 constexpr glm::ivec3 to_ivec3::operator()(const glm::ivec3& t) const {
57  return t;
58 }
59 
61 
62 struct to_vec2 final {
63  template <typename T>
64  constexpr glm::vec2 operator()(const T& t) const {
65  return glm::vec2{t.x, t.y};
66  }
67 };
68 
69 template<>
70 constexpr glm::vec2 to_vec2::operator()(const cl_float2& t) const {
71  return glm::vec2{t.s[0], t.s[1]};
72 }
73 
74 template <>
75 constexpr glm::vec2 to_vec2::operator()(const glm::vec2& t) const {
76  return t;
77 }
78 
79 struct to_ivec2 final {
80  template <typename T>
81  constexpr glm::ivec2 operator()(const T& t) const {
82  return glm::ivec2{t.x, t.y};
83  }
84 };
85 
86 template<>
87 constexpr glm::ivec2 to_ivec2::operator()(const cl_int2& t) const {
88  return glm::ivec2{t.s[0], t.s[1]};
89 }
90 
91 template <>
92 constexpr glm::ivec2 to_ivec2::operator()(const glm::ivec2& t) const {
93  return t;
94 }
95 
96 } // namespace core
97 } // namespace wayverb
Definition: conversions.h:43
Definition: conversions.h:62
Definition: traits.cpp:2
Definition: conversions.h:10
Definition: capsule_base.h:9
Definition: conversions.h:17
Definition: conversions.h:26
Definition: conversions.h:79