61 std::vector<glm::vec4> ndc = {
62 glm::vec4(-1, -1, -1, 1),
63 glm::vec4( 1, -1, -1, 1),
64 glm::vec4( 1, 1, -1, 1),
65 glm::vec4(-1, 1, -1, 1),
66 glm::vec4(-1, -1, 1, 1),
67 glm::vec4( 1, -1, 1, 1),
68 glm::vec4( 1, 1, 1, 1),
69 glm::vec4(-1, 1, 1, 1)
75 std::vector<glm::vec3> ret(ndc.size());
76 for(
unsigned int i = 0; i < ndc.size(); i++) {
78 ret[i] = glm::vec3(tmp) / tmp[3];
85 glm::vec3 cam_dir = glm::normalize(
direction);
87 glm::vec3 far_center = point +
far_plane * cam_dir;
88 glm::vec3 near_center = point +
near_plane * cam_dir;
92 glm::vec3 left_normal = glm::normalize(glm::cross(fpoints[7] - fpoints[3],
93 fpoints[0] - fpoints[3]));
94 glm::vec3 right_normal = glm::normalize(glm::cross(fpoints[1] - fpoints[2],
95 fpoints[6] - fpoints[2]));
96 glm::vec3 top_normal = glm::normalize(glm::cross(fpoints[2] - fpoints[3],
97 fpoints[7] - fpoints[3]));
98 glm::vec3 bottom_normal = glm::normalize(glm::cross(fpoints[4] - fpoints[0],
99 fpoints[1] - fpoints[0]));
101 std::vector<float> ret(6);
103 ret[0] = glm::dot(cam_dir,
position - far_center);
104 ret[1] = glm::dot(-cam_dir,
position - near_center);
105 ret[2] = glm::dot(left_normal,
position - fpoints[3]);
106 ret[3] = glm::dot(right_normal,
position - fpoints[2]);
107 ret[4] = glm::dot(top_normal,
position - fpoints[3]);
108 ret[5] = glm::dot(bottom_normal,
position - fpoints[0]);