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)