41 lines
874 B
C++
Executable file
41 lines
874 B
C++
Executable file
#pragma once
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
class Renderer;
|
|
class World;
|
|
struct RenderCollection;
|
|
|
|
class ShadowPass {
|
|
public:
|
|
ShadowPass(Renderer& renderer);
|
|
~ShadowPass();
|
|
|
|
void render(VkCommandBuffer commandBuffer, RenderCollection& collection);
|
|
|
|
VkImageView getImageView() const {
|
|
return shadowImageView_;
|
|
}
|
|
|
|
VkSampler getSampler() const {
|
|
return shadowSampler_;
|
|
}
|
|
|
|
private:
|
|
void createRenderPass();
|
|
void createFramebuffer();
|
|
void createPipeline();
|
|
|
|
VkRenderPass renderPass_ = nullptr;
|
|
|
|
VkImage shadowImage_ = nullptr;
|
|
VkDeviceMemory shadowMemory_ = nullptr;
|
|
VkImageView shadowImageView_ = nullptr;
|
|
VkFramebuffer shadowFramebuffer_ = nullptr;
|
|
VkSampler shadowSampler_ = nullptr;
|
|
|
|
VkPipeline pipeline_ = nullptr;
|
|
VkPipelineLayout pipelineLayout_ = nullptr;
|
|
|
|
Renderer& renderer_;
|
|
};
|