This year has really been a game-changer in terms of affordable, consumer-based Virtual Reality products. The device that probably got the most attention in that area is the Oculus Rift for which development kits have been shipping for an affordable price. With support from popular games like Half-Life 2 and Team Fortress 2 VR-gaming and several indie demos has become a reality. Another interesting approach to VR is to use a special case with lenses that can be attached to your mobile phone like shown in the Dive project. As all the technology comes from the phone you already possess the price is even lower.
What both these systems have in common is that they enable a very wide field of view to the user by using relatively cheap and lightweight lenses that allow focusing sharply on the screen that is placed in front of the eyes of the user.
However, the lenses introduce two kinds of distortions: spatial and chromatic. The first one manifests itself in a way that the rectangular image is displayed with a pincushion distortion.
(Lateral) chromatic aberration is also known as a side-effect when taking pictures with a photo camera. Light of different wavelength refracts differently on the glass of a lens (e.g. blue light refracts less than red light). The perception through the lenses of wide-angle HMDs is that the color channels are not correctly pixel-aligned anymore.
(More details at photographylife.com. Thanks to „budda“ from comment #2 for notifying me about using the wrong image before.)
Luckily those distortions can be fixed pretty easily in software, but with a drawback. For fixing the pin-cushion distortion the opposite of it, named a barrel-distortion, can be applied which will cancel out the effect. In practice this is done in a post-processing shader after the image has been rendered. A bilinear texture lookup is taken into the original, rectangular rendered image and that sample is put in a barrel-distorted way into the final frame buffer. Fixing chromatic aberration in software can be done by a post-processing shader as well, changing the red, green and blue color channel to a different scale (depending on the radial distance to the distortion center).
The drawback of these methods is that they lead to a loss in image quality. Imagine the case where an image should be displayed in which one pixel is white, the next black, next white etc.; using the bilinear interpolated texture lookup for image warping the result will be some grayish color. More generally spoken high-frequency detail will be lost.
In the paper „Improved Pre-Warping for Wide Angle, Head Mounted Displays“ by Daniel Pohl (Intel), Gregory S. Johnson (Intel) and Timo Bolkart (Saarland University), to be presented at the VRST 2013 conference, we research into improved methods for distortion compensation.
Disclaimer: „© [Pohl] . This is the author’s version of the work. It is posted here for your personal use. Not for redistribution. The definitive version will be published through ACM at http://dx.doi.org/10.1145/2503713.2503752 in October 2013.“
First we propose to improve the image quality of the image-space solutions using a post-processing shader by using bicubic instead of bilinear texture lookup when warping the image into the barrel-distorted shape. On high-end GPUs this can be done today with only minimal performance cost.
Second we investigate object-space solutions that render the image directly in a barrel-distorted fashion. That way no image quality degrading post-processing is required anymore. This should be seen as a further looking-ahead approach as this requires the sampling patters to be freely chosen, which means that a custom written renderer („software-rasterizer“, voxel ray caster, ray tracer etc.) is required.
Further along in the paper evaluate the various approaches regarding their image quality using different metrics.
Last we present in the document performance numbers as an evaluation of the different methods.
Please feel free to share your thoughts in the comments!