-
Notifications
You must be signed in to change notification settings - Fork 72
Open
Description
I just found out that this is old... but I came here to share a fix for SSR compositing.
At least in Unity 2019+, SSR is barely visible and the effect is unusable.
REPLACE the combine pass code in SSRPass.cginc (use search to find the file) with the following code.
////////////////////////////////-----CombinePass-----------------------------------------------------------------------------
half4 CombineReflectionColor(PixelInput i) : SV_Target {
half2 uv = i.uv.xy;
half4 WorldNormal = tex2D(_CameraGBufferTexture2, uv) * 2 - 1;
half4 SpecularColor = tex2D(_CameraGBufferTexture1, uv);
half Roughness = clamp(1 - SpecularColor.a, 0.02, 1);
half SceneDepth = tex2D(_CameraDepthTexture, uv);
half3 ScreenPos = GetScreenSpacePos(uv, SceneDepth);
half3 WorldPos = GetWorldSpacePos(ScreenPos, _SSR_InverseViewProjectionMatrix);
half3 ViewDir = GetViewDir(WorldPos, _WorldSpaceCameraPos);
half NoV = saturate(dot(WorldNormal, -ViewDir));
half3 EnergyCompensation;
half4 PreintegratedGF = half4(PreintegratedDGF_LUT(_SSR_PreintegratedGF_LUT, EnergyCompensation, SpecularColor.rgb, Roughness, NoV).rgb, 1);
half ReflectionOcclusion = saturate( tex2D(_SSAO_GTOTexture2SSR_RT, uv).g );
//ReflectionOcclusion = ReflectionOcclusion == 0.5 ? 1 : ReflectionOcclusion;
//half ReflectionOcclusion = 1;
half4 SceneColor = tex2Dlod(_SSR_SceneColor_RT, half4(uv, 0, 0));
half4 CubemapColor = tex2D(_CameraReflectionsTexture, uv)/* * ReflectionOcclusion*/;
half4 SceneColorMinusRefl = half4(max(0, SceneColor.rgb - CubemapColor.rgb), SceneColor.a);
half4 SSRColor = tex2D(_SSR_TemporalCurr_RT, uv);
half SSRMask = Square(SSRColor.a);
return lerp(SceneColor, SceneColorMinusRefl + SSRColor * PreintegratedGF, SSRMask);
//half4 ReflectionColor = (CubemapColor * (1 - SSRMask)) + (SSRColor * PreintegratedGF * SSRMask * ReflectionOcclusion);
//return SceneColor + ReflectionColor;
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels