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

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:

Low res 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.

High res scale

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

Resolution

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.

Overall quality

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

Low

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 settings
  • Low: r.Shadow.MaxResolution 1024
  • High: r.Shadow.MaxResolution 2048
  • Ultra: r.Shadow.MaxResolution 4096

Shadow settings

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.

AA particles

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

AA settings

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

Postprocess settings

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