PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
scene_sprite_subrender_internal.h
1#pragma once
2
3#include "pixelbullet/private/graphics/rendering/buffers/buffer.h"
4#include "pixelbullet/private/graphics/rendering/buffers/uniform_handler.h"
5#include "pixelbullet/private/graphics/rendering/descriptors/descriptors_handler.h"
6#include "pixelbullet/private/graphics/runtime_support/images/image_2d.h"
7#include "pixelbullet/private/graphics/rendering/pipelines/pipeline_graphics.h"
8#include "pixelbullet/graphics/subrender.h"
9#include "pixelbullet/private/scene/rendering/render_resource_resolver.h"
10#include "pixelbullet/scene/render_data.h"
11
12#include <cstddef>
13#include <memory>
14#include <optional>
15#include <string>
16#include <vector>
17
18namespace pixelbullet
19{
20class Filesystem;
21class RenderDevice;
22class ResourceCache;
23struct SceneSpriteSubrenderImpl
24{
26 {
27 std::shared_ptr<Image2D> texture;
28 };
29
30 SceneSpriteSubrenderImpl(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
31 ResourceCache& resource_cache, const SceneRenderData& render_data);
32
33 void EnsureSpriteCapacity(std::size_t sprite_count);
34 void InvalidateSlotState(std::size_t slot_index);
35 void ClearUnusedSlotState(std::size_t sprite_count);
36
37 const SceneRenderData* render_data = nullptr;
38 RenderDevice& render_device;
39 RenderResourceResolver resource_resolver;
40 std::unique_ptr<Buffer> vertex_buffer;
41 PipelineGraphics pipeline;
42 UniformHandler scene_uniforms;
43 std::vector<UniformHandler> sprite_uniforms;
44 std::vector<DescriptorsHandler> sprite_descriptors;
45 std::vector<std::optional<ResolvedResources>> resolved_resources;
46 std::vector<std::optional<std::string>> slot_texture_paths;
47};
48
49namespace scene_sprite_subrender_internal
50{
51std::unique_ptr<SceneSpriteSubrenderImpl> CreateImpl(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
52 ResourceCache& resource_cache, const SceneRenderData& render_data);
53std::vector<std::size_t> CollectMatchingTextureSlotIndices(const std::vector<std::optional<std::string>>& slot_texture_paths,
54 const std::vector<std::string>& changed_sprite_textures);
55void Render(SceneSpriteSubrenderImpl& impl, const RenderFrameContext& frame_context);
56std::size_t RefreshAllAssetCaches(SceneSpriteSubrenderImpl& impl);
57std::size_t RefreshTextureCaches(SceneSpriteSubrenderImpl& impl, const std::vector<std::string>& changed_sprite_textures);
58} // namespace scene_sprite_subrender_internal
59} // namespace pixelbullet
Definition filesystem.h:16
Definition render_device.h:15
Definition render_frame_context.h:17
Definition resource_cache.h:16
Definition render_data.h:117
Definition scene_sprite_subrender_internal.h:26
Definition scene_sprite_subrender_internal.h:24