sharknice wrote: ↑13 Dec 2019, 13:36
Global is better. If you display the bottom of the frame later than the top of the frame motion is off by that time difference.
The only advantage to scanning is you could reduce latency by displaying the frame data as it comes in, instead of waiting for the entire frame then displaying it. There are plenty of disadvantages to doing it that way though.
Actually, amazingly, it depends on the sync tech you use!
Synchronizing the game’s time with the photons hitting your human eyeballs.
FIrst, Understand Display Scan Out Behavior On LCDs
First, watch
www.blurbusters.com/scanout and come back to this post.
If you don’t want to click that link, please click play on this 2ms BenQ ZOWIE monitor... High speed video of an LCD refresh cycle in realtime. It’s flashing 4 images rapidly at 60fps, 1 image per refresh cycle.
There’s also a high speed video of an OLED there too. Non-strobed OLEDs usually scans out in exactly the same way as a non-strobed LCD. Their behaviour only changes when you’re doing low persistence behaviours because OLEDs do not have a backlight that can be indepedently (separately) strobed. But I want to cover LCDs first so you can at least understand how this works. Now, For strobed LCDs (video of one at
www.blurbusters.com/lightboost/video ...) — they use global-flash strobing.
1. LCD with VSYNC ON + Strobed = gametime:photontime is more syncd
Why? VSYNC ON is global, and strobed is global/
2. LCD with VSYNC ON + Nonstrobed = bottom edge has more lag than top edge
Why? The globalness of VSYNC ON combined with sequential raster delivery to the display in www.testufo.com/scanout
3. LCD with VSYNC OFF + Strobed = top edge has more lag than bottom edge
Why? The screen scans out in total darkness, and the freshest VSYNC OFF frameslices at bottom reveals when whole screen is flashed
4. LCD with VSYNC OFF + Nonstrobed = gaimetime:photontime is more syncd
Why? The frameslice streaming is in sync with the rolling scan. VSYNC OFF frameslices is scanout-following, so the higher the framerate, the more frameslices, the more linear gametime increases along the vertical dimension of the screen, as the screen scans out.
1. LCD with VSYNC ON + Strobed
2. LCD with VSYNC ON + Non-strobed
- For strobed, the panel is refreshed in dark, flashed in VBI, as global visibility. The globalness of VSYNC ON is in sync with the globalness of the global strobe flash. Zero scanskew at
www.testufo.com/scanskew
- For nonstrobed, photon visibility is realtime in scanout. The globalness of VSYNC ON versus the scanout (delivery-based latency,
www.blurbusters.com/scanout) creates a latency gradient. Scanskewing at
www.testufo.com/scanskew
1. LCD with VSYNC OFF + Strobed
2. LCD with VSYNC OFF + Non-strobed
Different gametimes in different frameslices that are streamed onto the screen mid-scanout, during VSYNC OFF.
- For strobed, the panel is refreshed sight-unseen (backlight off, screen is dark) top to bottom. The sequentialness of VSYNC OFF frameslice streaming versus the globalness of strobing, creates the reverse latency gradient with more lag at top than bottom, because the bottom just finished refreshing in dark and the backlight finally strobes during VBI. Now the masterpiece (aka “one refresh cycle”) is seen by human eyes, but the top edge is now containing the oldest VSYNC OFF frameslices from earlier gametimes. Ergo, more lag for top edge.
- For nonstrobed LCD, photon visibility is realtime in scanout. So VSYNC OFF frameslice streaming is in sync with delivery scanout.
Summary
If you want
MOTION PERFECTION (zero stutter, zero blur, gametime:photontime sync)
- Use VSYNC ON + Strobed
If you want
LATENCY CONSISTENCY
- Use VSYNC OFF + Nonstrobed
- Use VSYNC ON + Strobed
If you want
LOWEST LATENCY (despite motion blu & inconsistencies)
- Use VSYNC OFF + Nonstrobed
Now, Understand Scan Out Behaviour On OLEDs
OLEDs also have similar scanout behaviour, as seen in this high speed video:
Strobing on OLEDs sometimes have to behave differently because there’s no independent light source separate from pixel refresh source like for LCDs.
As a result, strobing on most OLEDs are almost always rolling-scan strobe (some exceptions apply, as some panels are designed differently OLED transistors can be preconfigured in scanout refresh, and then a illumination voltage does a global illumination at the end).
However, most large OLED panels have to do a rolling-scan strobe for reducing persistence. Also, rolling strobe on OLED can be fractional refreshes, so OLED BFI can actually be arbitrary lengths unrelated to refresh cycle length. Since the off-pass can chase behind the on-pass simultaneously on the same screen at an arbitrary distance, much like it did on the Dell UP3017Q monitor. Like changing the phosphor of a CRT to a shorter or medium persistence (except it’s a squarewave rather than a fade wave), CRT phosphor persistence length being unrelated to refresh cycle length. So BFI isn’t necessarily integer divisors here, and the meaning of “strobing” vs “BFI” is blurred into one meaning.
Custom OLED Rolling Scans
VSYNC ON + OLED sample-and-hold = Same as nonstrobed LCD behavior
VSYNC OFF + OLED sample-and-hold = Same as nonstrobed LCD behavior
VSYNC ON + OLED rolling strobe = Same as CRT behavior = bottom edge has more latency than top edge
VSYNC OFF + OLED rolling strobe = Same as CRT behavior = same average latency throughout screen
This is Blur Busters!
As you already know, Blur Busters is the experts on explaining these topics to advanced end users. We’re the only website that can explain this in easy Popular Science terminology without looking like an engineering journal.