42 lines
1.0 KiB
C++
42 lines
1.0 KiB
C++
//
|
|
// Created by kj16609 on 3/11/24.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "concepts.hpp"
|
|
#include "engine/FrameInfo.hpp"
|
|
#include "engine/descriptors/DescriptorSetCollection.hpp"
|
|
#include "engine/rendering/pipelines/PipelineT.hpp"
|
|
#include "engine/rendering/pipelines/Shader.hpp"
|
|
|
|
namespace fgl::engine
|
|
{
|
|
|
|
class CompositionSystem
|
|
{
|
|
using DescriptorSets = descriptors::DescriptorSetCollection< GBufferDescriptorSet >;
|
|
|
|
using VertexShader = VertexShaderT< "shaders/fullscreen.vert" >;
|
|
using FragmentShader = FragmentShaderT< "shaders/composition.frag" >;
|
|
|
|
using Shaders = ShaderCollection< VertexShader, FragmentShader >;
|
|
|
|
using CompositionPipeline = PipelineT< Shaders, DescriptorSets >;
|
|
|
|
std::unique_ptr< CompositionPipeline > m_composite_pipeline { nullptr };
|
|
|
|
vk::raii::CommandBuffer& setupSystem( FrameInfo& info );
|
|
|
|
public:
|
|
|
|
CompositionSystem( Device& device, vk::raii::RenderPass& render_pass );
|
|
~CompositionSystem() = default;
|
|
|
|
void pass( FrameInfo& info );
|
|
};
|
|
|
|
static_assert( is_system< CompositionSystem > );
|
|
|
|
} // namespace fgl::engine
|