void CDAViewRender::PerformSlowMoEffect( const CViewSetup &view ) { C_DAPlayer *pPlayer = C_DAPlayer::GetLocalOrSpectatedPlayer(); if ( !pPlayer ) return; if (!da_postprocess_shaders.GetBool()) return; if (!pPlayer->IsAlive()) m_flStyleLerp = 0; ConVarRef da_postprocess_slowmo("da_postprocess_slowmo"); ConVarRef da_postprocess_deathcam("da_postprocess_deathcam"); ConVarRef da_postprocess_skill("da_postprocess_skill"); ConVarRef da_postprocess_vr("da_postprocess_vr"); da_postprocess_vr.SetValue(UseVR()); if (pPlayer->IsStyleSkillActive()) m_flStyleLerp = Approach(1, m_flStyleLerp, gpGlobals->frametime*2); else m_flStyleLerp = Approach(0, m_flStyleLerp, gpGlobals->frametime); bool bShowPostProcess = false; if (pPlayer->GetSlowMoMultiplier() < 1) bShowPostProcess = true; else if (m_flStyleLerp) bShowPostProcess = true; else if (!pPlayer->IsAlive() && pPlayer->GetObserverMode() == OBS_MODE_FREEZECAM) bShowPostProcess = true; else if (da_postprocess_compare.GetInt() || da_postprocess_slowmo.GetInt()) bShowPostProcess = true; if (pPlayer->IsAlive()) da_postprocess_deathcam.SetValue(false); else da_postprocess_deathcam.SetValue(true); da_postprocess_skill.SetValue(m_flStyleLerp); if (bShowPostProcess) { IMaterial *pMaterial = materials->FindMaterial( "shaders/slowmo", TEXTURE_GROUP_CLIENT_EFFECTS, true ); if ( !IsErrorMaterial(pMaterial) ) { if (da_postprocess_compare.GetInt() == 1) DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width/2, view.height ); else DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width, view.height ); } } }
//----------------------------------------------------------------------------- // Draws all the debugging info //----------------------------------------------------------------------------- void CDebugViewRender::Draw2DDebuggingInfo( const CViewSetup &view ) { if ( IsX360() && IsRetail() ) return; // HDRFIXME: Assert NULL rendertarget if ( mat_yuv.GetInt() && (engine->GetDXSupportLevel() >= 80) ) { IMaterial *pMaterial; pMaterial = materials->FindMaterial( "debug/yuv", TEXTURE_GROUP_OTHER, true ); if( !IsErrorMaterial( pMaterial ) ) { DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width, view.height ); } } if ( mat_hsv.GetInt() && (engine->GetDXSupportLevel() >= 90) ) { IMaterial *pMaterial; pMaterial = materials->FindMaterial( "debug/hsv", TEXTURE_GROUP_OTHER, true ); if( !IsErrorMaterial( pMaterial ) ) { DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width, view.height ); } } // Draw debugging lightmaps if ( mat_showlightmappage.GetInt() != -1 ) { CLightmapDebugView clientView( assert_cast<CViewRender *>( ::view ) ); clientView.Setup( view ); clientView.Draw(); } if ( cl_drawshadowtexture.GetInt() ) { int nSize = cl_shadowtextureoverlaysize.GetInt(); g_pClientShadowMgr->RenderShadowTexture( nSize, nSize ); } const char *pDrawMaterial = cl_drawmaterial.GetString(); if ( pDrawMaterial && pDrawMaterial[0] ) { RenderMaterial( pDrawMaterial ); } if ( mat_showwatertextures.GetBool() ) { OverlayWaterTextures(); } if ( mat_showcamerarendertarget.GetBool() ) { float w = mat_wateroverlaysize.GetFloat(); float h = mat_wateroverlaysize.GetFloat(); #ifdef PORTAL g_pPortalRender->OverlayPortalRenderTargets( w, h ); #else OverlayCameraRenderTarget( "debug/debugcamerarendertarget", 0, 0, w, h ); #endif } if ( mat_showframebuffertexture.GetBool() ) { // HDRFIXME: Get rid of these rendertarget sets assuming that the assert at the top of this function is true. CMatRenderContextPtr pRenderContext( materials ); pRenderContext->PushRenderTargetAndViewport( NULL ); OverlayFrameBufferTexture( 0 ); OverlayFrameBufferTexture( 1 ); pRenderContext->PopRenderTargetAndViewport( ); } const char *pDrawTexture = mat_drawTexture.GetString(); if ( pDrawTexture && pDrawTexture[0] ) { OverlayShowTexture( pDrawTexture, mat_drawTextureScale.GetFloat() ); } #ifdef _X360 if ( mat_drawColorRamp.GetBool() ) { OverlayColorRamp( mat_drawColorRamp.GetInt() == 2 ); } #endif if ( r_flashlightdrawdepth.GetBool() ) { shadowmgr->DrawFlashlightDepthTexture( ); } if ( mat_drawTitleSafe.GetBool() ) { OverlayTitleSafe(); } }