summaryrefslogtreecommitdiffstats
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2021-02-28 19:07:32 +0100
committerSergeanur <s.anureev@yandex.ua>2021-06-24 20:32:43 +0200
commitc58d98a39ea3fa5e1f515fbac96eb58350a6de3e (patch)
tree2f62df6b06c64af88786e6f2329a1f6d0adb613c /src/render/Renderer.cpp
parentfix postfx fix (diff)
downloadre3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar.gz
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar.bz2
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar.lz
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar.xz
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.tar.zst
re3-c58d98a39ea3fa5e1f515fbac96eb58350a6de3e.zip
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 165ef235..b131e6c3 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -82,14 +82,6 @@ CVehicle *CRenderer::m_pFirstPersonVehicle;
bool CRenderer::m_loadingPriority;
float CRenderer::ms_lodDistScale = 1.2f;
-#ifdef EXTRA_MODEL_FLAGS
-#define BACKFACE_CULLING_ON SetCullMode(rwCULLMODECULLBACK)
-#define BACKFACE_CULLING_OFF SetCullMode(rwCULLMODECULLNONE)
-#else
-#define BACKFACE_CULLING_ON
-#define BACKFACE_CULLING_OFF
-#endif
-
// unused
BlockedRange CRenderer::aBlockedRanges[16];
BlockedRange *CRenderer::pFullBlockedRanges;
@@ -442,6 +434,14 @@ CRenderer::RenderOneBuilding(CEntity *ent, float camdist)
RpAtomic *atomic = (RpAtomic*)ent->m_rwObject;
CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->GetModelIndex());
+#ifdef EXTRA_MODEL_FLAGS
+ bool resetCull = false;
+ if(!ent->IsBuilding() || mi->RenderDoubleSided()){
+ resetCull = true;
+ BACKFACE_CULLING_OFF;
+ }
+#endif
+
int pass = PASS_BLEND;
if(mi->m_additive) // very questionable
pass = PASS_ADD;
@@ -471,6 +471,11 @@ CRenderer::RenderOneBuilding(CEntity *ent, float camdist)
}else
WorldRender::AtomicFirstPass(atomic, pass);
+#ifdef EXTRA_MODEL_FLAGS
+ if(resetCull)
+ BACKFACE_CULLING_ON;
+#endif
+
ent->bImBeingRendered = false; // TODO: this seems wrong, but do we even need it?
}
@@ -482,6 +487,7 @@ CRenderer::RenderWorld(int pass)
CLink<CVisibilityPlugins::AlphaObjectInfo> *node;
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
+ BACKFACE_CULLING_ON;
DeActivateDirectional();
SetAmbientColours();