diff --git a/src/common/rendering/hwrenderer/data/hw_meshbuilder.cpp b/src/common/rendering/hwrenderer/data/hw_meshbuilder.cpp index d36f33c5f..a3cdcc74e 100644 --- a/src/common/rendering/hwrenderer/data/hw_meshbuilder.cpp +++ b/src/common/rendering/hwrenderer/data/hw_meshbuilder.cpp @@ -73,8 +73,6 @@ void MeshBuilder::Apply() state.material = mMaterial; state.textureMatrix = mTextureMatrix; - state.surfaceUniforms.uVertexNormal = FVector4(0.0f, 0.0f, 0.0f, 0.0f); // Grr, this should be part of the vertex!! - mDrawLists = &mSortedLists[state]; } diff --git a/src/common/rendering/vulkan/vk_renderdevice.cpp b/src/common/rendering/vulkan/vk_renderdevice.cpp index 9898b2a9b..3303c78b6 100644 --- a/src/common/rendering/vulkan/vk_renderdevice.cpp +++ b/src/common/rendering/vulkan/vk_renderdevice.cpp @@ -739,10 +739,6 @@ int VulkanRenderDevice::GetLevelMeshPipelineID(const MeshApplyData& applyData, c pipelineKey.ShaderKey.LightMode = 1; // Software } - pipelineKey.ShaderKey.UseShadowmap = gl_light_shadows == 1; - pipelineKey.ShaderKey.UseRaytrace = gl_light_shadows == 2; - - pipelineKey.ShaderKey.GBufferPass = false; pipelineKey.ShaderKey.UseLevelMesh = true; for (unsigned int i = 0, count = levelMeshPipelineKeys.Size(); i < count; i++) diff --git a/src/common/rendering/vulkan/vk_renderstate.cpp b/src/common/rendering/vulkan/vk_renderstate.cpp index f5bcfbc64..478036583 100644 --- a/src/common/rendering/vulkan/vk_renderstate.cpp +++ b/src/common/rendering/vulkan/vk_renderstate.cpp @@ -898,7 +898,13 @@ void VkRenderState::GetQueryResults(int queryStart, int queryCount, TArray void VkRenderState::ApplyLevelMeshPipeline(VulkanCommandBuffer* cmdbuffer, VkPipelineKey pipelineKey, bool noFragmentShader) { + // Global state that don't require rebuilding the mesh pipelineKey.ShaderKey.NoFragmentShader = noFragmentShader; + pipelineKey.ShaderKey.UseShadowmap = gl_light_shadows == 1; + pipelineKey.ShaderKey.UseRaytrace = gl_light_shadows == 2; + pipelineKey.ShaderKey.GBufferPass = mRenderTarget.DrawBuffers > 1; + + // State overridden by the renderstate drawing the mesh pipelineKey.DepthTest = mDepthTest; pipelineKey.DepthWrite = mDepthTest && mDepthWrite; pipelineKey.DepthClamp = mDepthClamp; @@ -909,6 +915,7 @@ void VkRenderState::ApplyLevelMeshPipeline(VulkanCommandBuffer* cmdbuffer, VkPip pipelineKey.CullMode = mCullMode; if (!mTextureEnabled) pipelineKey.ShaderKey.EffectState = SHADER_NoTexture; + mPipelineKey = pipelineKey; PushConstants pushConstants = {};