From 8aaa5710df0115e093f7c6d86c603be4f699ac39 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 12 Dec 2023 16:02:53 +0100 Subject: [PATCH] Fix dark outline around Screen Space Reflections alpha blending area --- Content/Shaders/SSR.flax | 4 ++-- Source/Shaders/SSR.shader | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Content/Shaders/SSR.flax b/Content/Shaders/SSR.flax index a422ce5c0..d7cfdca1a 100644 --- a/Content/Shaders/SSR.flax +++ b/Content/Shaders/SSR.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0317fb2ca888fee6d32c7754d6f83e2f1e58924725a8221c5131e974501168ac -size 10912 +oid sha256:d3c3ceba0aa0b79f5619147a0ec8ac30d87c142322bd256dc235b7b4f890fc94 +size 11142 diff --git a/Source/Shaders/SSR.shader b/Source/Shaders/SSR.shader index 999dd93a3..91122f2ee 100644 --- a/Source/Shaders/SSR.shader +++ b/Source/Shaders/SSR.shader @@ -106,17 +106,20 @@ float4 PS_RayTracePass(Quad_VS2PS input) : SV_Target0 // SRV 7-8 Global SDF // SRV 9-13 Global Surface Atlas + // Base layer color with reflections from probes but empty alpha so SSR blur will have valid bacground values to smooth with + float4 base = float4(Texture0.SampleLevel(SamplerLinearClamp, input.TexCoord, 0).rgb, 0); + // Sample GBuffer GBufferData gBufferData = GetGBufferData(); GBufferSample gBuffer = SampleGBuffer(gBufferData, input.TexCoord); // Reject invalid pixels if (gBuffer.ShadingModel == SHADING_MODEL_UNLIT || gBuffer.Roughness > RoughnessFade || gBuffer.ViewPos.z > FadeOutDistance) - return 0; + return base; // Trace depth buffer to find intersection float3 screenHit = TraceScreenSpaceReflection(input.TexCoord, gBuffer, Depth, gBufferData.ViewPos, ViewMatrix, ViewProjectionMatrix, RayTraceStep, MaxTraceSamples, TemporalEffect, TemporalTime, WorldAntiSelfOcclusionBias, BRDFBias, FadeOutDistance, RoughnessFade, EdgeFadeFactor); - float4 result = 0; + float4 result = base; if (screenHit.z > 0) { float3 viewVector = normalize(gBufferData.ViewPos - gBuffer.WorldPos);