I was asked, in the "Control PC performance thread", to do a write-up on how to use RTSS's Scanline Sync function. After writing a 7-page document, I figured that it would better serve the community as its own separate thread, since it can be applied to all games, and not just Control.
Special thanks to Unwinder, developer of RTSS (Rivatuner Statistics Server), and Mark Rejhon (mdrejhon), founder of Blur Busters and the one who suggested the implementation of Scanline Sync. Mark's thread and guides on the subject can be found here and here. I definitely recommend checking them out, as he is the absolute authority on all things related to motion blur and input lag.
This will be a very concise and non-technical explanation, as I am by no means an expert on the subject (for that, you need Chief Blur Buster). Still, I'll try to be as clear and didactic as possible.
Table of contents:
1. Introduction
1. Introduction
1.1 What is Scanline Sync and what is it for?
Scanline Sync is a software-based solution to reducing screen tearing, while resulting in lower input lag than regular Vsync. Because of the way motion is perceived by the human eyes, it also helps eliminate erratic stutters on non-variable refresh rate (VRR) panels - that is, if your GPU can maintain frame rates that are constantly above your display's actual refresh rate (something that is of utmost importance, as you will get frame time spikes/stutters otherwise).
Basically, it's a platform-agnostic alternative to Nvidia's G-Sync or AMD's FreeSync, with the difference being that those adaptive sync technologies work with fluctuating frame rates, since they also require VRR panels, which sync the refresh rate to the rendering of the frames.
1.2 When is Scanline Sync most useful?
Scanline Sync works best when the GPU load is low.
This means that less powerful GPUs or more demanding titles won't benefit from Scanline Sync. Its main requirement is for games to be constantly running at frame rates higher than your display's refresh rate. If your TV or monitor is 60Hz, games need to run at 60fps or more.
Even occasional dips in frame rate can cause frame time spikes (perceived as stuttering), when using Scanline Sync. Ideally, your GPU should be able to match frame rates to the refresh rate 99.9% of the time. Stutters caused bv drops to the 90% to 95% range can be alleviated by using RTSS's Scanline Sync in conjunction with Nvidia's Fast Sync or AMD's Enhanced Sync (see 4.2 Fast Sync and Enhanced Sync).
1.3 What do I need to use Scanline Sync?
In order to use Scanline Sync, you will need only one thing: RTSS (Rivatuner Statistics Server). It works with any GPU (given that it's capable of maintaining high frame rates, as previously mentioned) and display, on any game, regardless of its graphics API (DX11, DX12, Vulkan, etc.).
1.4 What is RTSS (Rivatuner Statistics Server)?
RTSS (Rivatuner Statistics Server) is a frame rate monitoring and limiting software. It's included with all versions of MSI's Afterburner overclocking utility, and although it's also available as an individual download, I recommend installing both programs, since RTSS relies on AB for the on-screen display (OSD), even if you don't use any of the latter's other functions.
Download RTSS's latest version (7.2.3 Beta 3 - Build 20636)
2. Setting up
2.1 Basic configuration (optional)
Even though this step isn't required for Scanline Sync, I'd still recommend to do the following for all PC games:
2.1.1 Disable fullscreen optimizations
Notes:
There was an option to globally disable fullscreen optimizations, as confirmed by a Microsoft employee here, but it has been unavailable since the Windows 10 Fall Creators Update (1709).
Redditor u/Skymirrh made an app to "bulk disable" fullscreen optimizations. In that thread, the same MSFT employee said that they were hoping to make that tool obsolete at some point. That was almost two years ago.
2.1.2 Set "Power management mode" to "Prefer maximum performance" (Nvidia only)
Notes:
I prefer to do that on a case-by-case basis, instead of setting it globally. My global power management mode is set to "Optimal power", so that the GPU doesn't run at full throttle 100% of the time.
Additionally, I also set the new "Low Latency Mode" to "On". That setting was formerly known as "Maximum pre-rendered frames", and "On" corresponds to "1". You can also try turning it off (which would then correspond to "3"), but I strongly advise against setting it to "Ultra" ("0"), as you'll be eliminating the number of pre-rendered frames that can be cached entirely, and that can cause even more sutters.
Lastly, for games that run in DX11 or below, I also tend to use Nvidia's Fast Sync in conjunction with RTSS's Scanline Sync, but I'll address that option at the end of this guide.
Edit: I've only owned Nvidia GPUs and don't know if there's a similar setting for AMD cards. However, as I stated, this step isn't required for Scanline Sync, and I only included as part of my personal recommended optimizations.
2.2 Configuring the OSD (on-screen display)
Follow this guide to configure MSI Afterburner and RTSS to display the appropriate information on the screen. Make sure that both "Framerate" and "Frametime" are selected under "Monitoring", with the checkbox "Show in On-Screen Display" also selected (marked).
I recommend having "Framerate" display as "text" and "Frametime" display as "text, graph" for better visualization. That way, it's easier to notice any frame pacing issues (ideally, your frametime line should remain flat, meaning that frame times are constant - less stuttering).
Also, on RTSS, confirm that "Show own statistics" is set to "On" (thanks, Shocchiz). If you're having issues with the OSD, causing games to crash, you can try changing the "On-Screen Display rendering mode" from "Raster 3D" to "Vector 2D" (thanks, Jazzem).
2.3 Editing RTSS's Global configuration file
You need to add "SyncHotkeys=1" to your RTSS's global configuration file to enable shortcuts, so that you can move the tear line up and down in-game using keyboard shortcuts.
This is what the "[Framerate]" part of your Global CFG file should look like:
2.4 Adding individual game profiles
On RTSS, click on the green button labeled "Add", located in the bottom left corner of the window, then navigate to the game's main folder and select its EXE.
RTSS's default settings (and functions) should work for most games, but for Scanline Sync, you'll need to enable a few specific settings in the individual profiles of each game.
Using Notepad, open the game's CFG file, located inside RTSS's "Profiles" folder. Add the necessary information so that the settings under "[Framerate]" look exactly like this:
Additionaly, you have to include "SyncInfo=1" to the "[OSD]" section. You can also do it globally, as with the previous step, if you don't mind displaying unecessary information when not using Scanline Sync (thanks, Shocchiz).
3. Using Scanline Sync
After all prepping is done, it's time to finally use Scanline Sync.
As I said earlier, the purpose of Scanline Sync is to achieve the same results as other adaptive sync solutions (no visible screen tearing and minimal stuttering), while adding no input lag. The way it does that is by limiting the game's frame rate to match your display's refresh rate.
The "catch" is that it doesn't completely eliminate tearing - there will still be a tear line or two, depending on your settings. However, with RTSS, you'll be able to move those tear lines away from the screen (using the previously enabled keyboard shortcuts), making them invisible.
The first step is to calibrate the tear line, so that it's outside of the screen's visible area.
3.1 Calibrating the tear line
3.2 Editing the game's profile to enable Scanline Sync
Example:
On 3840 x 2160 resolution (4K), the Sync total is 2250. In my experience, for most games running in 4K, the tear line disappears with Sync line 0 set to 2110. 2250 - 2110 = 140. Therefore, you type in "-140" in RTSS's box dedicated to Scanline sync, or simply edit the game's CFG file to include "SyncScanline0=-140".
Important: you must use negative numbers. Chief Blur Buster explains why here.
4. Extra tips
4.1 SyncFlush (0, 1 or 2)
Flushing is used to make Scanline Sync more accurate. "SyncFlush=1" is the recommended setting for most games. "0" will cause the tear line to become unstable and jittery. "2" can be selected when GPU usage is incredibly low (~30%) - recommended for older games.
4.2 Fast Sync and Enhanced Sync
In scenarios where the frame rate can't be maintained above the refresh rate 100% of the time, with frame rate dipping to the 90%-95% range (54fps-57fps out of 60fps), Scanline Sync can be used in conjunction with Nvidia's Fast Sync or AMD's Enhanced Sync.
Important: Fast Sync only works with games using DirectX 11 and below (DX11, DX10, DX9). It does not support DirectX 12, OpenGL or Vulkan (source). Enhanced Sync works with games using DirectX 9, DirectX 10, DirectX 11, DirectX 12 and Vulkan. It does not support OpenGL (source).
For how to enable Fast Sync on Nvidia Control Panel, see 2.1.2 Set "Power management mode" to "Prefer maximum performance" and follow all the steps there, but instead of changing "Power management mode" during step #7, change "Vertical Sync" to "Fast".
4.3 Easier way to visualize tear lines (thanks, Ravio-li)
RTSS has a feature that allows you to enable a frame color indicator, making it easier to visualize the tear lines, during calibration. Here's how to do it:
4.4 Running games at double your display's refresh rate (thanks, Ravio-li)
I purposely left this out of my original write-up because I still haven't personally tested it, and I deemed it a bit too complicated for a beginner's tutorial. Per @Ravio-li's suggestion, I'll include the information here, as an extra tip, quoting him and Chief Blur Buster directly:
Special thanks to Unwinder, developer of RTSS (Rivatuner Statistics Server), and Mark Rejhon (mdrejhon), founder of Blur Busters and the one who suggested the implementation of Scanline Sync. Mark's thread and guides on the subject can be found here and here. I definitely recommend checking them out, as he is the absolute authority on all things related to motion blur and input lag.
This will be a very concise and non-technical explanation, as I am by no means an expert on the subject (for that, you need Chief Blur Buster). Still, I'll try to be as clear and didactic as possible.
Table of contents:
1. Introduction
1.1 What is Scanline Sync and what is it for?
1.2 When is Scanline Sync most useful?
1.3 What do I need to use Scanline Sync?
1.4 What is RTSS (Rivatuner Statistics Server)?
2. Setting up2.1 Basic configuration (optional)
2.1.1 Disable fullscreen optimizations
2.1.2 Set "Power management mode" to "Prefer maximum performance" (Nvidia only)
2.2 Configuring the OSD (on-screen display)
2.3 Editing RTSS's Global configuration file
2.4 Adding individual game profiles
3. Using Scanline Sync3.1 Calibrating the tear line
3.2 Editing the game's profile to enable Scanline Sync
4. Extra tips4.1 SyncFlush (0, 1 or 2)
4.2 Fast Sync and Enhanced Sync
4.3 Easier way to visualize tear lines
4.4 Running games at double your display's refresh rate
5. FAQ (see threadmark)5.1 I have a G-Sync/FreeSync-compatible monitor, should I use Scanline Sync?
5.2 Should I disable Vsync when using Scanline Sync?
5.3 Should I leave the frame rate uncapped when using Scanline Sync?
5.4 I tried moving the tear line away, but can't make it disappear.
1. Introduction
1.1 What is Scanline Sync and what is it for?
Scanline Sync is a software-based solution to reducing screen tearing, while resulting in lower input lag than regular Vsync. Because of the way motion is perceived by the human eyes, it also helps eliminate erratic stutters on non-variable refresh rate (VRR) panels - that is, if your GPU can maintain frame rates that are constantly above your display's actual refresh rate (something that is of utmost importance, as you will get frame time spikes/stutters otherwise).
Basically, it's a platform-agnostic alternative to Nvidia's G-Sync or AMD's FreeSync, with the difference being that those adaptive sync technologies work with fluctuating frame rates, since they also require VRR panels, which sync the refresh rate to the rendering of the frames.
1.2 When is Scanline Sync most useful?
Scanline Sync works best when the GPU load is low.
This means that less powerful GPUs or more demanding titles won't benefit from Scanline Sync. Its main requirement is for games to be constantly running at frame rates higher than your display's refresh rate. If your TV or monitor is 60Hz, games need to run at 60fps or more.
Even occasional dips in frame rate can cause frame time spikes (perceived as stuttering), when using Scanline Sync. Ideally, your GPU should be able to match frame rates to the refresh rate 99.9% of the time. Stutters caused bv drops to the 90% to 95% range can be alleviated by using RTSS's Scanline Sync in conjunction with Nvidia's Fast Sync or AMD's Enhanced Sync (see 4.2 Fast Sync and Enhanced Sync).
1.3 What do I need to use Scanline Sync?
In order to use Scanline Sync, you will need only one thing: RTSS (Rivatuner Statistics Server). It works with any GPU (given that it's capable of maintaining high frame rates, as previously mentioned) and display, on any game, regardless of its graphics API (DX11, DX12, Vulkan, etc.).
1.4 What is RTSS (Rivatuner Statistics Server)?
RTSS (Rivatuner Statistics Server) is a frame rate monitoring and limiting software. It's included with all versions of MSI's Afterburner overclocking utility, and although it's also available as an individual download, I recommend installing both programs, since RTSS relies on AB for the on-screen display (OSD), even if you don't use any of the latter's other functions.
Download RTSS's latest version (7.2.3 Beta 3 - Build 20636)
2. Setting up
2.1 Basic configuration (optional)
Even though this step isn't required for Scanline Sync, I'd still recommend to do the following for all PC games:
2.1.1 Disable fullscreen optimizations
- Right-click the game's EXE and select "Properties";
- In the "Compatibility" tab, select (mark) the checkbox labeled "Disable fullscreen optimizations";
- Additionally, click on the button labeled "Change high DPI settings" and make sure that the checkbox labeled "Override high DPI scaling behavior" is also selected (marked) and that scaling is set to be performed by "Application". Click on "OK";
- Click on "Apply", then "OK".
Notes:
There was an option to globally disable fullscreen optimizations, as confirmed by a Microsoft employee here, but it has been unavailable since the Windows 10 Fall Creators Update (1709).
Redditor u/Skymirrh made an app to "bulk disable" fullscreen optimizations. In that thread, the same MSFT employee said that they were hoping to make that tool obsolete at some point. That was almost two years ago.
2.1.2 Set "Power management mode" to "Prefer maximum performance" (Nvidia only)
- Open NVIDIA Control Panel (NVCP), by right-clicking on your desktop and selecting "NVIDIA Control Panel";
- On the left side menu, click on "Adjust image settings with preview";
- On the right side menu, check "Use the advanced 3D image settings", then click on "Apply" in the bottom right corner of the window;
- Click on "Take me there", right next to "Use the advanced 3D image settings", or click on "Manage 3D settings on the left side menu";
- Under "Manage 3D settings", click on "Program Settings", then "Add";
- Select the game's EXE in the "Recently used" list of programs (if it's not there, go to "Browse" and navigate to the game's folder);
- Make the following changes under "Specify the settings for this program" (Feature > Setting):
- Power management mode > Prefer maximum performance
- Click on "Apply" in the bottom right corner of the window to save your settings.
Notes:
I prefer to do that on a case-by-case basis, instead of setting it globally. My global power management mode is set to "Optimal power", so that the GPU doesn't run at full throttle 100% of the time.
Additionally, I also set the new "Low Latency Mode" to "On". That setting was formerly known as "Maximum pre-rendered frames", and "On" corresponds to "1". You can also try turning it off (which would then correspond to "3"), but I strongly advise against setting it to "Ultra" ("0"), as you'll be eliminating the number of pre-rendered frames that can be cached entirely, and that can cause even more sutters.
Lastly, for games that run in DX11 or below, I also tend to use Nvidia's Fast Sync in conjunction with RTSS's Scanline Sync, but I'll address that option at the end of this guide.
Edit: I've only owned Nvidia GPUs and don't know if there's a similar setting for AMD cards. However, as I stated, this step isn't required for Scanline Sync, and I only included as part of my personal recommended optimizations.
2.2 Configuring the OSD (on-screen display)
Follow this guide to configure MSI Afterburner and RTSS to display the appropriate information on the screen. Make sure that both "Framerate" and "Frametime" are selected under "Monitoring", with the checkbox "Show in On-Screen Display" also selected (marked).
I recommend having "Framerate" display as "text" and "Frametime" display as "text, graph" for better visualization. That way, it's easier to notice any frame pacing issues (ideally, your frametime line should remain flat, meaning that frame times are constant - less stuttering).
Also, on RTSS, confirm that "Show own statistics" is set to "On" (thanks, Shocchiz). If you're having issues with the OSD, causing games to crash, you can try changing the "On-Screen Display rendering mode" from "Raster 3D" to "Vector 2D" (thanks, Jazzem).
2.3 Editing RTSS's Global configuration file
You need to add "SyncHotkeys=1" to your RTSS's global configuration file to enable shortcuts, so that you can move the tear line up and down in-game using keyboard shortcuts.
- After installing RTSS, locate its "Profiles" folder (by default: "C:\Program Files (x86)\RivaTuner Statistics Server\Profiles");
- Right-click on the file named "Global", choose "Open with" and select Notepad;
- Under "[Framerate]", include the line "SyncHotkeys=1";
- Click on "File", then "Save" (or press Ctrl + S), before closing Notepad.
This is what the "[Framerate]" part of your Global CFG file should look like:
Code:
[Framerate]
Limit=0
LimitDenominator=1
SyncHotkeys=1
LimitTime=0
SyncScanline0=0
SyncScanline1=0
SyncPeriods=0
2.4 Adding individual game profiles
On RTSS, click on the green button labeled "Add", located in the bottom left corner of the window, then navigate to the game's main folder and select its EXE.
RTSS's default settings (and functions) should work for most games, but for Scanline Sync, you'll need to enable a few specific settings in the individual profiles of each game.
Using Notepad, open the game's CFG file, located inside RTSS's "Profiles" folder. Add the necessary information so that the settings under "[Framerate]" look exactly like this:
Code:
[Framerate]
Limit=0
LimitDenominator=1
LimitTime=0
SyncFlush=1
SyncScanline0=0
SyncScanline1=0
SyncPeriods=0
Additionaly, you have to include "SyncInfo=1" to the "[OSD]" section. You can also do it globally, as with the previous step, if you don't mind displaying unecessary information when not using Scanline Sync (thanks, Shocchiz).
3. Using Scanline Sync
After all prepping is done, it's time to finally use Scanline Sync.
As I said earlier, the purpose of Scanline Sync is to achieve the same results as other adaptive sync solutions (no visible screen tearing and minimal stuttering), while adding no input lag. The way it does that is by limiting the game's frame rate to match your display's refresh rate.
The "catch" is that it doesn't completely eliminate tearing - there will still be a tear line or two, depending on your settings. However, with RTSS, you'll be able to move those tear lines away from the screen (using the previously enabled keyboard shortcuts), making them invisible.
The first step is to calibrate the tear line, so that it's outside of the screen's visible area.
3.1 Calibrating the tear line
- Disable all forms of Vsync, both in-game and outside of it (on NVCP);
- Open MSI Afterburner and RTSS (RTSS should start automatically after opening AB);
- With RTSS running in the background, start the game;
- Strafe and/or move the camera around - you'll notice a single tear line, that may be relatively stable or more erratic/jittery, depending on the game;
- Hold Ctrl + Shift and use the up and down arrow keys to move the tear line up and down. The longer you press and hold the arrow keys, the faster the tear line will move;
- In the OSD, notice how the number related to "Sync line 0" changes as you move the tear line;
- Move the tear line and try to position it in such a way that it ends up outside of the visible area of your screen - or, at least, in the least obtrusive part (top or bottom);
- Mark down the number displayed after "Sync line 0" after the tear line is hidden - you'll use it to save the correct information to your game's profile on RTSS.
3.2 Editing the game's profile to enable Scanline Sync
- The number displayed after "Sync total", in the OSD, is related to the total number of "lines" your display has. It changes depending on your current resolution.
- To obtain the Scanline Sync number, you subtract the calibrated "Sync line 0" number from the "Sync total".
- You then add the resulting number as a negative index to RTSS (under "Scanline sync"), or directly to the game's CFG ("SyncScanline0=-XXX", where "XXX" is the resulting number).
Example:
On 3840 x 2160 resolution (4K), the Sync total is 2250. In my experience, for most games running in 4K, the tear line disappears with Sync line 0 set to 2110. 2250 - 2110 = 140. Therefore, you type in "-140" in RTSS's box dedicated to Scanline sync, or simply edit the game's CFG file to include "SyncScanline0=-140".
Important: you must use negative numbers. Chief Blur Buster explains why here.
4. Extra tips
4.1 SyncFlush (0, 1 or 2)
Flushing is used to make Scanline Sync more accurate. "SyncFlush=1" is the recommended setting for most games. "0" will cause the tear line to become unstable and jittery. "2" can be selected when GPU usage is incredibly low (~30%) - recommended for older games.
4.2 Fast Sync and Enhanced Sync
In scenarios where the frame rate can't be maintained above the refresh rate 100% of the time, with frame rate dipping to the 90%-95% range (54fps-57fps out of 60fps), Scanline Sync can be used in conjunction with Nvidia's Fast Sync or AMD's Enhanced Sync.
Important: Fast Sync only works with games using DirectX 11 and below (DX11, DX10, DX9). It does not support DirectX 12, OpenGL or Vulkan (source). Enhanced Sync works with games using DirectX 9, DirectX 10, DirectX 11, DirectX 12 and Vulkan. It does not support OpenGL (source).
For how to enable Fast Sync on Nvidia Control Panel, see 2.1.2 Set "Power management mode" to "Prefer maximum performance" and follow all the steps there, but instead of changing "Power management mode" during step #7, change "Vertical Sync" to "Fast".
4.3 Easier way to visualize tear lines (thanks, Ravio-li)
RTSS has a feature that allows you to enable a frame color indicator, making it easier to visualize the tear lines, during calibration. Here's how to do it:
- Open RTSS and click on the blue button labeled "Setup" in the center bottom part of the window;
- In the "General" tab, under "FCAT properties", select (mark) the checkbox labeled "Enable frame color indicator";
- In the drop-down menu, select your preferred visualization method (Ravio-li recommends "2 bars", so that "you can see where the scanline is and if the frame pacing is regular").
4.4 Running games at double your display's refresh rate (thanks, Ravio-li)
I purposely left this out of my original write-up because I still haven't personally tested it, and I deemed it a bit too complicated for a beginner's tutorial. Per @Ravio-li's suggestion, I'll include the information here, as an extra tip, quoting him and Chief Blur Buster directly:
You can run games at double your monitor refresh rate if you set the scanline sync to x2 (click on it once). This will result firstly in 2 visible scanlines, one somewhere in the middle of the screen. You can get rid of it by using scanline sync together with nvidia fastsync. If everything is correct and you have the frame color indicator selected to 2 bars, one of the 2 bars will never appear -> you skip every other frame and should get better latency.
Also the x/2 half refresh mode is very useful for games that can't get a stable framerate or are below the freesync range, if you have a monitor with it.
Chief Blur Buster said:What about SyncScanLine1 for twice framerate versus refresh rate?
- If unfamiliar with this, keep SyncScanLine1 setting to 0. Worry only about one tearline (SyncScanLine0 or via GUI)
- Even if you do this, please do the easy stuff first before attempting this
If your game is ultra-low GPU (e.g. Quake Live or CS:GO) combined with motion blur reduction, this can reduce strobe lag a further (e.g. 240fps at 120Hz, or 200fps at 100Hz). First, calibrate using VSYNC OFF. You may use two tearlines with Enhanced Sync or Fast Sync -- but not with VSYNC ON (that will frame-throttle you badly). Calibrate the middle tearline to middle of screen (slightly above middle is ideal, to keep it equidistant with the bottommost tearline, but position of middle tearline matters less than the bottommost tearline) but focus on carefully calibrating the bottommost tearline to stay permanently above bottom edge of screen. Ideally, they should be signal-equidistant from each other (half Vertical Total apart, taking into account of VBI versus visible vertical resolution). But this is less critical than keeping the bottommost tearline permanently above bottom edge of screen, in order to avoid those lag spikes during Fast Sync and Enhanced Sync.
Last edited: