Vulkan Schnee
0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
SunShadowResources.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Engine/Renderer/Buffer.h
"
4
#include "
Engine/Renderer/RenderData.h
"
5
6
#include <array>
7
#include <cstdint>
8
#include <optional>
9
#include <vulkan/vulkan_core.h>
10
11
namespace
Engine::Core
12
{
13
class
ApplicationContext
;
14
}
15
16
namespace
Engine::Rendering
17
{
18
class
SunShadowResources
19
{
20
public
:
21
void
create
(
Core::ApplicationContext
* context, uint32_t mapSize, uint32_t cascadeCount);
22
void
cleanup
(VkDevice device);
23
24
void
uploadCascadeData
(
const
SunShadowCascadeBuffer
& data);
25
26
[[nodiscard]]
const
Vulkan::Buffer
&
getCascadeBuffer
()
const
{
return
cascadeBuffer_
.value(); }
27
[[nodiscard]]
const
VkDescriptorImageInfo &
getDescriptorInfo
()
const
{
return
descriptorInfo_
; }
28
[[nodiscard]] VkImage
getImage
()
const
{
return
shadowImage_
; }
29
[[nodiscard]] VkImageView
getCascadeImageView
(uint32_t cascadeIndex)
const
{
return
cascadeViews_
.at(cascadeIndex); }
30
[[nodiscard]] uint32_t
getCascadeCount
()
const
{
return
cascadeCount_
; }
31
[[nodiscard]] uint32_t
getMapSize
()
const
{
return
mapSize_
; }
32
[[nodiscard]]
bool
isCreated
()
const
{
return
shadowImage_
!= VK_NULL_HANDLE; }
33
[[nodiscard]]
bool
hasRendered
()
const
{
return
hasRendered_
; }
34
void
markRendered
() {
hasRendered_
=
true
; }
35
36
private
:
37
uint32_t
mapSize_
= 0u;
38
uint32_t
cascadeCount_
= 0u;
39
bool
hasRendered_
=
false
;
40
41
VkImage
shadowImage_
= VK_NULL_HANDLE;
42
VkDeviceMemory
shadowMemory_
= VK_NULL_HANDLE;
43
VkImageView
shadowArrayView_
= VK_NULL_HANDLE;
44
std::array<VkImageView, GpuBuffers::MAX_SUN_SHADOW_CASCADES>
cascadeViews_
{};
45
VkSampler
shadowSampler_
= VK_NULL_HANDLE;
46
VkDescriptorImageInfo
descriptorInfo_
{};
47
std::optional<Vulkan::Buffer>
cascadeBuffer_
;
48
};
49
}
Buffer.h
RenderData.h
Engine::Core::ApplicationContext
The application context is the core class which stores the basic openxr and vulkan objects.
Definition
ApplicationContext.h:57
Engine::Rendering::SunShadowResources
Definition
SunShadowResources.h:19
Engine::Rendering::SunShadowResources::getCascadeBuffer
const Vulkan::Buffer & getCascadeBuffer() const
Definition
SunShadowResources.h:26
Engine::Rendering::SunShadowResources::mapSize_
uint32_t mapSize_
Definition
SunShadowResources.h:37
Engine::Rendering::SunShadowResources::getCascadeCount
uint32_t getCascadeCount() const
Definition
SunShadowResources.h:30
Engine::Rendering::SunShadowResources::hasRendered_
bool hasRendered_
Definition
SunShadowResources.h:39
Engine::Rendering::SunShadowResources::shadowArrayView_
VkImageView shadowArrayView_
Definition
SunShadowResources.h:43
Engine::Rendering::SunShadowResources::cascadeBuffer_
std::optional< Vulkan::Buffer > cascadeBuffer_
Definition
SunShadowResources.h:47
Engine::Rendering::SunShadowResources::getCascadeImageView
VkImageView getCascadeImageView(uint32_t cascadeIndex) const
Definition
SunShadowResources.h:29
Engine::Rendering::SunShadowResources::getMapSize
uint32_t getMapSize() const
Definition
SunShadowResources.h:31
Engine::Rendering::SunShadowResources::getDescriptorInfo
const VkDescriptorImageInfo & getDescriptorInfo() const
Definition
SunShadowResources.h:27
Engine::Rendering::SunShadowResources::descriptorInfo_
VkDescriptorImageInfo descriptorInfo_
Definition
SunShadowResources.h:46
Engine::Rendering::SunShadowResources::hasRendered
bool hasRendered() const
Definition
SunShadowResources.h:33
Engine::Rendering::SunShadowResources::isCreated
bool isCreated() const
Definition
SunShadowResources.h:32
Engine::Rendering::SunShadowResources::cascadeCount_
uint32_t cascadeCount_
Definition
SunShadowResources.h:38
Engine::Rendering::SunShadowResources::cascadeViews_
std::array< VkImageView, GpuBuffers::MAX_SUN_SHADOW_CASCADES > cascadeViews_
Definition
SunShadowResources.h:44
Engine::Rendering::SunShadowResources::getImage
VkImage getImage() const
Definition
SunShadowResources.h:28
Engine::Rendering::SunShadowResources::create
void create(Core::ApplicationContext *context, uint32_t mapSize, uint32_t cascadeCount)
Engine::Rendering::SunShadowResources::markRendered
void markRendered()
Definition
SunShadowResources.h:34
Engine::Rendering::SunShadowResources::shadowMemory_
VkDeviceMemory shadowMemory_
Definition
SunShadowResources.h:42
Engine::Rendering::SunShadowResources::cleanup
void cleanup(VkDevice device)
Engine::Rendering::SunShadowResources::uploadCascadeData
void uploadCascadeData(const SunShadowCascadeBuffer &data)
Engine::Rendering::SunShadowResources::shadowSampler_
VkSampler shadowSampler_
Definition
SunShadowResources.h:45
Engine::Rendering::SunShadowResources::shadowImage_
VkImage shadowImage_
Definition
SunShadowResources.h:41
Vulkan::Buffer
RAII wrapper for Vulkan buffer and device memory.
Definition
Buffer.h:26
Engine::Core
Core audio subsystem owning the miniaudio engine and managing playback.
Definition
AudioConfig.h:9
Engine::Rendering
Definition
VrCameraComponent.h:6
Engine::Rendering::SunShadowCascadeBuffer
GpuBuffers::SunShadowCascadeBuffer SunShadowCascadeBuffer
Definition
RenderData.h:545
Engine
include
Engine
Renderer
SunShadowResources.h
Generated by
1.14.0