From e7a370e170a97761a01a1fb537151ff2718afe1a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 19 Oct 2017 14:28:44 +0900 Subject: [PATCH] Fix depth draw alpha prepass for shadow --- drivers/gles3/rasterizer_storage_gles3.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 44a9909bd78..ae4a9d2a039 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -2430,7 +2430,9 @@ void RasterizerStorageGLES3::_update_material(Material *material) { if (material->shader && material->shader->mode == VS::SHADER_SPATIAL) { - if (!material->shader->spatial.uses_alpha && material->shader->spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX) { + Shader::Spatial spatial = material->shader->spatial; + if (spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX && + (!spatial.uses_alpha || (spatial.uses_alpha && spatial.depth_draw_mode == Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))) { can_cast_shadow = true; }