PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
scene_subrender_runtime_backend_internal.h
1#pragma once
2
3#include "pixelbullet/graphics/subrender.h"
4#include "pixelbullet/scene/render_data.h"
5
6#include <cstddef>
7#include <memory>
8#include <string>
9#include <vector>
10
11namespace pixelbullet
12{
13class Filesystem;
14class ForwardLitMaterialOverrideProvider;
15struct ForwardLitSceneMeshAssetChangeSet;
16class RenderDevice;
19
20namespace scene_rendering_internal
21{
23{
24public:
26
27 virtual void Render(const RenderFrameContext& frame_context) = 0;
28 [[nodiscard]] virtual std::size_t RefreshAllAssetCaches() = 0;
29 [[nodiscard]] virtual std::size_t RefreshMeshCaches(const std::vector<std::string>& changed_meshes) = 0;
30};
31
33{
34public:
36
37 virtual void Render(const RenderFrameContext& frame_context) = 0;
38 [[nodiscard]] virtual std::size_t RefreshAllAssetCaches() = 0;
39 [[nodiscard]] virtual std::size_t RefreshAssetCaches(const ForwardLitSceneMeshAssetChangeSet& change_set) = 0;
40};
41
43{
44public:
45 virtual ~SceneSpriteSubrenderRuntimeBackend() = default;
46
47 virtual void Render(const RenderFrameContext& frame_context) = 0;
48 [[nodiscard]] virtual std::size_t RefreshAllAssetCaches() = 0;
49 [[nodiscard]] virtual std::size_t RefreshTextureCaches(const std::vector<std::string>& changed_sprite_textures) = 0;
50};
51
53{
54public:
55 virtual ~SceneToneMapSubrenderRuntimeBackend() = default;
56
57 virtual void Render(const RenderFrameContext& frame_context) = 0;
58};
59
61{
62public:
63 virtual ~SkyboxSceneSubrenderRuntimeBackend() = default;
64
65 virtual void Render(const RenderFrameContext& frame_context) = 0;
66 [[nodiscard]] virtual std::size_t RefreshAllAssetCaches() = 0;
67 [[nodiscard]] virtual std::size_t RefreshEnvironmentCaches(const std::vector<std::string>& changed_environment_assets,
68 const std::vector<std::string>& changed_cubemaps) = 0;
69};
70
71[[nodiscard]] std::unique_ptr<DirectionalShadowSceneMeshSubrenderRuntimeBackend>
72CreateDirectionalShadowSceneMeshSubrenderRuntimeBackend(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
73 GraphicsResourceCache& graphics_resource_cache, const SceneRenderData& render_data);
74
75[[nodiscard]] std::unique_ptr<ForwardLitSceneMeshSubrenderRuntimeBackend>
76CreateForwardLitSceneMeshSubrenderRuntimeBackend(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
77 GraphicsResourceCache& graphics_resource_cache, const SceneRenderData& render_data,
78 const ForwardLitMaterialOverrideProvider* material_override_provider,
79 SceneRenderBucket render_bucket);
80
81[[nodiscard]] std::unique_ptr<SceneSpriteSubrenderRuntimeBackend>
82CreateSceneSpriteSubrenderRuntimeBackend(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
83 GraphicsResourceCache& graphics_resource_cache, const SceneRenderData& render_data,
84 SceneRenderBucket render_bucket);
85
86[[nodiscard]] std::unique_ptr<SceneToneMapSubrenderRuntimeBackend>
87CreateSceneToneMapSubrenderRuntimeBackend(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
88 const SceneRenderData& render_data, std::string source_render_target_name);
89
90[[nodiscard]] std::unique_ptr<SkyboxSceneSubrenderRuntimeBackend>
91CreateSkyboxSceneSubrenderRuntimeBackend(const Subrender::Stage& stage, RenderDevice& render_device, Filesystem& filesystem,
92 GraphicsResourceCache& graphics_resource_cache, const SceneRenderData& render_data);
93} // namespace scene_rendering_internal
94} // namespace pixelbullet
Definition filesystem.h:19
Definition graphics_resource_cache.h:16
Definition render_device.h:15
Definition render_frame_context.h:15
Definition scene_subrender_runtime_backend_internal.h:33
Definition scene_subrender_runtime_backend_internal.h:43
Definition scene_subrender_runtime_backend_internal.h:53
Definition scene_subrender_runtime_backend_internal.h:61
Definition render_data.h:138