diff --git a/servers/rendering/renderer_rd/shader_rd.cpp b/servers/rendering/renderer_rd/shader_rd.cpp index d49634b54ef..1abaef2fb2d 100644 --- a/servers/rendering/renderer_rd/shader_rd.cpp +++ b/servers/rendering/renderer_rd/shader_rd.cpp @@ -437,7 +437,7 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) { f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, true), FileAccess::READ); } - if (f.is_null()) { + if (f.is_null() && shader_cache_res_dir_valid) { f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, false), FileAccess::READ); } @@ -539,8 +539,10 @@ void ShaderRD::_compile_version_start(Version *p_version, int p_group) { p_version->dirty = false; #if ENABLE_SHADER_CACHE - if (_load_from_cache(p_version, p_group)) { - return; + if (shader_cache_user_dir_valid || shader_cache_res_dir_valid) { + if (_load_from_cache(p_version, p_group)) { + return; + } } #endif @@ -823,6 +825,7 @@ void ShaderRD::initialize(const Vector &p_variant_defines, const String void ShaderRD::_initialize_cache() { shader_cache_user_dir_valid = !shader_cache_user_dir.is_empty(); + shader_cache_res_dir_valid = !shader_cache_res_dir.is_empty(); if (!shader_cache_user_dir_valid) { return; } diff --git a/servers/rendering/renderer_rd/shader_rd.h b/servers/rendering/renderer_rd/shader_rd.h index 2a38e27886a..ae2b0eb8afd 100644 --- a/servers/rendering/renderer_rd/shader_rd.h +++ b/servers/rendering/renderer_rd/shader_rd.h @@ -142,6 +142,7 @@ private: static bool shader_cache_save_compressed_zstd; static bool shader_cache_save_debug; bool shader_cache_user_dir_valid = false; + bool shader_cache_res_dir_valid = false; enum StageType { STAGE_TYPE_VERTEX,