<p>Alex Vlachos from Valve has had two great GDC talks about this:</p>

<ul>
<li><a href="http://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf">the one from 2015</a></li>
<li><a href="http://www.gdcvault.com/play/1021771/Advanced-VR">the one from 2016</a></li>
</ul>

<p>Other than that (and what you have linked yourself), there isn't much left to do than to simply optimize your app until you spend at most 10 ms per frame (100 Hz, targeting a 90 Hz display + margin). Standard rendering optimizations apply. Apply a technique, profile, determine its impact on performance, rinse, repeat.</p>

<p>You may also exercise caution with that UE4 stereo instancing from Epic. In my experience, its performance boost depends heavily on the game's rendering workload. I had a statically lit game with lots of instanced foliage and this feature has actually been a net loss, probably due to the overhead of left/right eye dynamic branching in the shaders; while a fully dynamically-lit scene may benefit from it all right. As I said before: profile to ensure that a technique actually helps performance.</p>

CC BY-SA 3.0
2016-04-18T07:56:36.613Z
2016-04-18T07:56:36.613Z
IneQuation
<h2>Avoid stereo when possible</h2>
<p>There was some research published recently measuring when users can or cannot tell whether the specular contribution, which is view point dependent, is different between eyes.</p>
<p><a href="https://software.intel.com/en-us/articles/perception-of-highlight-disparity-at-a-distance-in-consumer-head-mounted-displays" rel="noreferrer">Perception of Highlight Disparity at a Distance in Consumer Head-Mounted Displays</a></p>
<p>In the future, this could be use to share some computation between the two eye renders. Unfortunately this sounds hard to take advantage of in a typical rasterization pipeline.</p>
<p>Some games already avoid stereo when rendering far objects and background.</p>
<hr />
<h2>Reduce shading when possible</h2>
<h3>Lens distortion</h3>
<p>Part of the NVidia VRWorks SDK is a feature, <a href="https://blogs.nvidia.com/blog/2016/04/20/ue-4/" rel="noreferrer">Multi-Res Shading</a>, that allow to reduce the amount of shading, to take into account the fact that some pixels contribute less to the final image due to lens distortion.</p>
<p>In <a href="http://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf" rel="noreferrer">Alex Vlachos' GDC 2015 presentation</a>, he also mentions the idea of rendering the image in two parts of different resolution, to achieve the same goal.</p>
<h3>Foveated rendering</h3>
<p>Finally, like your question mentions, foveated rendering aims at scaling the resolution to take into account the fact that eyes have more precision in the fovea and less in the periphery. There is some <a href="http://research.lighttransport.com/foveated-real-time-ray-tracing-for-virtual-reality-headset/" rel="noreferrer">research on the topic</a>, but this requires eye tracking like in the <a href="http://www.getfove.com/" rel="noreferrer">Fove</a> HMD.</p>

CC BY-SA 3.0
2016-04-18T05:05:56.010Z
2016-04-22T07:13:59.907Z
2020-06-18T08:32:12.800Z
Julien Guertault
<p>I'm interested in virtual reality, but according to some sources, less than 1% of computers in use today have the necessary performance to run modern VR games, granted many of them are not intended for gaming, that's still a huge barrier for the widespread adoption of VR headsets into the market. So I was wondering what could be done to reduce the performance requirements of a VR game that hasn't been implemented with such optimizations in mind.</p>
<p>I'm talking about technologies like foveated rendering, which (ab)uses the fact that we only ever perceive a few degrees in the center of our field of vision as sharp while everything else is blurry. This can be combined with eye tracking so that only the areas where the player is looking are rendered in full quality, while we can reduce the render quality and therefore the performance requirements everywhere else.
This seems like a great advantage and I honestly wonder why none of the major VR companies have implemented eye tracking into their headsets and foveated rendering into their SDKs into their headsets. The technology exists and I can't imagine that it would add much to the price tag.
<a href="https://www.microsoft.com/en-us/research/publication/foveated-3d-graphics/?from=http://research.microsoft.com/pubs/176610/foveated_final15.pdf" rel="nofollow noreferrer">Paper about foveated rendering</a></p>
<p>There's also instanced stereo rendering which basically renders things to both eyes at the same time rather than rendering it for each eye individually.
<a href="https://web.archive.org/web/20160712094453/https://docs.unrealengine.com/latest/images/Support/Builds/ReleaseNotes/2016/4_11/image_16.gif" rel="nofollow noreferrer"><img src="https://web.archive.org/web/20160712094453/https://docs.unrealengine.com/latest/images/Support/Builds/ReleaseNotes/2016/4_11/image_16.gif" alt="Example gif for Instanced Stero Rendering - Epic Games, Unreal Engine 4.11 release notes" /></a></p>
<p>It's also possible to use just one frustum for both eyes rather than two as discussed here.
<a href="https://computergraphics.stackexchange.com/questions/1736/vr-and-frustum-culling">VR and frustum culling</a></p>
<p>But are there other approaches to the performane problem?</p>

CC BY-SA 3.0
2016-04-18T04:45:53.690Z
Temporal algorithms ought to help, by reusing information from frame to frame, thus amortizing rendering costs over time.
Alan Wolfe
CC BY-SA 3.0
2016-04-26T18:50:18.367Z
The question states "acoording to some sources, less than 1% of computers in use...". Could you be more precise in what sources you are thinking of?
Andreas
CC BY-SA 3.0
2016-04-26T19:29:28.087Z
@Andreas http://goo.gl/YqMpwQ
http://goo.gl/2oQBPw

I did not believe that this statement was relevant enough to the question to require a source. Especially considering that (while the actual numbers are debatable), it is obvious and well known that VR is performance heavy and thus won't run on slower PCs.
Syzygy
CC BY-SA 3.0
2016-04-26T19:55:03.180Z
I was not sure if "some" were some guys you met on reddit rambling or, as the links points out, quite respectable companies and news networks. As for obvious well that is matter of today and tomorrow. Today is 1%. 2020 is estimated 8%. The latter may well cover everyone still interested in VR by that time so it may or may not be a problem.
Andreas
<rendering><performance><optimisation><virtual-reality>
What methods/technologies to reduce required performance for virtual reality are there?
Syzygy
# What methods/technologies to reduce required performance for virtual reality are there?

(Asked by: username_0 on 2016-04-17)

I'm interested in virtual reality, but according to some sources, less than 1% of computers in use today have the necessary performance to run modern VR games, granted many of them are not intended for gaming, that's still a huge barrier for the widespread adoption of VR headsets into the market. So I was wondering what could be done to reduce the performance requirements of a VR game that hasn't been implemented with such optimizations in mind.

I'm talking about technologies like foveated rendering, which (ab)uses the fact that we only ever perceive a few degrees in the center of our field of vision as sharp while everything else is blurry. This can be combined with eye tracking so that only the areas where the player is looking are rendered in full quality, while we can reduce the render quality and therefore the performance requirements everywhere else.
This seems like a great advantage and I honestly wonder why none of the major VR companies have implemented eye tracking into their headsets and foveated rendering into their SDKs into their headsets. The technology exists and I can't imagine that it would add much to the price tag.
[Paper about foveated rendering](https://www.microsoft.com/en-us/research/publication/foveated-3d-graphics/?from=http://research.microsoft.com/pubs/176610/foveated_final15.pdf)

There's also instanced stereo rendering which basically renders things to both eyes at the same time rather than rendering it for each eye individually.
[![Example gif for Instanced Stero Rendering - Epic Games, Unreal Engine 4.11 release notes](https://web.archive.org/web/20160712094453/https://docs.unrealengine.com/latest/images/Support/Builds/ReleaseNotes/2016/4_11/image_16.gif)](https://web.archive.org/web/20160712094453/https://docs.unrealengine.com/latest/images/Support/Builds/ReleaseNotes/2016/4_11/image_16.gif)

It's also possible to use just one frustum for both eyes rather than two as discussed here.
[VR and frustum culling](https://computergraphics.stackexchange.com/questions/1736/vr-and-frustum-culling)

But are there other approaches to the performane problem?

**Tags:** rendering, performance, optimisation, virtual-reality

> **Comments:**
> **username_1**: Temporal algorithms ought to help, by reusing information from frame to frame, thus amortizing rendering costs over time.  
> **username_2**: The question states "acoording to some sources, less than 1% of computers in use...". Could you be more precise in what sources you are thinking of?  
> **username_0**: @username_2 http://goo.gl/YqMpwQ http://goo.gl/2oQBPw  I did not believe that this statement was relevant enough to the question to require a source. Especially considering that (while the actual numbers are debatable), it is obvious and well known that VR is performance heavy and thus won't run on slower PCs.  
> **username_2**: I was not sure if "some" were some guys you met on reddit rambling or, as the links points out, quite respectable companies and news networks. As for obvious well that is matter of today and tomorrow. Today is 1%. 2020 is estimated 8%. The latter may well cover everyone still interested in VR by that time so it may or may not be a problem.  

---

## 2 answers

### Answer by username_4 on 2016-04-18. Score: 9 | Accepted answer

## Avoid stereo when possible

There was some research published recently measuring when users can or cannot tell whether the specular contribution, which is view point dependent, is different between eyes.

[Perception of Highlight Disparity at a Distance in Consumer Head-Mounted Displays](https://software.intel.com/en-us/articles/perception-of-highlight-disparity-at-a-distance-in-consumer-head-mounted-displays)

In the future, this could be use to share some computation between the two eye renders. Unfortunately this sounds hard to take advantage of in a typical rasterization pipeline.

Some games already avoid stereo when rendering far objects and background.

---

## Reduce shading when possible

### Lens distortion

Part of the NVidia VRWorks SDK is a feature, [Multi-Res Shading](https://blogs.nvidia.com/blog/2016/04/20/ue-4/), that allow to reduce the amount of shading, to take into account the fact that some pixels contribute less to the final image due to lens distortion.

In [Alex Vlachos' GDC 2015 presentation](http://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf), he also mentions the idea of rendering the image in two parts of different resolution, to achieve the same goal.

### Foveated rendering

Finally, like your question mentions, foveated rendering aims at scaling the resolution to take into account the fact that eyes have more precision in the fovea and less in the periphery. There is some [research on the topic](http://research.lighttransport.com/foveated-real-time-ray-tracing-for-virtual-reality-headset/), but this requires eye tracking like in the [Fove](http://www.getfove.com/) HMD.


---

### Answer by username_3 on 2016-04-18. Score: 7

Alex Vlachos from Valve has had two great GDC talks about this:

* [the one from 2015](http://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf)
* [the one from 2016](http://www.gdcvault.com/play/1021771/Advanced-VR)

Other than that (and what you have linked yourself), there isn't much left to do than to simply optimize your app until you spend at most 10 ms per frame (100 Hz, targeting a 90 Hz display + margin). Standard rendering optimizations apply. Apply a technique, profile, determine its impact on performance, rinse, repeat.

You may also exercise caution with that UE4 stereo instancing from Epic. In my experience, its performance boost depends heavily on the game's rendering workload. I had a statically lit game with lots of instanced foliage and this feature has actually been a net loss, probably due to the overhead of left/right eye dynamic branching in the shaders; while a fully dynamically-lit scene may benefit from it all right. As I said before: profile to ensure that a technique actually helps performance.


---

