Fix SSAO not working in gl_levelmesh

This commit is contained in:
Magnus Norddahl 2024-09-04 02:26:46 +02:00
commit db5f47d14f
3 changed files with 7 additions and 6 deletions

View file

@ -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];
}

View file

@ -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++)

View file

@ -898,7 +898,13 @@ void VkRenderState::GetQueryResults(int queryStart, int queryCount, TArray<bool>
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 = {};