59 lines
1.2 KiB
C++
Executable file
59 lines
1.2 KiB
C++
Executable file
#pragma once
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
class Renderer;
|
|
struct RenderTarget;
|
|
|
|
class SMAAPass {
|
|
public:
|
|
SMAAPass(Renderer& renderer);
|
|
~SMAAPass();
|
|
|
|
void render(VkCommandBuffer commandBuffer, RenderTarget* target);
|
|
|
|
void createDescriptorSets(RenderTarget* target);
|
|
|
|
VkRenderPass getEdgeRenderPass() const {
|
|
return edgeRenderPass;
|
|
}
|
|
|
|
VkRenderPass getBlendRenderPass() const {
|
|
return blendRenderPass;
|
|
}
|
|
|
|
private:
|
|
void loadResources();
|
|
|
|
void setupDescriptorLayouts();
|
|
void createOffscreenResources();
|
|
void createRenderPasses();
|
|
void createPipelines();
|
|
|
|
VkImage areaImage;
|
|
VkDeviceMemory areaMemory;
|
|
VkImageView areaImageView;
|
|
VkSampler areaSampler;
|
|
|
|
VkImage searchImage;
|
|
VkDeviceMemory searchMemory;
|
|
VkImageView searchImageView;
|
|
VkSampler searchSampler;
|
|
|
|
VkSampler edgeSampler;
|
|
VkSampler blendSampler;
|
|
|
|
VkRenderPass edgeRenderPass, blendRenderPass;
|
|
|
|
// edge
|
|
VkDescriptorSetLayout edgeDescriptorSetLayout;
|
|
VkPipelineLayout edgePipelineLayout;
|
|
VkPipeline edgePipeline;
|
|
|
|
// blend
|
|
VkDescriptorSetLayout blendDescriptorSetLayout;
|
|
VkPipelineLayout blendPipelineLayout;
|
|
VkPipeline blendPipeline;
|
|
|
|
Renderer& renderer;
|
|
};
|