PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
graphics_stage_lifecycle_internal.h
1#pragma once
2
3#include "pixelbullet/graphics/render_stage.h"
4#include "pixelbullet/graphics/render_target.h"
5
6#include <glm/glm.hpp>
7
8#include <optional>
9#include <string>
10#include <string_view>
11#include <vector>
12
13namespace pixelbullet::graphics_stage_internal
14{
16{
17 glm::uvec2 desired_extent{ 0u, 0u };
18 uint32_t desired_image_count = 0u;
19 bool clear_images = false;
20 bool rebuild_images = false;
21};
22
23glm::uvec2 ResolveRenderTargetExtent(const RenderTargetSpecification& specification, const glm::uvec2& base_extent) noexcept;
24RenderTargetLifecyclePlan BuildRenderTargetLifecyclePlan(const RenderTargetSpecification& specification, const glm::uvec2& current_extent,
25 uint32_t current_image_count, uint32_t requested_image_count,
26 const glm::uvec2& base_extent) noexcept;
27uint32_t NormalizeRenderTargetActiveImageIndex(uint32_t requested_active_image_index, uint32_t image_count) noexcept;
28
29bool IsDeclaredRenderTargetName(std::string_view name, const std::vector<RenderTargetSpecification>& declared_targets) noexcept;
30std::vector<std::string> CollectUndeclaredRenderTargetNames(const std::vector<std::string>& existing_names,
31 const std::vector<RenderTargetSpecification>& declared_targets);
32
33std::optional<std::string_view> FindFirstRenderTargetAttachmentName(const RenderStage& render_stage) noexcept;
34glm::uvec2 ResolveRenderStageViewportExtent(const Viewport& viewport, bool has_render_target_attachment,
35 const std::optional<glm::uvec2>& render_target_extent,
36 const glm::uvec2& window_extent) noexcept;
37bool IsRenderStageOutOfDate(const glm::uvec2& last_extent, const glm::ivec2& last_offset, const glm::uvec2& next_extent,
38 const glm::ivec2& next_offset) noexcept;
39} // namespace pixelbullet::graphics_stage_internal
Definition render_stage.h:143
Definition render_stage.h:100
Definition render_target.h:20
Definition graphics_stage_lifecycle_internal.h:16