1680x1050
PLEASE USE THE FIRST LINE TO INDICATE THE RESOLUTION OF YOUR LCD SCREEN.

The first line defines the resolution the application will use.
The program is adapted for running on an LCD display with 60 Hz.
The resolution should match the actual physical resolution of your device.
But you can try putting smaller values that correspond to an integer downsampling (e.g., if your resolution is 800x600 you can try 400x300, the application will then assume a physical device of 400x300).

The input format is: <width>x<height>



NOTICE:
Please enable applications to adapt the vsync behavior of your system via your graphics card driver settings. Otherwise, the experience might fail.

In order to ensure a correct resolution and a good match with the vsync mechanism, we opted for a full-screen application. In order to read this file while executing the program, please either print this page or use "ALT+TAB" to switch between the text and the application.
Thank you very much for your comprehension.

ATTENTION:
The program illustrates apparent increased resolution, but because we assume a 60 Hz display, the perceived increase in RESOLUTION IS LOWER than for 120Hz. Further, this application CANNOT reflect the perceived flickering on a 120Hz display. 
On a 60 Hz display the refresh rate is insufficient and some FLICKERING IS LIKELY TO BE VISIBLE. In fact, on some displays, due to the fine image structure and limited response time, you might even encounter flickering for the standard rendering mode. 

For 120 Hz our optimization scheme results in a flicker-free solution, as shown in our user study.

The case depicted in this application is the simplest of our results and in our actual implementation we support real 3D scenes, moving panoramas, and other more advanced scenarios. This executable is only intended to give an impression of the potential that our methods offers for high-refresh rate displays.

We hope you will enjoy the application.




TYPICAL USER SESSION:
First observe the fine details of the texture. With SPACE you can restart the animation. When pressing "+" you can switch into the next mode. Here, each display pixel shows the average color of all subpixels that fall into it. The fine structures become slightly unsharper. Still it is better than standard filtering when switching in the next mode (+). Here, we display a downsampled texture, this is somewhat related to mipmaps for interactive graphics. Pressing another time on "+" brings you back to our approach.

Please realize again that on a 120Hz display, these effects are more pronounced, but even on a good 60 Hz display the difference is usually visible. 

Now, let's stop the movement (m). The resolution appears decreased. This becomes particularly visible, if we no longer toggle between the two subimages that enable our increased resolution (f). Now, one can clearly see the pixels in the image and the resolution appears reduced. Pressing "s" allows to step through the two subimages that we used for our solution.
Changing the mode again (+), you see that the subimages of the per-pixel integration appear smoother because they have been optimally filtered for each static frame. Nevertheless, these missing frequencies are the reason that the reconstruction during the movement is less successful than with our method. Further, please realize that the contrast is reduced because the one high-resolution pixel-sized hairs are averaged with the surrounding dark pixels, leading to a slightly less contrasted image, more different from the original high-resolution image when displayed on a higher resolution screen.
Reactivating the movement(m) again, we see that flickering is key to the improved resolution. Without flickering a moving image loses high-frequencies, which is partly due to the so-called hold-type effect. Only the combination of two components (movement and correct processing) leads to the apparent superresolution.

