summaryrefslogtreecommitdiffstats
path: root/src/rw
diff options
context:
space:
mode:
Diffstat (limited to 'src/rw')
-rw-r--r--src/rw/MemoryMgr.cpp8
-rw-r--r--src/rw/RwHelper.cpp18
-rw-r--r--src/rw/RwHelper.h1
-rw-r--r--src/rw/VisibilityPlugins.cpp3
-rw-r--r--src/rw/VisibilityPlugins.h1
5 files changed, 24 insertions, 7 deletions
diff --git a/src/rw/MemoryMgr.cpp b/src/rw/MemoryMgr.cpp
index 2379692c..b9cff043 100644
--- a/src/rw/MemoryMgr.cpp
+++ b/src/rw/MemoryMgr.cpp
@@ -28,10 +28,10 @@ RwMemoryFunctions memFuncs = {
#ifdef USE_CUSTOM_ALLOCATOR
// game seems to be using heap directly here, but this is nicer
-void *operator new(size_t sz) { return MemoryMgrMalloc(sz); }
-void *operator new[](size_t sz) { return MemoryMgrMalloc(sz); }
-void operator delete(void *ptr) noexcept { MemoryMgrFree(ptr); }
-void operator delete[](void *ptr) noexcept { MemoryMgrFree(ptr); }
+void *operator new(size_t sz) throw() { return MemoryMgrMalloc(sz); }
+void *operator new[](size_t sz) throw() { return MemoryMgrMalloc(sz); }
+void operator delete(void *ptr) throw() { MemoryMgrFree(ptr); }
+void operator delete[](void *ptr) throw() { MemoryMgrFree(ptr); }
#endif
void*
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index e98b58f6..35593722 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -6,11 +6,13 @@
#include "Timecycle.h"
#include "skeleton.h"
#include "Debug.h"
+#include "MBlur.h"
#if !defined(FINAL) || defined(DEBUGMENU)
#include "rtcharse.h"
#endif
#ifndef FINAL
RtCharset *debugCharset;
+bool bDebugRenderGroups;
#endif
#ifdef PS2_ALPHA_TEST
@@ -117,8 +119,11 @@ SetCullMode(uint32 mode)
void
PushRendergroup(const char *name)
{
+ if(!bDebugRenderGroups)
+ return;
#if defined(RW_OPENGL)
- glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name);
+ if(GLAD_GL_KHR_debug)
+ glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name);
#elif defined(RW_D3D9)
static WCHAR tmp[256];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, tmp, sizeof(tmp));
@@ -129,8 +134,11 @@ PushRendergroup(const char *name)
void
PopRendergroup(void)
{
+ if(!bDebugRenderGroups)
+ return;
#if defined(RW_OPENGL)
- glPopDebugGroup();
+ if(GLAD_GL_KHR_debug)
+ glPopDebugGroup();
#elif defined(RW_D3D9)
D3DPERF_EndEvent();
#endif
@@ -491,6 +499,12 @@ CameraSize(RwCamera * camera, RwRect * rect,
raster->width = zRaster->width = rect->w;
raster->height = zRaster->height = rect->h;
#endif
+#ifdef FIX_BUGS
+ if(CMBlur::BlurOn){
+ CMBlur::MotionBlurClose();
+ CMBlur::MotionBlurOpen(camera);
+ }
+#endif
}
/* Figure out the view window */
diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h
index 1a5f64b1..0e04aece 100644
--- a/src/rw/RwHelper.h
+++ b/src/rw/RwHelper.h
@@ -1,5 +1,6 @@
#pragma once
+extern bool bDebugRenderGroups;
extern bool gPS2alphaTest;
void OpenCharsetSafe();
diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp
index 9ea5b11c..7ff5c243 100644
--- a/src/rw/VisibilityPlugins.cpp
+++ b/src/rw/VisibilityPlugins.cpp
@@ -303,6 +303,8 @@ CVisibilityPlugins::RenderFadingEntities(void)
#ifdef EXTRA_MODEL_FLAGS
else if(mi->m_bIsTree)
SetAlphaRef(128);
+ if(!e->IsBuilding() || mi->RenderDoubleSided())
+ BACKFACE_CULLING_OFF;
#endif
if(e->bDistanceFade){
@@ -319,6 +321,7 @@ CVisibilityPlugins::RenderFadingEntities(void)
#ifdef EXTRA_MODEL_FLAGS
if(mi->m_bIsTree)
SetAlphaRef(2);
+ BACKFACE_CULLING_ON;
#endif
#ifdef FIX_BUGS
if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite)
diff --git a/src/rw/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h
index f092de5a..5fb87765 100644
--- a/src/rw/VisibilityPlugins.h
+++ b/src/rw/VisibilityPlugins.h
@@ -117,7 +117,6 @@ public:
int32 offset, int32 len);
static int32 ms_framePluginOffset;
- // Not actually used
struct ClumpExt
{
ClumpVisibilityCB visibilityCB;