diff options
author | Daniel Stokes <kupomail@gmail.com> | 2013-09-06 02:05:52 +0400 |
---|---|---|
committer | Daniel Stokes <kupomail@gmail.com> | 2013-09-06 02:05:52 +0400 |
commit | 6cc3aec8bc3cde3a0007fd877e40a744ee44c2e2 (patch) | |
tree | 984c7de21b107b21208c8bd2c0681e057293e8b7 /source | |
parent | 677b6972b5c16553a4e50544819cf01ec41bc03e (diff) |
Fixing a problem with variance shadow maps blurring out on transparent receivers in the Game Engine reported by Sam Cameron on the IRC.
Also correcting some slight blurring over time by making sure the color buffer is cleared for shadows.
Diffstat (limited to 'source')
-rw-r--r-- | source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 1 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 32666ec0792..c685dcfe068 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -1201,6 +1201,7 @@ void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene) /* render */ m_rasterizer->ClearDepthBuffer(); + m_rasterizer->ClearColorBuffer(); scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools); /* unbind framebuffer object, restore drawmode, free camera */ diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index c24cfdb4ef0..bfc74e0c6dc 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -1010,7 +1010,11 @@ void RAS_OpenGLRasterizer::DisableMotionBlur() void RAS_OpenGLRasterizer::SetAlphaBlend(int alphablend) { - GPU_set_material_alpha_blend(alphablend); + /* Variance shadow maps don't handle alpha well, best to not allow it for now */ + if (m_drawingmode == KX_SHADOW && m_usingoverrideshader) + GPU_set_material_alpha_blend(GPU_BLEND_SOLID); + else + GPU_set_material_alpha_blend(alphablend); /* if (alphablend == m_last_alphablend) return; |