Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
cubemap_target.hpp
Go to the documentation of this file.
1
6
7
#pragma once
8
9
#include "vulkan_common.hpp"
10
11
#include <optional>
12
#include <string_view>
13
#include <vector>
14
15
namespace
renderer {
16
class
VulkanCore
;
17
18
class
CubemapTarget
{
19
public
:
20
void
create(
21
const
VulkanCore
& core, vk::Format format, uint32_t size, uint32_t mip_levels, std::string_view debug_name,
22
vk::ImageUsageFlags extra_usage = {},
bool
with_face_views = true
23
);
24
25
void
transition(vk::CommandBuffer cmd,
sync::Usage
next);
26
28
void
setUsage
(
sync::Usage
usage)
noexcept
{ m_state.usage = usage; }
29
30
[[nodiscard]]
31
auto
faceView(uint32_t mip, uint32_t face)
const
-> vk::ImageView;
32
33
[[nodiscard]]
34
auto
cubeView() const -> vk::ImageView {
35
return
m_cube_view.has_value() ? **m_cube_view : vk::ImageView {};
36
}
37
38
[[nodiscard]]
39
auto
image() const -> vk::Image {
40
return
m_image.has_value() ? **m_image : vk::Image {};
41
}
42
43
[[nodiscard]]
44
auto
size() const noexcept -> uint32_t {
45
return
m_size;
46
}
47
48
[[nodiscard]]
49
auto
mipSize(uint32_t mip)
const
noexcept
-> uint32_t {
50
return
std::max(m_size >> mip, 1u);
51
}
52
53
[[nodiscard]]
54
auto
mipLevels() const noexcept -> uint32_t {
55
return
m_mip_levels;
56
}
57
58
[[nodiscard]]
59
auto
usage() const noexcept -> sync::Usage {
60
return
m_state.usage;
61
}
62
63
[[nodiscard]]
64
auto
isReady() const noexcept ->
bool
{
65
return
m_image.has_value() && m_cube_view.has_value();
66
}
67
68
static
constexpr
uint32_t k_faces = 6;
69
70
private
:
71
std::optional<vma::raii::Image> m_image;
72
std::optional<vk::raii::ImageView> m_cube_view;
74
std::vector<vk::raii::ImageView> m_face_views;
75
76
uint32_t m_size = 0;
77
uint32_t m_mip_levels = 1;
78
sync::ImageState m_state;
79
};
80
81
}
renderer::CubemapTarget
Definition
cubemap_target.hpp:18
renderer::CubemapTarget::setUsage
void setUsage(sync::Usage usage) noexcept
For code that transitioned the whole image itself like the vulkan_common upload helpers.
Definition
cubemap_target.hpp:28
renderer::VulkanCore
Definition
vulkan_core.hpp:48
renderer::sync::Usage
Usage
Definition
gpu_sync.hpp:15
engine
src
toast
renderer
cubemap_target.hpp
Generated by
1.17.0