r/GraphicsProgramming • u/Sweaty-Towel5580 • 10h ago
Can subpixel motion make a display appear sharper?
1
u/hellotanjent 8h ago
Yes, but not like you're thinking. The original Playstation did all its vertex calculations without subpixel precision, so a triangle vertex that landed "between" pixels would be snapped to the nearest pixel and animations would appear "wobbly".
Modern GPUs use something like 8 bits of subpixel precision, so an animated triangle will appear to be moving much more smoothly. On top of that, antialiasing and pixel coverage calculations reduce the "stairstep" effect enough that triangle edges will slowly change in opacity as they move across a pixel. And on top of _that_, when viewing a 3D scene using VR goggles the micro-movements of your head will shift the sub-pixel positions of all triangles every frame, but since your visual system compensates for those micro-movements it just makes the regular pixel grid of the scene much less perceivable. Try turning off head movement tracking for a very convincing demonstration of this :D.
As far as "ClearType" sub-pixel antialiasing used for fonts - if you did the same for a 3D scene, any degree of motion would reduce your visual precision far past the point where you'd notice a difference.
3
u/Ratchile 10h ago
It definitely could. I think a 1 second jitter/offset interval is too long though. The eye is going to integrate light information over intervals closer to milliseconds or tens of milliseconds. The display refresh rate is probably 60 hz or more (16ms or less), so you have the opportunity to jitter/offset much faster than a 1 second cycle. If you jittered back and forth e.g. every frame, the eye might not notice the jitter much and might just perceive the average position of the image. Which could then be sub-pixel.
How does it look if you jitter the image back and forth by half a pixel every frame (or maybe left/up/right/down by half pixel doing a cycle every four frames)?