SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
VulkanCubemapTexture.hpp
Go to the documentation of this file.
1
#ifndef VULKANCUBEMAPTEXTURE_HPP_
2
#define VULKANCUBEMAPTEXTURE_HPP_
3
4
#include <
Core/OSDef.hpp
>
5
#include <
Runtime/Texture.hpp
>
6
#include <vulkan/vulkan.h>
7
#include <array>
8
#include <string>
9
10
namespace
Sleak
{
11
namespace
RenderEngine
{
12
13
/// Vulkan cubemap texture, loadable from six face images or a single equirectangular panorama.
14
class
ENGINE_API
VulkanCubemapTexture
:
public
::Sleak::Texture
{
15
public
:
16
VulkanCubemapTexture
(VkDevice device, VkPhysicalDevice physicalDevice,
17
VkCommandPool commandPool, VkQueue graphicsQueue);
18
~VulkanCubemapTexture
()
override
;
19
20
/// Loads and uploads 6 face images: +X, -X, +Y, -Y, +Z, -Z.
21
bool
LoadCubemap
(
const
std::array<std::string, 6>& facePaths);
22
23
/// Load from a single equirectangular panorama and convert to cubemap
24
bool
LoadEquirectangular
(
const
std::string& path, uint32_t faceSize = 512);
25
26
// Texture interface
27
/// Unused for cubemaps; load via LoadCubemap/LoadEquirectangular instead.
28
bool
LoadFromMemory
(
const
void
* data, uint32_t
width
, uint32_t
height
,
29
TextureFormat
format)
override
;
30
/// Unused for cubemaps; load via LoadCubemap/LoadEquirectangular instead.
31
bool
LoadFromFile
(
const
std::string& filePath)
override
;
32
33
void
Bind
(uint32_t slot = 0)
const override
;
34
void
Unbind
()
const override
;
35
36
void
SetFilter
(
TextureFilter
filter)
override
;
37
void
SetWrapMode
(
TextureWrapMode
wrapMode)
override
;
38
39
uint32_t
GetWidth
()
const override
{
return
m_width; }
40
uint32_t
GetHeight
()
const override
{
return
m_height; }
41
TextureFormat
GetFormat
()
const override
{
return
m_format; }
42
TextureType
GetType
()
const override
{
return
TextureType::TextureCube
; }
43
44
VkImageView
GetImageView
()
const
{
return
m_imageView; }
45
VkSampler
GetSampler
()
const
{
return
m_sampler; }
46
47
private
:
48
void
Cleanup();
49
/// Finds a physical device memory type matching the filter and required properties.
50
uint32_t FindMemoryType(uint32_t typeFilter,
51
VkMemoryPropertyFlags properties);
52
/// Records a pipeline barrier moving all 6 cube faces between image layouts.
53
void
TransitionImageLayout(VkImage image, VkImageLayout oldLayout,
54
VkImageLayout newLayout,
55
uint32_t layerCount);
56
57
VkDevice m_device = VK_NULL_HANDLE;
58
VkPhysicalDevice m_physicalDevice = VK_NULL_HANDLE;
59
VkCommandPool m_commandPool = VK_NULL_HANDLE;
60
VkQueue m_graphicsQueue = VK_NULL_HANDLE;
61
62
VkImage m_image = VK_NULL_HANDLE;
63
VkDeviceMemory m_imageMemory = VK_NULL_HANDLE;
64
VkImageView m_imageView = VK_NULL_HANDLE;
65
VkSampler m_sampler = VK_NULL_HANDLE;
66
67
uint32_t m_width = 0;
68
uint32_t m_height = 0;
69
TextureFormat
m_format =
TextureFormat::RGBA8
;
70
};
71
72
}
// namespace RenderEngine
73
}
// namespace Sleak
74
75
#endif
// VULKANCUBEMAPTEXTURE_HPP_
width
int width
Definition
Application.cpp:40
height
int height
Definition
Application.cpp:41
OSDef.hpp
Texture.hpp
Sleak::RenderEngine::VulkanCubemapTexture::LoadCubemap
bool LoadCubemap(const std::array< std::string, 6 > &facePaths)
Loads and uploads 6 face images: +X, -X, +Y, -Y, +Z, -Z.
Definition
VulkanCubemapTexture.cpp:25
Sleak::RenderEngine::VulkanCubemapTexture::LoadFromMemory
bool LoadFromMemory(const void *data, uint32_t width, uint32_t height, TextureFormat format) override
Unused for cubemaps; load via LoadCubemap/LoadEquirectangular instead.
Definition
VulkanCubemapTexture.cpp:547
Sleak::RenderEngine::VulkanCubemapTexture::SetFilter
void SetFilter(TextureFilter filter) override
Definition
VulkanCubemapTexture.cpp:569
Sleak::RenderEngine::VulkanCubemapTexture::GetWidth
uint32_t GetWidth() const override
Definition
VulkanCubemapTexture.hpp:39
Sleak::RenderEngine::VulkanCubemapTexture::VulkanCubemapTexture
VulkanCubemapTexture(VkDevice device, VkPhysicalDevice physicalDevice, VkCommandPool commandPool, VkQueue graphicsQueue)
Definition
VulkanCubemapTexture.cpp:12
Sleak::RenderEngine::VulkanCubemapTexture::Unbind
void Unbind() const override
Definition
VulkanCubemapTexture.cpp:567
Sleak::RenderEngine::VulkanCubemapTexture::GetImageView
VkImageView GetImageView() const
Definition
VulkanCubemapTexture.hpp:44
Sleak::RenderEngine::VulkanCubemapTexture::LoadEquirectangular
bool LoadEquirectangular(const std::string &path, uint32_t faceSize=512)
Load from a single equirectangular panorama and convert to cubemap.
Definition
VulkanCubemapTexture.cpp:278
Sleak::RenderEngine::VulkanCubemapTexture::GetFormat
TextureFormat GetFormat() const override
Definition
VulkanCubemapTexture.hpp:41
Sleak::RenderEngine::VulkanCubemapTexture::GetSampler
VkSampler GetSampler() const
Definition
VulkanCubemapTexture.hpp:45
Sleak::RenderEngine::VulkanCubemapTexture::GetHeight
uint32_t GetHeight() const override
Definition
VulkanCubemapTexture.hpp:40
Sleak::RenderEngine::VulkanCubemapTexture::SetWrapMode
void SetWrapMode(TextureWrapMode wrapMode) override
Definition
VulkanCubemapTexture.cpp:573
Sleak::RenderEngine::VulkanCubemapTexture::LoadFromFile
bool LoadFromFile(const std::string &filePath) override
Unused for cubemaps; load via LoadCubemap/LoadEquirectangular instead.
Definition
VulkanCubemapTexture.cpp:557
Sleak::RenderEngine::VulkanCubemapTexture::Bind
void Bind(uint32_t slot=0) const override
Definition
VulkanCubemapTexture.cpp:562
Sleak::RenderEngine::VulkanCubemapTexture::GetType
TextureType GetType() const override
Definition
VulkanCubemapTexture.hpp:42
Sleak::Texture
Definition
Texture.hpp:78
Sleak::TextureFormat
TextureFormat
Definition
Texture.hpp:10
Sleak::TextureFilter
TextureFilter
Definition
Texture.hpp:28
Sleak::TextureType
TextureType
Definition
Texture.hpp:20
Sleak::TextureWrapMode
TextureWrapMode
Definition
Texture.hpp:43
Sleak::TextureFormat::RGBA8
@ RGBA8
Definition
Texture.hpp:11
Sleak::TextureType::TextureCube
@ TextureCube
Definition
Texture.hpp:22
Sleak::RenderEngine
Backend-facing rendering layer shared by the four graphics backends.
Definition
Application.hpp:60
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
private
Graphics
Vulkan
VulkanCubemapTexture.hpp
Generated on
for SleakEngine by
1.18.0