#pragma once
#include <vulkan/vulkan.h>
class Renderer;
struct RenderTarget;
class Camera;
class DoFPass {
public:
DoFPass(Renderer& renderer);
~DoFPass();
void render(VkCommandBuffer commandBuffer, Camera& camera, RenderTarget* target);
void createDescriptorSet(RenderTarget* target);
VkRenderPass getRenderPass() const {
return renderPass_;
}
private:
void createRenderPass();
void createDescriptorSetLayout();
void createPipeline();
void createBokehImage();
void createDescriptorSet();
VkRenderPass renderPass_ = nullptr;
VkDescriptorSetLayout setLayout_ = nullptr;
VkPipelineLayout pipelineLayout_ = nullptr;
VkPipeline pipeline_ = nullptr;
VkImage bokehImage_ = nullptr;
VkDeviceMemory bokehMemory_ = nullptr;
VkImageView bokehImageView_ = nullptr;
VkSampler bokehSampler_ = nullptr;
Renderer& renderer_;
};