Toast Engine
Loading...
Searching...
No Matches
depth_convention.hpp
Go to the documentation of this file.
1
4
5#pragma once
6
7#include <glm/ext/matrix_clip_space.hpp>
8#include <glm/glm.hpp>
9#include <vulkan/vulkan.hpp>
10
11namespace renderer::depth {
12
14inline constexpr bool k_reversed_z = true;
15
16inline constexpr float k_near = k_reversed_z ? 1.0f : 0.0f;
17inline constexpr float k_far = k_reversed_z ? 0.0f : 1.0f;
18
19inline constexpr float k_clear = k_far;
20
21inline constexpr vk::CompareOp k_closer = k_reversed_z ? vk::CompareOp::eGreater : vk::CompareOp::eLess;
23inline constexpr vk::CompareOp k_closer_or_equal = k_reversed_z ? vk::CompareOp::eGreaterOrEqual : vk::CompareOp::eLessOrEqual;
24
26[[nodiscard]]
27inline auto perspective(float fovy, float aspect, float near_plane, float far_plane) -> glm::mat4 {
28 // Swapping the planes maps near to 1 and far to 0
29 return k_reversed_z ? glm::perspectiveRH_ZO(fovy, aspect, far_plane, near_plane)
30 : glm::perspectiveRH_ZO(fovy, aspect, near_plane, far_plane);
31}
32
33}
constexpr vk::CompareOp k_closer_or_equal
Drawing over a depth prepass and far plane draws such as the skybox.
Definition depth_convention.hpp:23
auto perspective(float fovy, float aspect, float near_plane, float far_plane) -> glm::mat4
Callers still apply their own Y flip.
Definition depth_convention.hpp:27
constexpr bool k_reversed_z
Near 1 far 0 for even float precision over distance.
Definition depth_convention.hpp:14