MCPcopy Create free account
hub / github.com/BoomingTech/Piccolo / initialize

Method initialize

engine/source/runtime/function/render/render_pipeline.cpp:20–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18namespace Piccolo
19{
20 void RenderPipeline::initialize(RenderPipelineInitInfo init_info)
21 {
22 m_point_light_shadow_pass = std::make_shared<PointLightShadowPass>();
23 m_directional_light_pass = std::make_shared<DirectionalLightShadowPass>();
24 m_main_camera_pass = std::make_shared<MainCameraPass>();
25 m_tone_mapping_pass = std::make_shared<ToneMappingPass>();
26 m_color_grading_pass = std::make_shared<ColorGradingPass>();
27 m_ui_pass = std::make_shared<UIPass>();
28 m_combine_ui_pass = std::make_shared<CombineUIPass>();
29 m_pick_pass = std::make_shared<PickPass>();
30 m_fxaa_pass = std::make_shared<FXAAPass>();
31 m_particle_pass = std::make_shared<ParticlePass>();
32
33 RenderPassCommonInfo pass_common_info;
34 pass_common_info.rhi = m_rhi;
35 pass_common_info.render_resource = init_info.render_resource;
36
37 m_point_light_shadow_pass->setCommonInfo(pass_common_info);
38 m_directional_light_pass->setCommonInfo(pass_common_info);
39 m_main_camera_pass->setCommonInfo(pass_common_info);
40 m_tone_mapping_pass->setCommonInfo(pass_common_info);
41 m_color_grading_pass->setCommonInfo(pass_common_info);
42 m_ui_pass->setCommonInfo(pass_common_info);
43 m_combine_ui_pass->setCommonInfo(pass_common_info);
44 m_pick_pass->setCommonInfo(pass_common_info);
45 m_fxaa_pass->setCommonInfo(pass_common_info);
46 m_particle_pass->setCommonInfo(pass_common_info);
47
48 m_point_light_shadow_pass->initialize(nullptr);
49 m_directional_light_pass->initialize(nullptr);
50
51 std::shared_ptr<MainCameraPass> main_camera_pass = std::static_pointer_cast<MainCameraPass>(m_main_camera_pass);
52 std::shared_ptr<RenderPass> _main_camera_pass = std::static_pointer_cast<RenderPass>(m_main_camera_pass);
53 std::shared_ptr<ParticlePass> particle_pass = std::static_pointer_cast<ParticlePass>(m_particle_pass);
54
55 ParticlePassInitInfo particle_init_info{};
56 particle_init_info.m_particle_manager = g_runtime_global_context.m_particle_manager;
57 m_particle_pass->initialize(&particle_init_info);
58
59 main_camera_pass->m_point_light_shadow_color_image_view =
60 std::static_pointer_cast<RenderPass>(m_point_light_shadow_pass)->getFramebufferImageViews()[0];
61 main_camera_pass->m_directional_light_shadow_color_image_view =
62 std::static_pointer_cast<RenderPass>(m_directional_light_pass)->m_framebuffer.attachments[0].view;
63
64 MainCameraPassInitInfo main_camera_init_info;
65 main_camera_init_info.enble_fxaa = init_info.enable_fxaa;
66 main_camera_pass->setParticlePass(particle_pass);
67 m_main_camera_pass->initialize(&main_camera_init_info);
68
69 std::static_pointer_cast<ParticlePass>(m_particle_pass)->setupParticlePass();
70
71 std::vector<RHIDescriptorSetLayout*> descriptor_layouts = _main_camera_pass->getDescriptorSetLayouts();
72 std::static_pointer_cast<PointLightShadowPass>(m_point_light_shadow_pass)
73 ->setPerMeshLayout(descriptor_layouts[MainCameraPass::LayoutType::_per_mesh]);
74 std::static_pointer_cast<DirectionalLightShadowPass>(m_directional_light_pass)
75 ->setPerMeshLayout(descriptor_layouts[MainCameraPass::LayoutType::_per_mesh]);
76
77 m_point_light_shadow_pass->postInitialize();

Callers

nothing calls this directly

Calls 8

setCommonInfoMethod · 0.80
setParticlePassMethod · 0.80
getRenderPassMethod · 0.80
setupParticlePassMethod · 0.45
setPerMeshLayoutMethod · 0.45
postInitializeMethod · 0.45

Tested by

no test coverage detected