|
1 | | -// Copyright 2022-2025 the openage authors. See copying.md for legal info. |
| 1 | +// Copyright 2022-2024 the openage authors. See copying.md for legal info. |
2 | 2 |
|
3 | 3 | #include "render_stage.h" |
4 | 4 |
|
|
12 | 12 | #include "renderer/resources/texture_info.h" |
13 | 13 | #include "renderer/shader_program.h" |
14 | 14 | #include "renderer/stages/world/object.h" |
15 | | -#include "renderer/stages/world/world_shader_commands.h" |
16 | 15 | #include "renderer/texture.h" |
17 | 16 | #include "renderer/window.h" |
18 | 17 | #include "time/clock.h" |
@@ -47,30 +46,6 @@ WorldRenderStage::WorldRenderStage(const std::shared_ptr<Window> &window, |
47 | 46 | log::log(INFO << "Created render stage 'World'"); |
48 | 47 | } |
49 | 48 |
|
50 | | -WorldRenderStage::WorldRenderStage(const std::shared_ptr<Window> &window, |
51 | | - const std::shared_ptr<renderer::Renderer> &renderer, |
52 | | - const std::shared_ptr<renderer::camera::Camera> &camera, |
53 | | - const util::Path &shaderdir, |
54 | | - const util::Path &configdir, |
55 | | - const std::shared_ptr<renderer::resources::AssetManager> &asset_manager, |
56 | | - const std::shared_ptr<time::Clock> clock) : |
57 | | - renderer{renderer}, |
58 | | - camera{camera}, |
59 | | - asset_manager{asset_manager}, |
60 | | - render_objects{}, |
61 | | - clock{clock}, |
62 | | - default_geometry{this->renderer->add_mesh_geometry(WorldObject::get_mesh())} { |
63 | | - auto size = window->get_size(); |
64 | | - this->initialize_render_pass_with_shader_commands(size[0], size[1], shaderdir, configdir); |
65 | | - this->init_uniform_ids(); |
66 | | - |
67 | | - window->add_resize_callback([this](size_t width, size_t height, double /*scale*/) { |
68 | | - this->resize(width, height); |
69 | | - }); |
70 | | - |
71 | | - log::log(INFO << "Created render stage 'World' with shader command"); |
72 | | -} |
73 | | - |
74 | 49 | std::shared_ptr<renderer::RenderPass> WorldRenderStage::get_render_pass() { |
75 | 50 | return this->render_pass; |
76 | 51 | } |
@@ -181,37 +156,4 @@ void WorldRenderStage::init_uniform_ids() { |
181 | 156 | WorldObject::anchor_offset = this->display_shader->get_uniform_id("anchor_offset"); |
182 | 157 | } |
183 | 158 |
|
184 | | -void WorldRenderStage::initialize_render_pass_with_shader_commands(size_t width, size_t height, const util::Path &shaderdir, const util::Path &config_path) { |
185 | | - auto vert_shader_file = (shaderdir / "demo_7_world.vert.glsl").open(); |
186 | | - auto vert_shader_src = renderer::resources::ShaderSource( |
187 | | - resources::shader_lang_t::glsl, |
188 | | - resources::shader_stage_t::vertex, |
189 | | - vert_shader_file.read()); |
190 | | - vert_shader_file.close(); |
191 | | - |
192 | | - auto frag_shader_file = (shaderdir / "demo_7_world.frag.glsl").open(); |
193 | | - log::log(INFO << "Loading shader commands config from: " << (shaderdir / "demo_7_display.frag.glsl")); |
194 | | - this->shader_template = std::make_shared<ShaderCommandTemplate>(frag_shader_file.read()); |
195 | | - if (not this->shader_template->load_commands(config_path / "world_commands.config")) { |
196 | | - log::log(ERR << "Failed to load shader commands configuration for world stage"); |
197 | | - return; |
198 | | - } |
199 | | - |
200 | | - auto frag_shader_src = renderer::resources::ShaderSource( |
201 | | - resources::shader_lang_t::glsl, |
202 | | - resources::shader_stage_t::fragment, |
203 | | - this->shader_template->generate_source()); |
204 | | - frag_shader_file.close(); |
205 | | - |
206 | | - this->output_texture = renderer->add_texture(resources::Texture2dInfo(width, height, resources::pixel_format::rgba8)); |
207 | | - this->depth_texture = renderer->add_texture(resources::Texture2dInfo(width, height, resources::pixel_format::depth24)); |
208 | | - this->id_texture = renderer->add_texture(resources::Texture2dInfo(width, height, resources::pixel_format::r32ui)); |
209 | | - |
210 | | - this->display_shader = this->renderer->add_shader({vert_shader_src, frag_shader_src}); |
211 | | - this->display_shader->bind_uniform_buffer("camera", this->camera->get_uniform_buffer()); |
212 | | - |
213 | | - auto fbo = this->renderer->create_texture_target({this->output_texture, this->depth_texture, this->id_texture}); |
214 | | - this->render_pass = this->renderer->add_render_pass({}, fbo); |
215 | | -} |
216 | | - |
217 | 159 | } // namespace openage::renderer::world |
0 commit comments