Toast Engine
Loading...
Searching...
No Matches
traced_shadow_pass.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
11#include "../shader_layout.hpp"
12#include "../vulkan_common.hpp"
13#include "../vulkan_pipeline.hpp"
14
15#include <glm/glm.hpp>
16#include <optional>
17#include <utility>
18#include <vector>
19
20namespace renderer {
21class VulkanCore;
22
23class TracedShadowPass : public IPostProcessPass {
24public:
25 TracedShadowPass(const VulkanCore& core, vk::Format scene_format, vk::Extent2D extent);
26
27 [[nodiscard]]
28 auto name() const -> std::string_view override {
29 return "Traced Shadows";
30 }
31
32 auto record(vk::CommandBuffer cmd, uint32_t frame_index, vk::ImageView source_view) -> vk::ImageView override;
33
34 void onResize(vk::Extent2D extent) override;
35
36private:
38 struct Params {
39 glm::mat4 inverse_view_projection {1.0f};
40 glm::vec4 light_direction {0.0f};
42 glm::vec4 tuning {0.0f};
43 };
44
45 void createResources(const VulkanCore& core);
46 void createTarget(const VulkanCore& core, vk::Extent2D extent);
47
48 const VulkanCore* m_core = nullptr;
49 vk::Format m_scene_format = vk::Format::eUndefined;
50
51 ShaderLayout m_shader_layout;
52 VulkanPipeline m_pipeline;
53
54 vk::raii::Sampler m_sampler = nullptr;
55 vk::raii::Sampler m_point_sampler = nullptr;
56
57 std::vector<vk::raii::DescriptorSet> m_descriptor_sets;
58 std::vector<vk::ImageView> m_bound_views;
60 std::vector<std::pair<vk::AccelerationStructureKHR, uint64_t>> m_bound_acceleration_structures;
61
62 PostProcessTarget m_target;
63};
64
65}
Definition post_process_pass_base.hpp:14
Definition post_process_target.hpp:19
Definition shader_layout.hpp:12
auto record(vk::CommandBuffer cmd, uint32_t frame_index, vk::ImageView source_view) -> vk::ImageView override
Definition traced_shadow_pass.cpp:109
Definition vulkan_core.hpp:48
Definition vulkan_pipeline.hpp:19