2
0
Эх сурвалжийг харах

Fix depth draw alpha prepass for shadow

Hiroshi Ogawa 8 жил өмнө
parent
commit
e7a370e170

+ 3 - 1
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;
 			}