05-29-2014 05:55 AM
01-21-2015 05:59 AM
01-21-2015 07:18 AM
01-21-2015 09:07 AM
"kojack" wrote:
Having 170 degree fov sounds cool (and it is), but there's going to be a performance hit.
I'm not talking about the fact that wider fov means more of a scene is drawn, so there's less potential frustum culling (this is definitely an extra performance hit, but it's the obvious one). The problem is that typical 3d engines that work using standard projection matrix math (the way gpus like) are unsuited to wide fov. The closer to 180 degrees they get, the more distorted the view is, with excessive resolution devoted to the peripheral to the detriment of the centre. 180 degrees is impossible with this style (the camera frustum would become a flat plane instead of a pyramid).
In order to compensate for this extreme distortion, alternative rendering styles are needed. One way is to render multiple cameras per eye then use a shader to curve them. Two cameras may be enough (for example each eye has an 85 degree fov camera facing 42.5 degrees to the left and 42.5 to the right, for a total of 4 cameras. That will give you 170 degrees with much less distortion). Or we need to use techniques like ray tracing, which doesn't suffer from this at all, but is much slower.
Here is a quick scene I just made. It's a group of ninjas standing in a perfect circle around the player. The ninjas are evenly spaced and they are all exactly 5 metres from the player.
The top pic is a 170 degree fov using the standard rendering technique. This is what Ogre, UE4, Unity, etc would show if you just set the fov.
Look at the size difference between the ninja on the far left and the ninja in the very centre. The left one is 344 pixels wide (before I scaled the pic down for the forum), the middle one is 8 pixels wide! But we want more resolution in the centre and less at the sides.
The bottom pic is the exact same scene with a 170 degree fov, except this time rendered using 20 cameras, each 8.5 degrees across.
Of course 20 cameras is a bit extreme (hey, Ogre can handle it), I could have achieved a similar effect with just 2-4 cameras and a shader to unwrap their views, I just don't feel like writing the shader right now (just got home from work).
So if DK2 struggles on many people's computers with one camera per eye, imagine the performance of the Claire with two or more cameras per eye and double the horizontal resolution.
(That's assuming you don't want the image to suck).
01-21-2015 09:34 AM
"Jotokutora" wrote:
Didn't 'Road to VR' reviewed a dual screen 210 degrees HMD, and performed well if I recall?
01-21-2015 10:29 AM
"kojack" wrote:"Jotokutora" wrote:
Didn't 'Road to VR' reviewed a dual screen 210 degrees HMD, and performed well if I recall?
Yep, the Infinieye is 210 degrees.
And they do exactly as I described. Here's the Road To VR interview with diagrams showing how they had to use 4 cameras (two per eye) and a distortion shader to support that fov.
http://www.roadtovr.com/infiniteye-technical-qa-high-fov-virtual-reality-work/2/
Theirs is a bit more optimal than my arrangement though, they have a 90 degree fov camera facing forwards on each eye, then a smaller fov camera facing sideways. This gives less overlap in the areas our eyes can't see. My example was just the base idea.