- Jan 7, 2012
- 642
- 26
- 101
I am not a fan of screen tearing. Screen tearing is caused when the video frame buffer and the screen refresh rate are not synced correctly.
The monitor draws pixels on the screen left to right, going down each row, the same order as when you read a book, from the video buffer. So naturally, if the image buffer changes the frame while the monitor is not done drawing the frame to the screen, it will create a tear and the monitor will finish drawing the rest of the screen with the new frame from the video buffer.
Here's an example of two screen tears with three separate frames in a regular monitor.
There is a tear 1/3 and 2/3 of the way through the screen.
One solution to this is V-sync (double or triple buffering). The video card will postpone updating the frame in the image buffer until the monitor has finished drawing the current frame to the screen. However, even in a perfect world, the concept of vsync will always introduce some amount of lag since the video card will delay giving out the most updated frame while the monitor finishes drawing the old frame. I'm not against vsync, and the idea i want to introduce will not rid the need of vsync, but I think it's an option some people may prefer.
What i want to introduce I don't believe requires any signficant technical changes to current monitors/video cards. This is not a completely new idea, I will point out later.
My technical knowledge of the limitations of monitor screen drawing is pretty low, so let me know if something here is technically not feasable.
What if instead of drawing to the screen left to right and then top to bottom, the monitor instead skips every other pixel, and skips every other row.
So here's what monitors currently do (anandtech doesn't seem to support gif animations, open the link in a new window to see it animated)
but here is what I am proposing instead: (anandtech doesn't seem to support gif animations, open the link in a new window see it animated)
This way, to do a full screen refresh, the monitor actually has to do 4 complete passes of the frame, each one a fourth of the resolution of a full screen.
In this way, any single tear that would have been noticeable in the regular setup only shows up as a single tear in one of the passes, and after the other 3 passes complete the tear will not be noticeable.
Here is the same three frames above drawn in a single refresh on a 4 pass system:
you'll notice it's not ideal. The 4 pass system adds two negative things. First, it gets rids rid of the screen tear but sacrifices a crisp image; it adds a form of motion blur. Second, it adds a dither effect to the screen when there is motion. These cons are only visible when there is going to be a screen tear, if the screen is vsync'ed the system should look exactly the same as a single pass system.
I have not seen this in motion, so I don't know what it looks like in real-time.
This has another benefit that I did not foresee. For any given amount of time, a monitor that is drawing with a 4-pass system will actually give more useable information then a single pass system.
Here's an image of what a monitor may draw for some arbitrary amount of time.
Now here's an image of what the same monitor would draw in the same amount of time if it was using a 4-pass system
(note, the image is signficantly darker, this is because i have used black for the blank space, normally this will be not the case sense you will have previous frames filling in those blank spaces.)
Basically, what ends up happening is because the monitor does 4 complete passes of the screen to complete one full refresh, it feels like a faster refresh rate. The rate at which the monitor refreshes entire frames is still 60hz (or whatever the monitor is rated at), however, because the monitor does 4 passes per hz, the monitor completes the passes at 240hz. Each individual pass has a quarter of the resolution of the full refresh, but i believe that quarter resolution is better spent giving a rough summary of the image rather then showing you a detailed image of one-fourth of the screen.
On average the 4-pass system has less latency in delivering valuable information to the viewer. A single refresh at 60hz takes 1/60 = .017 seconds or 17ms. If we assume some information has changed in the next frame that is valuable for the viewer (a terrorist comes around the corner), and that information is still a half-refresh away, then the average latency induced just from the screen alone, and not counting any signal processing, is about 17/2ms or 8ms (worse case 17ms, best case 0ms). A four-pass system reduces that to an average of 2ms (worse case 4ms, best case 0ms). I don't know if this is something that would be noticeable by casual gamers or professional gamers, but none the less, the delay would be reduced.
I mentioned this is not a new idea, and I didn't want to mention this until the end because it has some negative conotations to it i think. This is basically what video interlacing does , except interlacing is only a 2-pass system in only one dimension, and this is bumping it up to a 4 pass system in two dimensions.
Would you guys want to try this system or some other system that doesn't render left to right and top to bottom?
The monitor draws pixels on the screen left to right, going down each row, the same order as when you read a book, from the video buffer. So naturally, if the image buffer changes the frame while the monitor is not done drawing the frame to the screen, it will create a tear and the monitor will finish drawing the rest of the screen with the new frame from the video buffer.
Here's an example of two screen tears with three separate frames in a regular monitor.
There is a tear 1/3 and 2/3 of the way through the screen.
One solution to this is V-sync (double or triple buffering). The video card will postpone updating the frame in the image buffer until the monitor has finished drawing the current frame to the screen. However, even in a perfect world, the concept of vsync will always introduce some amount of lag since the video card will delay giving out the most updated frame while the monitor finishes drawing the old frame. I'm not against vsync, and the idea i want to introduce will not rid the need of vsync, but I think it's an option some people may prefer.
What i want to introduce I don't believe requires any signficant technical changes to current monitors/video cards. This is not a completely new idea, I will point out later.
My technical knowledge of the limitations of monitor screen drawing is pretty low, so let me know if something here is technically not feasable.
What if instead of drawing to the screen left to right and then top to bottom, the monitor instead skips every other pixel, and skips every other row.
So here's what monitors currently do (anandtech doesn't seem to support gif animations, open the link in a new window to see it animated)
but here is what I am proposing instead: (anandtech doesn't seem to support gif animations, open the link in a new window see it animated)
This way, to do a full screen refresh, the monitor actually has to do 4 complete passes of the frame, each one a fourth of the resolution of a full screen.
In this way, any single tear that would have been noticeable in the regular setup only shows up as a single tear in one of the passes, and after the other 3 passes complete the tear will not be noticeable.
Here is the same three frames above drawn in a single refresh on a 4 pass system:
you'll notice it's not ideal. The 4 pass system adds two negative things. First, it gets rids rid of the screen tear but sacrifices a crisp image; it adds a form of motion blur. Second, it adds a dither effect to the screen when there is motion. These cons are only visible when there is going to be a screen tear, if the screen is vsync'ed the system should look exactly the same as a single pass system.
I have not seen this in motion, so I don't know what it looks like in real-time.
This has another benefit that I did not foresee. For any given amount of time, a monitor that is drawing with a 4-pass system will actually give more useable information then a single pass system.
Here's an image of what a monitor may draw for some arbitrary amount of time.
Now here's an image of what the same monitor would draw in the same amount of time if it was using a 4-pass system
(note, the image is signficantly darker, this is because i have used black for the blank space, normally this will be not the case sense you will have previous frames filling in those blank spaces.)
Basically, what ends up happening is because the monitor does 4 complete passes of the screen to complete one full refresh, it feels like a faster refresh rate. The rate at which the monitor refreshes entire frames is still 60hz (or whatever the monitor is rated at), however, because the monitor does 4 passes per hz, the monitor completes the passes at 240hz. Each individual pass has a quarter of the resolution of the full refresh, but i believe that quarter resolution is better spent giving a rough summary of the image rather then showing you a detailed image of one-fourth of the screen.
On average the 4-pass system has less latency in delivering valuable information to the viewer. A single refresh at 60hz takes 1/60 = .017 seconds or 17ms. If we assume some information has changed in the next frame that is valuable for the viewer (a terrorist comes around the corner), and that information is still a half-refresh away, then the average latency induced just from the screen alone, and not counting any signal processing, is about 17/2ms or 8ms (worse case 17ms, best case 0ms). A four-pass system reduces that to an average of 2ms (worse case 4ms, best case 0ms). I don't know if this is something that would be noticeable by casual gamers or professional gamers, but none the less, the delay would be reduced.
I mentioned this is not a new idea, and I didn't want to mention this until the end because it has some negative conotations to it i think. This is basically what video interlacing does , except interlacing is only a 2-pass system in only one dimension, and this is bumping it up to a 4 pass system in two dimensions.
Would you guys want to try this system or some other system that doesn't render left to right and top to bottom?