@@ -38,8 +38,7 @@ template <std::size_t numberIN, std::size_t numberOUT> class PostProcessPass : p
3838 BasePass::store_attachments<numberIN, numberOUT>(config);
3939 }
4040
41- virtual void setup_out_attachments (std::vector<Graphics::AttachmentConfig>& attachments,
42- std::vector<Graphics::SubPassDependency>& dependencies);
41+ virtual void setup_out_attachments (std::vector<Graphics::AttachmentConfig>& attachments, std::vector<Graphics::SubPassDependency>& dependencies);
4342
4443 virtual void setup_uniforms (std::vector<Graphics::Frame>& frames);
4544
@@ -53,9 +52,8 @@ template <std::size_t numberIN, std::size_t numberOUT> class PostProcessPass : p
5352#pragma region Implementation
5453
5554template <std::size_t numberIN, std::size_t numberOUT>
56- void PostProcessPass<numberIN, numberOUT>::setup_out_attachments(
57- std::vector<Graphics::AttachmentConfig>& attachments,
58- std::vector<Graphics::SubPassDependency>& dependencies) {
55+ void PostProcessPass<numberIN, numberOUT>::setup_out_attachments(std::vector<Graphics::AttachmentConfig>& attachments,
56+ std::vector<Graphics::SubPassDependency>& dependencies) {
5957
6058 attachments.resize (1 );
6159
@@ -64,27 +62,27 @@ void PostProcessPass<numberIN, numberOUT>::setup_out_attachments(
6462 1 ,
6563 this ->m_isDefault ? LAYOUT_PRESENT : LAYOUT_SHADER_READ_ONLY_OPTIMAL,
6664 LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
67- this ->m_isDefault ? IMAGE_USAGE_TRANSIENT_ATTACHMENT | IMAGE_USAGE_COLOR_ATTACHMENT
68- : IMAGE_USAGE_COLOR_ATTACHMENT | IMAGE_USAGE_SAMPLED,
65+ this ->m_isDefault ? IMAGE_USAGE_TRANSIENT_ATTACHMENT | IMAGE_USAGE_COLOR_ATTACHMENT
66+ : IMAGE_USAGE_COLOR_ATTACHMENT | IMAGE_USAGE_SAMPLED | IMAGE_USAGE_TRANSFER_SRC | IMAGE_USAGE_TRANSFER_DST ,
6967 COLOR_ATTACHMENT,
7068 ASPECT_COLOR,
7169 TEXTURE_2D,
7270 FILTER_LINEAR,
7371 ADDRESS_MODE_CLAMP_TO_EDGE);
7472
75- attachments[0 ].isDefault = this ->m_isDefault ? true : false ;
73+ attachments[0 ].isDefault = this ->m_isDefault ? true : false ;
74+ // attachments[0].imageConfig.mipLevels = static_cast<uint32_t>(std::floor(std::log2(std::max(this->m_imageExtent.width, this->m_imageExtent.height)))) + 1;
75+ // attachments[0].imageConfig.useMipmaps = true;
7676
7777 // Depdencies
7878 if (!this ->m_isDefault )
7979 {
8080 dependencies.resize (2 );
8181
82- dependencies[0 ] = Graphics::SubPassDependency (
83- STAGE_FRAGMENT_SHADER, STAGE_COLOR_ATTACHMENT_OUTPUT, ACCESS_COLOR_ATTACHMENT_WRITE);
82+ dependencies[0 ] = Graphics::SubPassDependency (STAGE_FRAGMENT_SHADER, STAGE_COLOR_ATTACHMENT_OUTPUT, ACCESS_COLOR_ATTACHMENT_WRITE);
8483 dependencies[0 ].srcAccessMask = ACCESS_SHADER_READ;
8584 dependencies[0 ].dependencyFlags = SUBPASS_DEPENDENCY_NONE;
86- dependencies[1 ] =
87- Graphics::SubPassDependency (STAGE_COLOR_ATTACHMENT_OUTPUT, STAGE_FRAGMENT_SHADER, ACCESS_SHADER_READ);
85+ dependencies[1 ] = Graphics::SubPassDependency (STAGE_COLOR_ATTACHMENT_OUTPUT, STAGE_FRAGMENT_SHADER, ACCESS_SHADER_READ);
8886 dependencies[1 ].srcAccessMask = ACCESS_COLOR_ATTACHMENT_WRITE;
8987 dependencies[1 ].srcSubpass = 0 ;
9088 dependencies[1 ].dstSubpass = VK_SUBPASS_EXTERNAL;
@@ -94,13 +92,11 @@ void PostProcessPass<numberIN, numberOUT>::setup_out_attachments(
9492 dependencies.resize (1 );
9593
9694 // dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
97- dependencies[0 ] = Graphics::SubPassDependency (
98- STAGE_COLOR_ATTACHMENT_OUTPUT, STAGE_COLOR_ATTACHMENT_OUTPUT, ACCESS_COLOR_ATTACHMENT_WRITE);
95+ dependencies[0 ] = Graphics::SubPassDependency (STAGE_COLOR_ATTACHMENT_OUTPUT, STAGE_COLOR_ATTACHMENT_OUTPUT, ACCESS_COLOR_ATTACHMENT_WRITE);
9996 dependencies[0 ].dependencyFlags = SUBPASS_DEPENDENCY_NONE;
10097 }
10198}
102- template <std::size_t numberIN, std::size_t numberOUT>
103- void PostProcessPass<numberIN, numberOUT>::setup_uniforms(std::vector<Graphics::Frame>& frames) {
99+ template <std::size_t numberIN, std::size_t numberOUT> void PostProcessPass<numberIN, numberOUT>::setup_uniforms(std::vector<Graphics::Frame>& frames) {
104100 // Init and configure local descriptors
105101 this ->m_descriptorPool = this ->m_device ->create_descriptor_pool (1 , numberIN, 1 , 1 , 1 );
106102
@@ -114,27 +110,21 @@ void PostProcessPass<numberIN, numberOUT>::setup_uniforms(std::vector<Graphics::
114110
115111 this ->m_descriptorPool .allocate_descriptor_set (GLOBAL_LAYOUT, &this ->m_imageDescriptorSet );
116112}
117- template <std::size_t numberIN, std::size_t numberOUT>
118- void PostProcessPass<numberIN, numberOUT>::setup_shader_passes() {
113+ template <std::size_t numberIN, std::size_t numberOUT> void PostProcessPass<numberIN, numberOUT>::setup_shader_passes() {
119114
120- Graphics::GraphicShaderPass* ppPass = new Graphics::GraphicShaderPass (
121- this ->m_device ->get_handle (), this ->m_renderpass , this ->m_imageExtent , this ->m_shaderPath );
115+ Graphics::GraphicShaderPass* ppPass =
116+ new Graphics::GraphicShaderPass ( this ->m_device ->get_handle (), this ->m_renderpass , this ->m_imageExtent , this ->m_shaderPath );
122117 ppPass->settings .descriptorSetLayoutIDs = {{GLOBAL_LAYOUT, true }};
123- ppPass->graphicSettings .attributes = {{POSITION_ATTRIBUTE, true },
124- {NORMAL_ATTRIBUTE, false },
125- {UV_ATTRIBUTE, true },
126- {TANGENT_ATTRIBUTE, false },
127- {COLOR_ATTRIBUTE, false }};
118+ ppPass->graphicSettings .attributes = {
119+ {POSITION_ATTRIBUTE, true }, {NORMAL_ATTRIBUTE, false }, {UV_ATTRIBUTE, true }, {TANGENT_ATTRIBUTE, false }, {COLOR_ATTRIBUTE, false }};
128120
129121 ppPass->build_shader_stages ();
130122 ppPass->build (this ->m_descriptorPool );
131123
132124 this ->m_shaderPasses [" pp" ] = ppPass;
133125}
134126template <std::size_t numberIN, std::size_t numberOUT>
135- void PostProcessPass<numberIN, numberOUT>::execute(Graphics::Frame& currentFrame,
136- Scene* const scene,
137- uint32_t presentImageIndex) {
127+ void PostProcessPass<numberIN, numberOUT>::execute(Graphics::Frame& currentFrame, Scene* const scene, uint32_t presentImageIndex) {
138128 PROFILING_EVENT ()
139129
140130 Graphics::CommandBuffer cmd = currentFrame.commandBuffer ;
@@ -154,8 +144,7 @@ void PostProcessPass<numberIN, numberOUT>::execute(Graphics::Frame& currentFrame
154144
155145 cmd.end_renderpass (this ->m_renderpass , this ->m_framebuffers [this ->m_isDefault ? presentImageIndex : 0 ]);
156146}
157- template <std::size_t numberIN, std::size_t numberOUT>
158- void PostProcessPass<numberIN, numberOUT>::link_input_attachments() {
147+ template <std::size_t numberIN, std::size_t numberOUT> void PostProcessPass<numberIN, numberOUT>::link_input_attachments() {
159148 for (size_t i = 0 ; i < numberIN; i++)
160149 {
161150 this ->m_descriptorPool .update_descriptor (this ->m_inAttachments [i], LAYOUT_SHADER_READ_ONLY_OPTIMAL, &m_imageDescriptorSet, i);
0 commit comments