This page covers:
- The function of each Graphics setting
- Some best practices for using Graphics settings
- Technical reference for each Quality setting
Resolution
Graphics > Resolution
Resolution scale
The Resolution scale slider controls the internal resolution that Keysight renders at, before being scaled to the final window size. As (*)pixel cost is tied to GPU performance cost, lowering Resolution scale may improve performance at the cost of Keysight looking more "blurry". The following demonstrates using a 50
value for Resolution scale:
Increasing Resolution scale beyond 100
has the opposite effect: improving visual quality at the cost of increased performance cost. This is often called "downsampling" or "super-sampling", as a larger image is first rendered before being scaled back down to the target size.
Warning
Resolution scale is not applied while using Mask Mode, as masking requires pixels to remain completely unchanged by resampling. Resolution scale is forced to 100
at all times.
Window size and mode
Keysight displays all fullscreen-supported resolutions from your monitors in the dropdown menu. However, any resolution can be specified using the Manual entry fields. After resolution has been changed, the Apply button must be clicked to apply the given options.
Windowed / Borderless / Fullscreen are the available window modes for Keysight.
- Windowed: Keysight uses the given resolution and acts as a standard window, with a top-bar allowing it to be moved around. If the maximum monitor height is used as the Keysight window height, this top-bar becomes hidden (at least on Windows).
Warning
Keysight cannot render larger in height or width than your monitor supports. Unreal Engine itself blocks the Keysight window from rendering to, for example, 4096x4096 on a 1920x1080 monitor.
- Borderless: Keysight is technically still a window, but it automatically sizes up to the current monitor's resolution.
- Fullscreen: Keysight is a fullscreen application, and needs to be focused in order to continue rendering. This is almost always less desirable than Borderless mode.
Note
Only use the resolution you actually require! Especially in live-streaming environments, it is important to consider the size of Keysight in your scene and only render the window size you actually need.
For example, if streaming at 1920x1080 but using a 2560x1440 monitor and using default Keysight settings: the Borderless window mode will set Keysight to 2560x1440. This leads to some resampling in OBS, as well as GPU performance being wasted on rendering pixels that are not needed.
Moving Keysight to another monitor
To move Keysight between monitors while in Borderless or Fullscreen mode:
- Set Keysight to be Windowed, and at some lower resolution than your current monitor's maximum resolution. For example, 1280x720 is usually perfect for this
- Drag the Keysight window to your other monitor
- Set Keysight back to Borderless or Fullscreen mode
Unfortunately, you may need to do this every time Keysight is launched. This is a limitation of Unreal Engine's default behaviour. However, alt + enter
is a useful hotkey to toggle between Windowed and Borderless modes.
Framerate
Graphics > Framerate
Maximum framerate
Maximum framerate sets a hard limit on how fast Keysight is allowed to deliver frames. This limit overrides V-sync framerate limiting.
Warning
It is highly recommended to keep Maximum framerate set to Unlimited
and instead use V-sync to restrict the framerate. Due to Maximum framerate simply stalling the next frame if frames are rendering too quickly, it is far worse at delivering perceptual smoothness. In other words: Maximum framerate 60
is vastly inferior to simply having a 60hz monitor, and using Unlimited
Maximum framerate with V-sync enabled.
Note
Maximum framerate is precisely that: a maximum. If you are running at 30fps due to a performance bottleneck, setting Maximum framerate to 60
will do absolutely nothing.
V-sync
V-sync is a very large and complicated topic,➚ but the short version relevant to Keysight: while V-sync is enabled, Keysight will not render faster than the monitor's refresh rate. In this way, V-sync acts as a framerate limiter similar to Maximum framerate, but delivers much better results (especially when being captured in OBS).
Note
If you have a monitor with a non-clean multiple of 60 for the maximum refresh rate (for example, a 144hz gaming monitor. Or 75hz, or 165hz, or 90hz, etc), V-sync may not give the best capture smoothness in OBS. In those situations, consider changing your monitor refresh rate to a multiple of 60 (120hz is best), or disable V-sync and use a Maximum framerate of 120
instead (having headroom in the max framerate benefits smoothness, if your computer can handle smooth delivery of 120fps).
If both Maximum framerate is set to Unlimited
and V-sync is disabled, Keysight will render as fast as it possibly can. This is useless outside of benchmarking though!
Sync interval
Sync interval is a ratio of which monitor refresh cycles Keysight is synchronising to. At 1:1
, Keysight targets every refresh cycle of the monitor. At 1:2
, Keysight targets every second refresh cycle, functionally halving the maximum framerate. This allows some level of max framerate customisation while still getting the improved smoothness from V-sync as opposed to using Maximum framerate.
Frame-smoothing
Keysight customises some Unreal Engine render pipeline variables in order to achieve the best possible smoothness. This toggle allows those optimisations to be disabled, in the event that it makes Keysight run slower or less smooth on some systems. This has never been observed to be the case though, so it is not recommended to enable this toggle.
CVars while disabled:
RHI.MaximumFrameLatency 1
rhi.SyncSlackMS 0
CVars while enabled:
RHI.MaximumFrameLatency 0
rhi.SyncSlackMS 10
FPS counter
This option can be toggled at any time with the C
key. While enabled, Keysight displays the current frame's timing broken into a few different categories (using the stat unit
and stat FPS
console commands in Unreal Engine).
- FPS: momentary frames-per-second (1/frametime)
-
Frametime: time taken to render current frame
-
Frame: overall frametime, same as above
- Game: how long CPU calculations took during this frame
- Draw: how long it took to provide the GPU with instructions from the CPU
- GPU: how long the GPU took to render the frame
Quality
Graphics > Quality
Overall
Clicking any of these options will automatically adjust Additional settings quality levels accordingly. However, all the performance cost of running Keysight comes from the preset currently being used, and so adjusting Overall quality will also switch between different quality levels for all of the (*)default presets.
Warning
Preset quality switching with Overall quality is performed on a Preset name basis. This means if you heavily edit the "Quicksilver" default preset but do not rename it, clicking any Overall quality button will immediately overwrite your hard work with that quality setting's stock preset version!
However, this can be undone using Ctrl + Z
, so don't panic if it happens.
Everything is built around Ultra
in Keysight, as it is a relatively easy 3D application to run. The High
and Low
presets adjust the following on each default preset on top of the Additional settings adjustments.
High
- Note lights are disabled, and Note objects instead use self-emissive materials to be visible
- Impact lights have shadow casting disabled and a smaller influence radius
- Number of Particle systems are reduced, especially intensive ones such as "Steam"
Low
- Note lights are disabled, and Note objects instead use self-emissive materials to be visible
- Impact lights are completely disabled
- Particles are completely disabled
- Materials are often simplified to avoid using
Advanced
mode - Backdrop is often disabled to just show a flat Void colour
Shadow
Only affects shadows caused by Impact lights with shadow-casting enabled. The move between High
and Ultra
has a significant performance impact for almost no visual quality improvement, hence High
being the default even in the Ultra
overall graphics preset.
Off: r.Shadow.MaxResolution 512
, but all shadows disabled regardless of settingsLow: r.Shadow.MaxResolution 1024
High: r.Shadow.MaxResolution 2048
Ultra: r.Shadow.MaxResolution 4096
Anti-aliasing
This is Off
by default, as the stock Visual layout's perfectly vertical notes do not have angled edges that display lots of aliasing➚ and the FXAA anti-aliasing technique used tends to blur particles in undesirable ways.
If using any sort of non-stock Visual layout, it is recommended to switch to Ultra
Anti-aliasing, as the performance cost is almost zero for any of the settings, and it will massively improve the look of angled keys and notes.
Off: r.PostProcessAAQuality 0
Low: r.PostProcessAAQuality 2
High: r.PostProcessAAQuality 4
Ultra: r.PostProcessAAQuality 6
Note
This example appears to show Low
as being the "most smooth", but taken as a whole, it is too blurry and some objects bypass aliasing altogether to be weirdly sharp. Don't use it, unless you really have to max out performance while keeping Anti-aliasing enabled for some reason.
Info
It is possible to use System > Enter console command here with r.DefaultFeature.AntiAliasing 2
to enable T-AA rather than FXAA, if you want to see how T-AA is wildly unsuitable for certain applications!
Post-processing
This primarily affects Bloom quality, with Low
often reducing the overall scene brightness due to functionally reducing the amount of wide-area bloom.
Low: sg.PostProcessQuality 1
High: sg.PostProcessQuality 2
Ultra: sg.PostProcessQuality 3
Rendering
This primarily adjusts the scene colour format between modes 3
and 4
through sg.EffectsQuality
, and has next to no impact on scene appearance (or performance) and is simply included for completeness.
Note
I'll be honest, I have no idea what it does, and it doesn't seem to have much if any performance impact. As best I could tell in the past, when set to Low
, some particle systems with a lot of particles that are large, almost completely transparent but also set to a very high brightness will render differently (and less bright) to when Rendering quality is set to High
. In testing for this Wiki entry, I couldn't even force it to happen easily though, so I don't have a comparison shot.
Low: sg.EffectsQuality 0
High: sg.EffectsQuality 3