NVIDIA GameWorks Integration

FWIW I randomly had happen in an editor session as well, and I figured out it was caused by the specular filtering by playing with the post process settings. Can’t explain why it wasn’t happening in the 4.7 build, or why it only seemed to be happening to me, but disabling specular filtering in the post process settings avoids the problem for me. It’s on by default, which seems unnecessary when specular jittering is off by default.

You’re looking for DoScreenSpaceReflections in ScreenSpaceReflections.cpp. If VXGI specular is enabled, then it just returns false. it would be better if you could enable both without changing the source code, but the VXGI branch defaults should probably change SSR to default to disabled.

If you enable VXGI+SSR, you probably also want to change ReflectionEnvironmentShaders.usf so it blends SSR with the VXGI specular.



// NVCHANGE_BEGIN: Add VXGI
#if APPLY_VXGI
	SpecularLighting.rgb = ScreenSpaceData.VxgiSpecular.rgb;
#endif
// NVCHANGE_END: Add VXGI

#if APPLY_SSR
	float4 SSR = Texture2DSample( ScreenSpaceReflectionsTexture, ScreenSpaceReflectionsSampler, UV );
	SpecularLighting.rgb = SpecularLighting.rgb * (1 - SSR.a) + SSR.rgb;
#endif


You probably also want to lower the roughness that SSR will be done for so it only uses it for smooth surfaces. For me, SSR+VXGI fixes more artifacts than it adds:

output_MY1BXG.gif

It’s probably possible to fix SSR artifacts like the false reflection underneath the sphere by making it more conservative about what it considers a hit, since VXGI can fill in for situations where SSR doesn’t have enough information.