From cef172976ef3eb81ebe0a92c373744438f821ed2 Mon Sep 17 00:00:00 2001 From: XProger Date: Thu, 21 Jun 2018 06:02:34 +0300 Subject: [PATCH] fix alpha test for shadows --- src/cache.h | 1 + src/level.h | 2 +- src/shaders/shader.glsl | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cache.h b/src/cache.h index 947816a..d9ab0da 100644 --- a/src/cache.h +++ b/src/cache.h @@ -86,6 +86,7 @@ struct ShaderCache { compile(Core::passShadow, Shader::ENTITY, fx, rsShadow); compile(Core::passShadow, Shader::ENTITY, fx, rsShadow | RS_DISCARD); compile(Core::passShadow, Shader::MIRROR, fx, rsShadow); + compile(Core::passShadow, Shader::MIRROR, fx, rsShadow | RS_DISCARD); } void prepareWater(int fx) { diff --git a/src/level.h b/src/level.h index 51c2f14..c41bbce 100644 --- a/src/level.h +++ b/src/level.h @@ -379,7 +379,7 @@ struct Level : IGame { virtual void setRoomParams(int roomIndex, Shader::Type type, float diffuse, float ambient, float specular, float alpha, bool alphaTest = false) { if (Core::pass == Core::passShadow) { - setShader(Core::pass, type); + setShader(Core::pass, type, false, alphaTest); return; } diff --git a/src/shaders/shader.glsl b/src/shaders/shader.glsl index ad88ebb..637847f 100644 --- a/src/shaders/shader.glsl +++ b/src/shaders/shader.glsl @@ -394,6 +394,8 @@ uniform vec4 uFogParams; #ifdef PASS_COMPOSE vec3 rv = reflect(-normalize(vViewVec.xyz), normalize(vNormal.xyz)); color = textureCube(sEnvironment, normalize(rv)); + #else + color = vec4(1.0); #endif #else #if defined(PASS_COMPOSE) && !defined(TYPE_SPRITE)