89 SubpassType(uint32_t binding, std::vector<uint32_t> attachmentBindings)
91 , attachment_bindings_(std::move(attachmentBindings))
95 uint32_t GetBinding()
const
99 const std::vector<uint32_t>& GetAttachmentBindings()
const
101 return attachment_bindings_;
106 std::vector<uint32_t> attachment_bindings_;
213 explicit RenderStage(std::vector<Attachment> images = {}, std::vector<SubpassType> subpasses = {},
216 void Update(
const Graphics& graphics);
219 std::optional<Attachment> GetAttachment(
const std::string& name)
const;
220 std::optional<Attachment> GetAttachment(uint32_t binding)
const;
222 const Descriptor* GetDescriptor(
const std::string& name)
const;
223 const Descriptor* GetDescriptor(uint32_t binding)
const;
224 const VkFramebuffer& GetActiveFramebuffer(uint32_t activeSwapchainImage)
const;
226 const std::vector<Attachment>& GetAttachments()
const
230 const std::vector<SubpassType>& GetSubpasses()
const
239 void SetViewport(
const Viewport& viewport)
241 this->viewport_ = viewport;
264 return renderpass_.get();
266 const ImageDepth* GetDepthStencil()
const
268 return depth_stencil_.get();
270 const Framebuffers* GetFramebuffers()
const
272 return framebuffers_.get();
274 const std::vector<VkClearValue>& GetClearValues()
const
276 return clear_values_;
278 uint32_t GetAttachmentCount(uint32_t subpass)
const
280 return subpass_attachment_count_[subpass];
282 bool HasDepth()
const
284 return depth_attachment_.has_value();
286 bool HasSwapchain()
const
288 return swapchain_attachment_.has_value();
290 bool IsMultisampled(uint32_t subpass)
const
292 return subpass_multisampled_[subpass];
296 std::vector<Attachment> attachments_;
297 std::vector<SubpassType> subpasses_;
301 std::unique_ptr<Renderpass> renderpass_;
302 std::unique_ptr<ImageDepth> depth_stencil_;
303 std::unique_ptr<Framebuffers> framebuffers_;
305 std::map<std::string, const Descriptor*> descriptors_;
306 std::map<uint32_t, const Descriptor*> descriptors_by_binding_;
308 std::vector<VkClearValue> clear_values_;
309 std::vector<uint32_t> subpass_attachment_count_;
310 std::optional<Attachment> depth_attachment_;
311 std::optional<Attachment> swapchain_attachment_;
312 std::vector<bool> subpass_multisampled_;
314 RenderArea render_area_;
315 bool out_of_date_ =
false;
Attachment(uint32_t binding, std::string name, Type type, bool multisampled=false, VkFormat format=VK_FORMAT_R8G8B8A8_UNORM, const Color &clearColour=Color::black)
Definition render_stage.h:41