-------------------------------------------------------------------------------------- Description: Render lensflares. Clear primary batches and frame dependant object lists. --------------------------------------------------------------------------------------
| 2786 | // Render lensflares. Clear primary batches and frame dependant object lists. |
| 2787 | // -------------------------------------------------------------------------------------- |
| 2788 | void EveSpaceScene::EndRender( Tr2RenderContext& renderContext ) |
| 2789 | { |
| 2790 | CCP_STATS_ZONE( __FUNCTION__ ); |
| 2791 | |
| 2792 | if( !m_display ) |
| 2793 | { |
| 2794 | return; |
| 2795 | } |
| 2796 | |
| 2797 | renderContext.AddGpuMarker( __FUNCTION__ ); |
| 2798 | |
| 2799 | Tr2QuadRenderer::Instance()->DoneRendering( renderContext ); |
| 2800 | |
| 2801 | renderContext.m_esm.BeginManagedRendering(); |
| 2802 | renderContext.m_esm.ApplyStandardStates( Tr2EffectStateManager::RM_OPAQUE ); |
| 2803 | |
| 2804 | PopulatePerFramePSData( m_perFramePS, renderContext ); |
| 2805 | PopulatePerFrameVSData( m_perFrameVS, renderContext ); |
| 2806 | ApplyPerFrameData( renderContext ); |
| 2807 | |
| 2808 | // collect visible lensflares |
| 2809 | std::vector<ITr2Renderable*> visible; |
| 2810 | |
| 2811 | PopulatePerFramePSData( m_perFramePS, renderContext ); |
| 2812 | PopulatePerFrameVSData( m_perFrameVS, renderContext ); |
| 2813 | ApplyPerFrameData( renderContext ); |
| 2814 | |
| 2815 | if( !visible.empty() ) |
| 2816 | { |
| 2817 | renderContext.SetReadOnlyDepth( true ); |
| 2818 | RenderRenderables( visible, |
| 2819 | m_secondaryBatches[TRIBATCHTYPE_TRANSPARENT], |
| 2820 | TRIBATCHTYPE_TRANSPARENT, |
| 2821 | Tr2EffectStateManager::RM_ALPHA, |
| 2822 | renderContext ); |
| 2823 | RenderRenderables( visible, |
| 2824 | m_secondaryBatches[TRIBATCHTYPE_ADDITIVE], |
| 2825 | TRIBATCHTYPE_ADDITIVE, |
| 2826 | Tr2EffectStateManager::RM_ALPHA_ADDITIVE, |
| 2827 | renderContext ); |
| 2828 | renderContext.SetReadOnlyDepth( false ); |
| 2829 | visible.clear(); |
| 2830 | } |
| 2831 | |
| 2832 | // lensflares |
| 2833 | if( !m_lensflares.empty() ) |
| 2834 | { |
| 2835 | GPU_REGION( renderContext, "Lens Flares" ); |
| 2836 | // lensflares |
| 2837 | for( auto it = m_lensflares.cbegin(); it != m_lensflares.cend(); ++it ) |
| 2838 | { |
| 2839 | ( *it )->GetRenderables( m_updateContext.GetFrustum(), visible ); |
| 2840 | } |
| 2841 | |
| 2842 | if( !visible.empty() ) |
| 2843 | { |
| 2844 | renderContext.SetReadOnlyDepth( true ); |
| 2845 | RenderRenderables( visible, |
no test coverage detected