Toast Engine
Loading...
Searching...
No Matches
cube_face_basis.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
9#include <cstdint>
10#include <glm/glm.hpp>
11
12namespace renderer {
13
15 glm::vec3 right;
16 glm::vec3 up;
17 glm::vec3 forward;
18};
19
21[[nodiscard]]
22inline auto cubeFaceBasis(uint32_t face) -> CubeFaceBasis {
23 switch (face) {
24 case 0:
25 return {
26 {0.0f, 0.0f, -1.0f},
27 {0.0f, -1.0f, 0.0f},
28 {1.0f, 0.0f, 0.0f}
29 };
30 case 1:
31 return {
32 { 0.0f, 0.0f, 1.0f},
33 { 0.0f, -1.0f, 0.0f},
34 {-1.0f, 0.0f, 0.0f}
35 };
36 case 2:
37 return {
38 {1.0f, 0.0f, 0.0f},
39 {0.0f, 0.0f, 1.0f},
40 {0.0f, 1.0f, 0.0f}
41 };
42 case 3:
43 return {
44 {1.0f, 0.0f, 0.0f},
45 {0.0f, 0.0f, -1.0f},
46 {0.0f, -1.0f, 0.0f}
47 };
48 case 4:
49 return {
50 {1.0f, 0.0f, 0.0f},
51 {0.0f, -1.0f, 0.0f},
52 {0.0f, 0.0f, 1.0f}
53 };
54 default:
55 return {
56 {-1.0f, 0.0f, 0.0f},
57 { 0.0f, -1.0f, 0.0f},
58 { 0.0f, 0.0f, -1.0f}
59 };
60 }
61}
62
63}
auto cubeFaceBasis(uint32_t face) -> CubeFaceBasis
+X -X +Y -Y +Z -Z order. Must agree with directionForFace() in environment.slang
Definition cube_face_basis.hpp:22
Definition cube_face_basis.hpp:14