From 2102e19936901ad71400f8b0d435de739949251b Mon Sep 17 00:00:00 2001 From: Daniel Scharrer Date: Tue, 19 Jun 2012 03:53:49 +0200 Subject: [PATCH] Re-enable depth test after drawing particles While the depth-test was already re-enabled in most cases, sometimes it was not. This could cause some (spell) effects to shine through walls while the player was casting. Fixes bug #278 --- src/core/ArxGame.cpp | 2 +- src/core/Core.cpp | 2 +- src/graphics/particle/ParticleEffects.cpp | 12 +++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/core/ArxGame.cpp b/src/core/ArxGame.cpp index a1b0bf90e6..38e10b9236 100644 --- a/src/core/ArxGame.cpp +++ b/src/core/ArxGame.cpp @@ -1825,7 +1825,7 @@ void ArxGame::Render() { ) { ARX_MAGICAL_FLARES_Draw(FRAMETICKS); - FRAMETICKS = (unsigned long)(arxtime); + FRAMETICKS = (unsigned long)(arxtime); } } #ifdef BUILD_EDITOR diff --git a/src/core/Core.cpp b/src/core/Core.cpp index dc6ffd1d70..b5da850581 100644 --- a/src/core/Core.cpp +++ b/src/core/Core.cpp @@ -3274,7 +3274,7 @@ void DrawMagicSightInterface() if (Flying_Eye) { - GRenderer->SetBlendFunc(Renderer::BlendZero, Renderer::BlendInvSrcColor); + GRenderer->SetBlendFunc(Renderer::BlendZero, Renderer::BlendInvSrcColor); float col=(0.75f+PULSATE*( 1.0f / 20 )); if (col>1.f) col=1.f; diff --git a/src/graphics/particle/ParticleEffects.cpp b/src/graphics/particle/ParticleEffects.cpp index f24a89f957..34ba2ec4e4 100644 --- a/src/graphics/particle/ParticleEffects.cpp +++ b/src/graphics/particle/ParticleEffects.cpp @@ -918,10 +918,6 @@ void ManageTorch() //----------------------------------------------------------------------------- void ARX_MAGICAL_FLARES_Draw(long FRAMETICKS) { - /////////FLARE - GRenderer->SetRenderState(Renderer::DepthWrite, false); - GRenderer->SetBlendFunc(Renderer::BlendOne, Renderer::BlendOne); - GRenderer->SetRenderState(Renderer::AlphaBlending, true); shinum++; @@ -929,8 +925,13 @@ void ARX_MAGICAL_FLARES_Draw(long FRAMETICKS) long TICKS = long(arxtime) - FRAMETICKS; - if (TICKS<0) + if (TICKS<0) return; + + /////////FLARE + GRenderer->SetRenderState(Renderer::DepthWrite, false); + GRenderer->SetBlendFunc(Renderer::BlendOne, Renderer::BlendOne); + GRenderer->SetRenderState(Renderer::AlphaBlending, true); float z,s,r,g,b; @@ -2311,6 +2312,7 @@ void ARX_PARTICLES_Render(EERIE_CAMERA * cam) if (pcc<=0) { GRenderer->SetFogColor(ulBKGColor); + GRenderer->SetRenderState(Renderer::DepthTest, true); return; } }