Thank you for the compliment!ycc wrote:I just discovered this site and it's cool! I have written tiny tests like these for internal use before but definitely not as systematic as this.
One suggestions for the frame rate scrolling tests like "UFO", "Vertical Scrolling", and "Marquee": The logic seems to round the coordinates for the text to be integer coordinates, therefore the rendering is always pixel perfect with no blurring/filtering going on. Is it possible to add a mode where we get blurred filtering? So basically, allow X/Y coordinates in fractions, so something like (38.2, 40.5) would be rendered blurry because of filtering instead of rounded to (38, 41).
If I remember correctly though, the proper way to tell the browser to n
- ot round the coordinates does differ depending on which one you are targeting, ranging from using CSS transform/translate, setting the CSS position, drawing on canvas, etc.
The reason to request this is that let's say you are building a 30fps game or experience, you will usually turn on subpixel filtering for a smoother experience. The images will be blurrier, but that prevents the sort of stuttering you see in the animation, and I think it's a more representative comparison of what the user will actually experience in 30 vs 60fps for normal apps.
In my experience, filtering only helps microstutter by half a pixel maximum -- but yes, it is useful.
You can already simulate filtered by adjusting Browser Zoom -- 50%, 75%, 110%, 200%, etc while viewing http://www.testufo.com. Or view TestUFO on an iPad and pinch-zoom on an iPad. This will create the filtered effect.
Even patterns like http://www.testufo.com/eyetracking and http://www.testufo.com/blackframes works fine at 50% browser zoom and 200% browser zoom, showing subpixel scaling doesn't interfere with the science of motion blur very much (except for things like aliasing/filtering side effects). Observe that (when animations are properly synchronized) the stutter looks essentially unchanged for the most part.
Subpixel steps are a useful suggestion (for other reasons than stutter though) to prevent the rounding-off TestUFO currently does. But for display measurements (e.g. pursuit camera), exact pixel steps are highly recommended to exclude the slight filtering blur. TestUFO uses 960 pixels/second by default because it is evenly divisible by 60, 120 and 240 -- refresh rates currently in gaming monitors. And 960 pixels/second is VERY close to 1000 pixels/second where it makes it easy to human-interpret the mathematic formula of 1ms = 1 pixel of motion blur during 1000 pixels/second (good example is 60Hz vs 120Hz vs LightBoost) -- we call this "Blur Busters Law" around here as this motion blur formula has reliably stood for squarewave-impulse displays (like strobed-LCD or pulsed OLED). Which means, we can actually kinda human-guess how many milliseconds of motion blur (MPRT), just by staring at how much the UFO blurs up (The UFO was intentionally designed as a user-friendly test pattern)
Subpixel filtering errors doesn't even interfere with Blur Busters Law much, except adds an error margin of only ~0.5 pixel (or whatever blur-size is used), regardless of how many pixels of motion blurring there is. However, improvements from subpixel filtering is especially very noticeable at slow motion speeds where single-pixel microstutter can easily be seen.
So optional subpixel speeds is a GREAT idea for MANY reasons! It is a great demonstration of how subpixel speeds can reduce single-pixel microstutter, even if it's applied to only 1 TestUFO test, or as an undocumented setting (for custom pixel speeds that are refresh-rate-independent).
FEATURE REQUEST (by ycc)
(A) Add custom motion speed for all possible pixel rates (1 pixel increments) by using subpixel filtering, to at least one of the TestUFO tests.
(B) Add a two-UFO custom motion speed "versus" comparison between pixel-rounding (single-pixel microstutter effect) versus subpixel-filtering (smooth), e.g. demonstrating things like how smooth 831 pixels/second can be at all refresh rates when using subpixel filtering. Preferred selectable options: Custom motion speed textbox, select a couple of different graphics (UFO or etc), etc.