diff --git a/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp b/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp index 8a731f0c3..92fecd28a 100644 --- a/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp +++ b/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp @@ -244,7 +244,7 @@ std::unique_ptr VkRenderPassSetup::CreatePipeline(const VkPipeli GraphicsPipelineBuilder builder; builder.Cache(fb->GetRenderPassManager()->GetCache()); - VkShaderProgram *program = fb->GetShaderManager()->Get(key.ShaderKey, PassKey.DrawBuffers > 1 ? GBUFFER_PASS : NORMAL_PASS); + VkShaderProgram *program = fb->GetShaderManager()->Get(key.ShaderKey); builder.AddVertexShader(program->vert.get()); builder.AddFragmentShader(program->frag.get()); diff --git a/src/common/rendering/vulkan/shaders/vk_shader.cpp b/src/common/rendering/vulkan/shaders/vk_shader.cpp index 15dad9ac7..94a986a61 100644 --- a/src/common/rendering/vulkan/shaders/vk_shader.cpp +++ b/src/common/rendering/vulkan/shaders/vk_shader.cpp @@ -31,7 +31,6 @@ VkShaderManager::VkShaderManager(VulkanRenderDevice* fb) : fb(fb) { - CompileNextShader(); } VkShaderManager::~VkShaderManager() @@ -44,10 +43,8 @@ void VkShaderManager::Deinit() RemoveVkPPShader(PPShaders.back()); } -VkShaderProgram* VkShaderManager::Get(const VkShaderKey& k, EPassType passType) +VkShaderProgram* VkShaderManager::Get(const VkShaderKey& key) { - VkShaderKey key = k; - key.GBufferPass = passType; auto& program = programs[key]; if (program.frag) return &program; diff --git a/src/common/rendering/vulkan/shaders/vk_shader.h b/src/common/rendering/vulkan/shaders/vk_shader.h index 5f3b9ddf1..849c6e3cc 100644 --- a/src/common/rendering/vulkan/shaders/vk_shader.h +++ b/src/common/rendering/vulkan/shaders/vk_shader.h @@ -112,7 +112,7 @@ public: void Deinit(); - VkShaderProgram* Get(const VkShaderKey& key, EPassType passType); + VkShaderProgram* Get(const VkShaderKey& key); bool CompileNextShader() { return true; } diff --git a/src/common/rendering/vulkan/vk_renderstate.cpp b/src/common/rendering/vulkan/vk_renderstate.cpp index c67bebc62..77a6f48a7 100644 --- a/src/common/rendering/vulkan/vk_renderstate.cpp +++ b/src/common/rendering/vulkan/vk_renderstate.cpp @@ -296,6 +296,8 @@ void VkRenderState::ApplyRenderPass(int dt) pipelineKey.ShaderKey.UseShadowmap = gl_light_shadowmap; pipelineKey.ShaderKey.UseRaytrace = gl_light_raytrace; + pipelineKey.ShaderKey.GBufferPass = mRenderTarget.DrawBuffers > 1; + // Is this the one we already have? bool inRenderPass = mCommandBuffer; bool changingPipeline = (!inRenderPass) || (pipelineKey != mPipelineKey);