Are there not in game settings to reduce the resolution of RT reflections?
You can reduce them with Unreal Unlocker.
Did a few tests on 3090 (All max, Native res, DLSS Off).
4K RT Off for all effects - 94 FPS
4K RT Reflections On - 35 FPS,
10,41 ms for tracing rays
4K RT Reflections On Materials shading Off - 45 FPS,
6.35 ms for shading in hit points
4K RT AO On - 69 FPS -
2,67 ms for AO,
BVH building -
1,175 ms
4K RT AO On, Reflections On - 32 FPS
The most obvious optimization would be reducing the number of rays by 4 times, this can be adjusted with the
r.RayTracing.Reflections.ScreenPercentage in in-game console (need to unlock it first via the Unreal Unlocker).
With
r.RayTracing.Reflections.ScreenPercentage set to 50,
performance increases from 30 FPS to 48 FPS @ 4K, but reflections become too noisy on rough surfaces, so quality sucks, it's hard to blame devs for selecting full res.
Surprisingly, that's one of a few games that I tested, which benifits a lot from the hybrid RT/SSR reflections, so enbling them with the
r.raytracing.reflections.hybrid 1 variable
improves perf from 48 FPS to 52 FPS in the same scene.
These Hybrid reflections mess up quality in closed interior scenes, but sometimes they improve quality in open scenes, so I'd say they are neutral for image quality in general, but introduce some artefacting in the closed interior scenes.
The next optimization is the roughness threshold, as Alex said, this threshold is set on 0.45 by default in this game, so rays are cast for all surfaces that pass this threshold in a shaded pixel.
Surfaces with high roughness add the most of noise, so decreasing this threshold helps with noise.
Setting the roughness threshold to 0.1 with the r.RayTracing.Reflections.MaxRoughness command fixes the issues with lots of noise
when r.RayTracing.Reflections.ScreenPercentage is set to 50, but graphics quality degrades due to decreased amount of reflections in scene (but still way better in comparison with SSR).
The roughness threshold opt futher
increases perf from 52 to 56 FPS in 4K.
To improve image quality ever so slightly, one can use the
r.RayTracing.Reflections.MaxRayDistance variable, when set to 1 000 000, it adds a little bit of additional shading from distant objects at mostly negligible cost of 0-1 FPS in scenes that I tested (this setting is likely highly scene dependent).
And most impactful optimization is the
DLSS Quality mode, it doesn't degrade image quality in comparison with Native while
frame rate grows from 56 to 82 FPS when other opts are enabled (you have to reapply r.RayTracing.Reflections.ScreenPercentage 50 after setting DLSS). At this point, perf becomes limited by my old 9900K CPU since GPU itilization drops from 99% to 91 - 93%. Frame rate is a bit lower in comparison with RT OFF's 86 FPS in the same scene, but image quality is still way better than RT Off and perf is mostly the same.
My settings of choice are default r.RayTracing.Reflections.ScreenPercentage with DLSS Quality
, r.raytracing.reflections.hybrid 1, default 0.45 roughness threshold and r.RayTracing.Reflections.MaxRayDistance set to 1 000 000.
With such settings, perf is 60 FPS @ 4K (vs 50 FPS with default settings) and image quality is not affected if not better than default, so +10 FPS and better image quality in many cases in comparison with RT Reflections On and DLSS Quality at 4K, when compared to Native 4K, there is 2x difference without quality degradation.
RT variables can be seen here:
https://developer.nvidia.com/blog/introduction-ray-tracing-unreal-engine-422/
Screens with different options are here:
https://drive.google.com/drive/folders/11NAghOPtt6x206GezLiagorzRn49VSej?usp=sharing