Unravel Engine C++ Reference
Loading...
Searching...
No Matches
pipeline.h
Go to the documentation of this file.
1#pragma once
2
3#include <engine/ecs/ecs.h>
8
9#include "passes/assao_pass.h"
13#include "passes/fxaa_pass.h"
15#include "passes/blit_pass.h"
17#include "passes/ssr_pass.h"
18#include "passes/hiz_pass.h"
19
20#include <base/basetypes.hpp>
21#include <context/context.hpp>
22
23#include <map>
24#include <memory>
25#include <vector>
26#include <hpp/small_vector.hpp>
27
28namespace unravel
29{
30namespace rendering
31{
37{
38 std::uint32_t current_lod_index = 0;
39 std::uint32_t target_lod_index = 0;
40 float current_time = 0.0f;
41};
42
43using lod_data_container = std::map<entt::handle, lod_data>;
44using visibility_set_models_t = hpp::small_vector<entt::handle>;
45
54
60{
61public:
62 using uptr = std::unique_ptr<pipeline>;
63 using sptr = std::shared_ptr<pipeline>;
64 using wptr = std::weak_ptr<pipeline>;
65
70 enum visibility_query : uint32_t
71 {
72 not_specified = 1 << 0,
73 is_dirty = 1 << 1,
74 is_static = 1 << 2,
77 };
78
79 using visibility_flags = uint32_t;
80
82 {
84
85 std::function<void(assao_pass::run_params& params)> fill_assao_params;
86 std::function<void(tonemapping_pass::run_params& params)> fill_hdr_params;
87 std::function<void(fxaa_pass::run_params& params)> fill_fxaa_params;
88 std::function<void(ssr_pass::run_params& params)> fill_ssr_params;
89 };
90
91 pipeline() = default;
92 virtual ~pipeline() = default;
93
94 virtual auto init(rtti::context& ctx) -> bool;
95
104 virtual auto gather_visible_models(scene& scn,
105 const math::frustum* frustum,
106 visibility_flags query,
107 const layer_mask& render_mask) -> visibility_set_models_t;
108
119 virtual auto run_pipeline(scene& scn,
120 const camera& camera,
121 gfx::render_view& rview,
122 delta_t dt,
123 const run_params& params,
125
136 virtual void run_pipeline(const gfx::frame_buffer::ptr& output,
137 scene& scn,
138 const camera& camera,
139 gfx::render_view& rview,
140 delta_t dt,
141 const run_params& params,
143
144 virtual void set_debug_pass(int pass) = 0;
145
146 virtual void ui_pass(scene& scn, const camera& camera, gfx::render_view& rview, const gfx::frame_buffer::ptr& output);
147
148 virtual auto create_run_params(entt::handle camera_ent) const -> rendering::pipeline::run_params;
149
150protected:
161};
162} // namespace rendering
163} // namespace unravel
Storage for frustum planes / values and wraps up common functionality.
Definition frustum.h:18
Class representing a camera. Contains functionality for manipulating and updating a camera....
Definition camera.h:35
Performs GGX prefiltering on six 2D face textures to produce a filtered cubemap.
virtual auto init(rtti::context &ctx) -> bool
Definition pipeline.cpp:22
virtual auto gather_visible_models(scene &scn, const math::frustum *frustum, visibility_flags query, const layer_mask &render_mask) -> visibility_set_models_t
Gathers visible models from the scene based on the given query.
Definition pipeline.cpp:48
visibility_query
Flags for visibility queries.
Definition pipeline.h:71
@ not_specified
No specific visibility query.
Definition pipeline.h:72
@ is_dirty
Query for dirty entities.
Definition pipeline.h:73
@ is_reflection_caster
Query for reflection casting entities.
Definition pipeline.h:76
@ is_static
Query for static entities.
Definition pipeline.h:74
@ is_shadow_caster
Query for shadow casting entities.
Definition pipeline.h:75
virtual ~pipeline()=default
atmospheric_pass_skybox atmospheric_pass_skybox_
Definition pipeline.h:155
prefilter_pass prefilter_pass_
Definition pipeline.h:151
virtual void ui_pass(scene &scn, const camera &camera, gfx::render_view &rview, const gfx::frame_buffer::ptr &output)
Definition pipeline.cpp:177
virtual void run_pipeline(const gfx::frame_buffer::ptr &output, scene &scn, const camera &camera, gfx::render_view &rview, delta_t dt, const run_params &params, layer_mask render_mask=layer_mask{layer_reserved::everything_layer})=0
Renders the entire scene from the camera's perspective to the specified output.
virtual auto run_pipeline(scene &scn, const camera &camera, gfx::render_view &rview, delta_t dt, const run_params &params, layer_mask render_mask=layer_mask{layer_reserved::everything_layer}) -> gfx::frame_buffer::ptr=0
Renders the entire scene from the camera's perspective.
virtual void set_debug_pass(int pass)=0
atmospheric_pass_perez atmospheric_pass_perez_
Definition pipeline.h:154
tonemapping_pass tonemapping_pass_
Definition pipeline.h:158
std::shared_ptr< pipeline > sptr
Definition pipeline.h:63
std::weak_ptr< pipeline > wptr
Definition pipeline.h:64
uint32_t visibility_flags
Type alias for visibility flags.
Definition pipeline.h:79
hiz_pass hiz_pass_
Hi-Z buffer generation pass.
Definition pipeline.h:160
atmospheric_pass atmospheric_pass_
Definition pipeline.h:153
std::unique_ptr< pipeline > uptr
Definition pipeline.h:62
virtual auto create_run_params(entt::handle camera_ent) const -> rendering::pipeline::run_params
Definition pipeline.cpp:118
std::chrono::duration< float > delta_t
std::map< entt::handle, lod_data > lod_data_container
Definition pipeline.h:43
hpp::small_vector< entt::handle > visibility_set_models_t
Definition pipeline.h:44
@ everything_layer
Definition layer_mask.h:16
Contains level of detail (LOD) data for an entity.
Definition pipeline.h:37
float current_time
Current time for LOD transition.
Definition pipeline.h:40
std::uint32_t target_lod_index
Target LOD index.
Definition pipeline.h:39
std::uint32_t current_lod_index
Current LOD index.
Definition pipeline.h:38
Contains data specific to a camera, including LOD information.
Definition pipeline.h:51
lod_data_container entity_lods
Container for entity LOD data.
Definition pipeline.h:52
std::function< void(assao_pass::run_params &params)> fill_assao_params
Definition pipeline.h:85
std::function< void(ssr_pass::run_params &params)> fill_ssr_params
Definition pipeline.h:88
std::function< void(tonemapping_pass::run_params &params)> fill_hdr_params
Definition pipeline.h:86
std::function< void(fxaa_pass::run_params &params)> fill_fxaa_params
Definition pipeline.h:87
Represents a scene in the ACE framework, managing entities and their relationships.
Definition scene.h:21