The Oculus Rift Is Pretty Awesome


Occulus Rift Dev Kit Photo

Image via

The year is 1995, the climax of the “virtual reality” fad. Virtual reality was about to become a big industry, or something. You could even get a degree in it.
Except… where is it? It’s in movies, some pretty bad movies, at least. It’s at the mall, though it’s pretty awkward. You can buy it at Fry’s Electronics, but it’s quite expensive, very slow, and there are only a handful of games that support it. Virtual reality never really happened all the way, at least not like it was portrayed in science fiction. It had arrived, but only virtually, not in substance.
Fast forward almost twenty years. That should be enough time to rinse away the bad taste of Lawnmower Man.

I was eager to ignore the Oculus Rift at first until I heard that John Carmack was involved. John Carmack tells NVidia how to make their graphics cards, so this must be important. I ordered a dev kit right away.
It costs $300, which is still a bit expensive. But there’s plenty of good news: The headset is light and comfortable. There is still a tiny delay in responding to motion, but it’s nothing like in the 90s and easy to overlook compared to some iPhone games. And most importantly, it doesn’t hurt my eyes! (I can’t play the 3DS, at least not without holding it steadily at the specific, prescribed distance from my face, as if I didn’t get enough of the VirtualBoy already.) The field of view is also impressive: at least as good as a scuba mask, if not better. The bottom line is it’s pretty amazing. I’m trying to avoid sounding silly about it, but I’ll say it made me feel almost the same way as when I played Magic Carpet for the first time, years ago.
The only bad thing I can say about it is that the pixel resolution is too low. The model I received has “Development Kit” stamped all over it just to remind you that the final version will have a greater pixel resolution. It’s certainly good enough already for some things, but not quite satisfactory for a really serious FPS.
It doesn’t “just already work” with all games. (I’m glad they didn’t try to say it would, as is usual with these things.) In fact, it doesn’t work at all with a game unless the game explicitly supports it. The Oculus Rift acts as an additional single monitor just like any other monitor, so the game needs to draw the scene twice per frame, one viewport for each eye on each side of the same screen, with a curious transformation to account for the lenses in the headset that allow for a wide field of view. The game may also have to accommodate a drastically different aspect ratio… But adding this support is relatively simple, and there is support for Unity already, so I expect there to be thousands of games involved quite soon.
Some interesting things become apparent when viewing a game world in stereo. This is what I really wanted to talk about here.
First: flat, blurry textures look even more flat than ever before. Ugly grass textures that have been forgiven for decades are now quite obviously “painted on.” Hopefully people will be made more conscious of this crime from now on.
Second: the pixel resolution is low enough that when you’re trying to focus on an obscure object that’s only being rendered as a handful of pixels at a time, you become conscious that you’re trying to focus on a handful of pixels, and the fantasy is momentarily broken. Furthermore, in the “Tuscany” demo, the trees have leaves that are being rendered as flat, two-dimensional faces, which means that at a distance, each leaf may not get rendered at all if the viewer happens to be looking at it on-edge. The effect of this is that, as you move around, the leaves sporadically appear and disappear from view. Normally it’s easy to overlook this little oddity of 3D rendering, but when it happens in stereo, a leaf might be momentarily visible to one eye, but not the other. The result is that the tree leaves look like “a cloud of snow” that stands apart from everything else as being quite resistant to focus. It’s a bit like the problem that mip-mapping is supposed to solve, except we’re talking about the shapes themselves, not just texels.
I have a few ideas in mind for dealing with these issues one way or another, and I’m sure others will come up with their own cleverer tricks.
For instance, it seems that one solution to the tiny leaves problem would be “billboarding” the trees, but I don’t think that will be a good enough solution here. This is a matter of scale: If you “billboard” a tree while it’s too close, it’ll look silly, and you’ll lose the potential for stereo perspective. But “too close” is actually still far enough away that small leaves are sure to remain small and fleeting.
Instead, I think a more certain solution is what I call “double rendering”. For small yet important objects, they could be rendered both as a face and also as a point or lines. The idea is that points and lines are always rendered regardless of distance or clipping, so they’ll always be adequately visible when the faces slip out of view. Then you’d draw the faces on top of the points or lines so everything looks normal when it’s closer.
As I said, there are inevitably cleverer ways of going about it. I just wanted to bring this stuff up so people can start thinking about these new problems early.

• • •

Poor Stephen King. Inexplicably, all of the movies based on his books are terrible. It’s as if he were under a supernatural curse or something… Maybe he could write a book about that. Then they could make it into a movie.

+ more

Accurate Timing

Accurate Timing

In many tasks we need to do something at given intervals of time. The most obvious ways may not give you the best results. Time? Meh. The most basic tasks that don't have what you might call CPU-scale time requirements can be handled with the usual language and...

read more