Avoid stepping further into VkShaderManager::Get unless the shader has not been compiled

This commit is contained in:
Magnus Norddahl 2023-04-06 19:48:28 +02:00 committed by Christoph Oelckers
parent f11318ff99
commit 162ebe0f18

View file

@ -50,8 +50,9 @@ VkShaderProgram* VkShaderManager::Get(const VkShaderKey& k, EPassType passType)
VkShaderKey key = k;
key.GBufferPass = passType;
auto& program = programs[key];
if (!program.frag)
{
if (program.frag)
return &program;
const char* mainvp = "shaders/scene/vert_main.glsl";
const char* mainfp = "shaders/scene/frag_main.glsl";
@ -119,7 +120,7 @@ VkShaderProgram* VkShaderManager::Get(const VkShaderKey& k, EPassType passType)
}
else
{
const auto& desc = usershaders[key.EffectState];
const auto& desc = usershaders[key.EffectState - FIRST_USER_SHADER];
const FString& name = ExtractFileBase(desc.shader);
FString defines = defaultshaders[desc.shaderType].Defines + desc.defines;
@ -127,7 +128,6 @@ VkShaderProgram* VkShaderManager::Get(const VkShaderKey& k, EPassType passType)
program.frag = LoadFragShader(name, mainfp, desc.shader, defaultshaders[desc.shaderType].mateffect_lump, defaultshaders[desc.shaderType].lightmodel_lump, defines, key);
}
}
}
return &program;
}