| 18 | namespace 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(); |
nothing calls this directly
no test coverage detected