#pragma once
#include "common.hpp"
class Scene;
class GFX;
class GFXCommandBuffer;
class GFXFramebuffer;
class GFXPipeline;
class GFXRenderPass;
class GFXTexture;
class Renderer;
class SMAAPass {
public:
SMAAPass(GFX* gfx, Renderer* renderer);
void render(GFXCommandBuffer* command_buffer);
GFXTexture* edge_texture = nullptr;
GFXTexture* blend_texture = nullptr;
private:
void create_textures();
void create_render_pass();
void create_pipelines();
void create_offscreen_resources();
prism::Extent extent;
Renderer* renderer = nullptr;
GFXTexture* area_image = nullptr;
GFXTexture* search_image = nullptr;
GFXRenderPass* render_pass = nullptr;
GFXPipeline* edge_pipeline = nullptr;
GFXPipeline* blend_pipeline = nullptr;
GFXFramebuffer* edge_framebuffer = nullptr;
GFXFramebuffer* blend_framebuffer = nullptr;
};