60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
|
#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;
|
||
|
};
|