#pragma once #include 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_; };