summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/Game.cpp7
-rw-r--r--src/core/config.h8
-rw-r--r--src/core/main.cpp17
3 files changed, 31 insertions, 1 deletions
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;
@@ -402,6 +404,9 @@ Initialise3D(void *param)
#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");