From 0ded18e5d52ef199e766f5f703c9ab65ecf649a3 Mon Sep 17 00:00:00 2001 From: Jorge Rodriguez Date: Wed, 2 Jul 2014 23:42:54 -0700 Subject: [PATCH] Turn on the SSAO depth pass so we can have some nice SSAO. --- mp/src/game/client/sdk/da_view_scene.cpp | 38 +++++++++++++++++++ mp/src/game/client/sdk/da_view_scene.h | 2 + mp/src/game/client/viewrender.cpp | 17 +++------ mp/src/game/client/viewrender.h | 2 + .../stdshaders/builddashaders.bat | 2 +- 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/mp/src/game/client/sdk/da_view_scene.cpp b/mp/src/game/client/sdk/da_view_scene.cpp index ded15b383..c883e0f65 100644 --- a/mp/src/game/client/sdk/da_view_scene.cpp +++ b/mp/src/game/client/sdk/da_view_scene.cpp @@ -51,6 +51,44 @@ CDAViewRender::CDAViewRender() m_flStyleLerp = 0; } +void CDAViewRender::Init() +{ + BaseClass::Init(); + + ITexture *depthOld = materials->FindTexture( "_rt_ResolvedFullFrameDepth", TEXTURE_GROUP_RENDER_TARGET ); + static int flags = TEXTUREFLAGS_NOMIP | TEXTUREFLAGS_NOLOD | TEXTUREFLAGS_RENDERTARGET; + if ( depthOld ) + flags = depthOld->GetFlags(); + + int iW, iH; + materials->GetBackBufferDimensions( iW, iH ); + materials->BeginRenderTargetAllocation(); + materials->CreateNamedRenderTargetTextureEx( + "_rt_ResolvedFullFrameDepth_DA", + iW, iH, RT_SIZE_NO_CHANGE, + IMAGE_FORMAT_RGBA16161616F, + MATERIAL_RT_DEPTH_NONE, + flags, + 0); + + materials->CreateNamedRenderTargetTextureEx( + "_rt_ssao_0", + iW, iH, RT_SIZE_NO_CHANGE, + IMAGE_FORMAT_RGBA16161616F, + MATERIAL_RT_DEPTH_NONE, + flags, + 0); + + materials->CreateNamedRenderTargetTextureEx( + "_rt_ssao_1", + iW, iH, RT_SIZE_NO_CHANGE, + IMAGE_FORMAT_RGBA16161616F, + MATERIAL_RT_DEPTH_NONE, + flags, + 0); + materials->EndRenderTargetAllocation(); +} + ConVar da_postprocess_compare( "da_postprocess_compare", "0", FCVAR_CHEAT|FCVAR_DEVELOPMENTONLY, "Only render to half of the screen for debug purposes" ); ConVar da_postprocess_deathcam_override( "da_postprocess_deathcam_override", "-1", FCVAR_CHEAT|FCVAR_DEVELOPMENTONLY, "Override the control for death came mode" ); diff --git a/mp/src/game/client/sdk/da_view_scene.h b/mp/src/game/client/sdk/da_view_scene.h index d5d6ed420..2108560a1 100644 --- a/mp/src/game/client/sdk/da_view_scene.h +++ b/mp/src/game/client/sdk/da_view_scene.h @@ -9,6 +9,8 @@ class CDAViewRender : public CViewRender public: CDAViewRender(); + virtual void Init(); + virtual void Render2DEffectsPreHUD( const CViewSetup &view ); virtual void RenderView( const CViewSetup &view, int nClearFlags, int whatToDraw ); diff --git a/mp/src/game/client/viewrender.cpp b/mp/src/game/client/viewrender.cpp index ac0a89e9f..34b5e7bdb 100644 --- a/mp/src/game/client/viewrender.cpp +++ b/mp/src/game/client/viewrender.cpp @@ -5318,14 +5318,8 @@ void CBaseWorldView::DrawSetup( float waterHeight, int nSetupFlags, float waterZ render->PopView( GetFrustum() ); } -#ifdef TF_CLIENT_DLL - bool bVisionOverride = ( localplayer_visionflags.GetInt() & ( 0x01 ) ); // Pyro-vision Goggles - - if ( savedViewID == VIEW_MAIN && bVisionOverride && pyro_dof.GetBool() ) - { + if ( savedViewID == VIEW_MAIN ) SSAO_DepthPass(); - } -#endif g_CurrentViewID = savedViewID; } @@ -5464,7 +5458,9 @@ void CBaseWorldView::SSAO_DepthPass() int savedViewID = g_CurrentViewID; g_CurrentViewID = VIEW_SSAO; - ITexture *pSSAO = materials->FindTexture( "_rt_ResolvedFullFrameDepth", TEXTURE_GROUP_RENDER_TARGET ); + ITexture *pSSAO = materials->FindTexture( "_rt_ResolvedFullFrameDepth_DA", TEXTURE_GROUP_RENDER_TARGET ); + + Assert(!IsErrorTexture(pSSAO)); CMatRenderContextPtr pRenderContext( materials ); @@ -5506,13 +5502,12 @@ void CBaseWorldView::SSAO_DepthPass() DrawOpaqueRenderables( DEPTH_MODE_SSA0 ); } -#if 0 - if ( m_bRenderFlashlightDepthTranslucents || r_flashlightdepth_drawtranslucents.GetBool() ) { VPROF_BUDGET( "DrawTranslucentRenderables", VPROF_BUDGETGROUP_SHADOW_DEPTH_TEXTURING ); DrawTranslucentRenderables( false, true ); } -#endif + + m_pMainView->DrawViewModels(*m_pMainView->GetViewSetup(), true); modelrender->ForcedMaterialOverride( 0 ); diff --git a/mp/src/game/client/viewrender.h b/mp/src/game/client/viewrender.h index 723c32225..77398eb83 100644 --- a/mp/src/game/client/viewrender.h +++ b/mp/src/game/client/viewrender.h @@ -436,10 +436,12 @@ class CViewRender : public IViewRender, bool DrawOneMonitor( ITexture *pRenderTarget, int cameraNum, C_PointCamera *pCameraEnt, const CViewSetup &cameraView, C_BasePlayer *localPlayer, int x, int y, int width, int height ); +public: // Drawing primitives bool ShouldDrawViewModel( bool drawViewmodel ); void DrawViewModels( const CViewSetup &view, bool drawViewmodel ); +private: void PerformScreenSpaceEffects( int x, int y, int w, int h ); // Overlays diff --git a/mp/src/materialsystem/stdshaders/builddashaders.bat b/mp/src/materialsystem/stdshaders/builddashaders.bat index bac991f70..0f5355402 100644 --- a/mp/src/materialsystem/stdshaders/builddashaders.bat +++ b/mp/src/materialsystem/stdshaders/builddashaders.bat @@ -5,7 +5,7 @@ rem ================================ rem ==== MOD PATH CONFIGURATIONS === rem == Set the absolute path to your mod's game directory here == -set GAMEDIR=D:\DoubleAction\Sync\dab +set GAMEDIR=\DoubleAction\Sync\dab rem == Set the relative or absolute path to Source SDK Base 2013 Singleplayer\bin == set SDKBINDIR=C:\Steam\steamapps\common\Source SDK Base 2013 Multiplayer\bin