From 07fe099b4e1fd877176f2b2947841ee82aa91ed0 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 19 Nov 2020 19:07:32 +0100 Subject: neo screen droplets --- src/core/Game.cpp | 7 +++++++ src/core/config.h | 8 ++++++++ src/core/main.cpp | 17 ++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 4034c4b6..5b75e6a6 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -93,6 +93,7 @@ #include "WaterCreatures.h" #include "postfx.h" #include "custompipes.h" +#include "screendroplets.h" eLevelName CGame::currLevel; int32 CGame::currArea; @@ -401,6 +402,9 @@ bool CGame::Initialise(const char* datFile) CPed::Initialise(); CRouteNode::Initialise(); CEventList::Initialise(); +#ifdef SCREEN_DROPLETS + ScreenDroplets::Initialise(); +#endif LoadingScreen("Loading the Game", "Find big buildings", nil); CRenderer::Init(); LoadingScreen("Loading the Game", "Setup game variables", nil); @@ -568,6 +572,9 @@ void CGame::ReInitGameObjectVariables(void) currArea = AREA_MAIN_MAP; CPed::Initialise(); CEventList::Initialise(); +#ifdef SCREEN_DROPLETS + ScreenDroplets::Initialise(); +#endif CWeapon::InitialiseWeapons(); CPopulation::Initialise(); diff --git a/src/core/config.h b/src/core/config.h index 66e174ea..fc8e61f6 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -246,10 +246,18 @@ enum Config { #ifdef LIBRW //#define EXTENDED_COLOURFILTER // more options for colour filter (replaces mblur) //#define EXTENDED_PIPELINES // custom render pipelines (includes Neo) +//#define SCREEN_DROPLETS // neo water droplets //#define NEW_RENDERER // leeds-like world rendering, needs librw #endif //#define MULTISAMPLING // adds MSAA option TODO +#ifndef EXTENDED_COLOURFILTER +#undef SCREEN_DROPLETS // we need the front- (or back-)buffer for this effect +#endif +#ifndef EXTENDED_PIPELINES +#undef SCREEN_DROPLETS // we need neo.txd +#endif + #ifdef LIBRW // these are not supported with librw yet # undef MULTISAMPLING diff --git a/src/core/main.cpp b/src/core/main.cpp index 48e0ff76..19be3b27 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -68,7 +68,9 @@ #include "Clock.h" #include "Occlusion.h" #include "Ropes.h" +#include "postfx.h" #include "custompipes.h" +#include "screendroplets.h" GlobalScene Scene; @@ -401,6 +403,9 @@ Initialise3D(void *param) bool ret = CGame::InitialiseRenderWare(); #ifdef EXTENDED_PIPELINES CustomPipes::CustomPipeInit(); // need Scene.world for this +#endif +#ifdef SCREEN_DROPLETS + ScreenDroplets::InitDraw(); #endif return ret; } @@ -411,6 +416,9 @@ Initialise3D(void *param) static void Terminate3D(void) { +#ifdef SCREEN_DROPLETS + ScreenDroplets::Shutdown(); +#endif #ifdef EXTENDED_PIPELINES CustomPipes::CustomPipeShutdown(); #endif @@ -1246,10 +1254,17 @@ Idle(void *arg) RenderDebugShit(); RenderEffects(); - tbStartTimer(0, "RenderMotionBlur"); if((TheCamera.m_BlurType == MOTION_BLUR_NONE || TheCamera.m_BlurType == MOTION_BLUR_LIGHT_SCENE) && TheCamera.m_ScreenReductionPercentage > 0.0f) TheCamera.SetMotionBlurAlpha(150); + +#ifdef SCREEN_DROPLETS + CPostFX::GetBackBuffer(Scene.camera); + ScreenDroplets::Process(); + ScreenDroplets::Render(); +#endif + + tbStartTimer(0, "RenderMotionBlur"); TheCamera.RenderMotionBlur(); tbEndTimer("RenderMotionBlur"); -- cgit v1.2.3