From ac464381161e6e3c4c8aed167b54e6b5ee3a0718 Mon Sep 17 00:00:00 2001 From: turanszkij Date: Sun, 30 Apr 2017 01:15:54 +0200 Subject: [PATCH] bypass pixel shader for non alpha tested shadows --- WickedEngine/wiLoader.h | 2 +- WickedEngine/wiRenderer.cpp | 10 +++++++++- WickedEngine/wiVersion.cpp | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/WickedEngine/wiLoader.h b/WickedEngine/wiLoader.h index 8361d4513..96c8561ef 100644 --- a/WickedEngine/wiLoader.h +++ b/WickedEngine/wiLoader.h @@ -242,7 +242,7 @@ struct Material planar_reflections = false; - alphaRef = 0.75f; + alphaRef = 1.0f; // no alpha test by default } bool IsTransparent() const { return alpha < 1.0f; } diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 9ece76210..6c127580c 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -3980,7 +3980,15 @@ void wiRenderer::RenderMeshes(const XMFLOAT3& eye, const CulledCollection& culle } PSTYPES realPS = GetPSTYPE(shaderType, material); - GetDevice()->BindPS(pixelShaders[realPS], threadID); + if (shaderType == SHADERTYPE_SHADOW && material->alphaRef > 1.0f - 1.0f/256.0f) + { + // bypass pixel shader for non alpha tested shadows + GetDevice()->BindPS(nullptr, threadID); + } + else + { + GetDevice()->BindPS(pixelShaders[realPS], threadID); + } } else { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 9dff3f724..78ccecbc9 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -7,7 +7,7 @@ namespace wiVersion // minor features, major updates const int minor = 11; // minor bug fixes, alterations, refactors, updates - const int revision = 36; + const int revision = 37; long GetVersion()