| 1911 | } |
| 1912 | |
| 1913 | void MainCameraPass::draw(ColorGradingPass& color_grading_pass, |
| 1914 | FXAAPass& fxaa_pass, |
| 1915 | ToneMappingPass& tone_mapping_pass, |
| 1916 | UIPass& ui_pass, |
| 1917 | CombineUIPass& combine_ui_pass, |
| 1918 | ParticlePass& particle_pass, |
| 1919 | uint32_t current_swapchain_image_index) |
| 1920 | { |
| 1921 | { |
| 1922 | RHIRenderPassBeginInfo renderpass_begin_info {}; |
| 1923 | renderpass_begin_info.sType = RHI_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; |
| 1924 | renderpass_begin_info.renderPass = m_framebuffer.render_pass; |
| 1925 | renderpass_begin_info.framebuffer = m_swapchain_framebuffers[current_swapchain_image_index]; |
| 1926 | renderpass_begin_info.renderArea.offset = {0, 0}; |
| 1927 | renderpass_begin_info.renderArea.extent = m_rhi->getSwapchainInfo().extent; |
| 1928 | |
| 1929 | RHIClearValue clear_values[_main_camera_pass_attachment_count]; |
| 1930 | clear_values[_main_camera_pass_gbuffer_a].color = {{0.0f, 0.0f, 0.0f, 0.0f}}; |
| 1931 | clear_values[_main_camera_pass_gbuffer_b].color = {{0.0f, 0.0f, 0.0f, 0.0f}}; |
| 1932 | clear_values[_main_camera_pass_gbuffer_c].color = {{0.0f, 0.0f, 0.0f, 0.0f}}; |
| 1933 | clear_values[_main_camera_pass_backup_buffer_odd].color = {{0.0f, 0.0f, 0.0f, 1.0f}}; |
| 1934 | clear_values[_main_camera_pass_backup_buffer_even].color = {{0.0f, 0.0f, 0.0f, 1.0f}}; |
| 1935 | clear_values[_main_camera_pass_post_process_buffer_odd].color = {{0.0f, 0.0f, 0.0f, 1.0f}}; |
| 1936 | clear_values[_main_camera_pass_post_process_buffer_even].color = {{0.0f, 0.0f, 0.0f, 1.0f}}; |
| 1937 | clear_values[_main_camera_pass_depth].depthStencil = {1.0f, 0}; |
| 1938 | clear_values[_main_camera_pass_swap_chain_image].color = {{0.0f, 0.0f, 0.0f, 1.0f}}; |
| 1939 | renderpass_begin_info.clearValueCount = (sizeof(clear_values) / sizeof(clear_values[0])); |
| 1940 | renderpass_begin_info.pClearValues = clear_values; |
| 1941 | |
| 1942 | m_rhi->cmdBeginRenderPassPFN(m_rhi->getCurrentCommandBuffer(), &renderpass_begin_info, RHI_SUBPASS_CONTENTS_INLINE); |
| 1943 | } |
| 1944 | |
| 1945 | float color[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; |
| 1946 | m_rhi->pushEvent(m_rhi->getCurrentCommandBuffer(), "BasePass", color); |
| 1947 | |
| 1948 | drawMeshGbuffer(); |
| 1949 | |
| 1950 | m_rhi->popEvent(m_rhi->getCurrentCommandBuffer()); |
| 1951 | |
| 1952 | m_rhi->cmdNextSubpassPFN(m_rhi->getCurrentCommandBuffer(), RHI_SUBPASS_CONTENTS_INLINE); |
| 1953 | |
| 1954 | m_rhi->pushEvent(m_rhi->getCurrentCommandBuffer(), "Deferred Lighting", color); |
| 1955 | |
| 1956 | drawDeferredLighting(); |
| 1957 | |
| 1958 | m_rhi->popEvent(m_rhi->getCurrentCommandBuffer()); |
| 1959 | |
| 1960 | m_rhi->cmdNextSubpassPFN(m_rhi->getCurrentCommandBuffer(), RHI_SUBPASS_CONTENTS_INLINE); |
| 1961 | |
| 1962 | m_rhi->pushEvent(m_rhi->getCurrentCommandBuffer(), "Forward Lighting", color); |
| 1963 | |
| 1964 | particle_pass.draw(); |
| 1965 | |
| 1966 | m_rhi->popEvent(m_rhi->getCurrentCommandBuffer()); |
| 1967 | |
| 1968 | m_rhi->cmdNextSubpassPFN(m_rhi->getCurrentCommandBuffer(), RHI_SUBPASS_CONTENTS_INLINE); |
| 1969 | |
| 1970 | tone_mapping_pass.draw(); |
no test coverage detected