Search Unity

Is foveated rendering possible in Unity?

Discussion in 'Shaders' started by EternalWalker, Aug 22, 2014.

  1. EternalWalker

    EternalWalker

    Joined:
    Mar 27, 2013
    Posts:
    9
    Im searching for a way to implement foveated rendering into Unity. I hope you can help me. Every idea is welcome.

    What is foveated rendering?
    In short terms: You use an eye-tracking device and you render your point of interest with high detail settings. Other parts with be rendered with lower details.
    You can save performance by a factor of 5-6 on a fullHD desktop and you will see no difference from a normal fullHD rendering. (if you use a higher resolution or fov you will save more)

    http://research.microsoft.com/apps/pubs/default.aspx?id=176610

     
  2. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,152
    You could theoretically do this using Tobii EyeX and their Unity SDK, but I've not used their Unity integration before and I can't vouch for the quality or speed of their tracking solution.
     
  3. EternalWalker

    EternalWalker

    Joined:
    Mar 27, 2013
    Posts:
    9
    thx for your reply. I have an eyetracking device and i can use this data in Unity. This is not the Problem. I need to find a way to implement foveated rendering in Unity.
    I only found " Camera.pixelRect ". I need a mask to smoothly blend the layers, and i need an option to set different quality settings for the cameras.
     
  4. EternalWalker

    EternalWalker

    Joined:
    Mar 27, 2013
    Posts:
    9
  5. Graph

    Graph

    Joined:
    Jun 8, 2014
    Posts:
    154
    and using the viiewpoint position to drive LODs is out of the question?
     
  6. Hoodad

    Hoodad

    Joined:
    Jan 23, 2014
    Posts:
    12
    Well I would say that it is very possible to implement foveated rendering in Unity as long as you know the basics of the graphics rendering pipeline and have the hardware to support low system latency.

    I did implement a similar foveated rendering prototype of what Microsoft Research described in their article using Unity Pro with the help of Tobii Unity SDK. Assuming you have an EyeX Devkit(?) you have to get Unity Pro* and a monitor with high refresh rate**. If you have that running you are ready to start coding :) I used the EyeX Devkit together with the Asus VG248QE in order to get my implementation running. Once its running I can only agree with Johan Andersson, "It works surprisingly well" and that it will solve many of the rendering issues seen today and in the future.

    EDIT: While we're at it, I fell to motivate why foveated rendering is important for today and especially the future. As resolution of monitors increases, insane with the new iMac at 5k(!), the amount pixels needed to be managed increases which is a bad thing as memory speed aren't increasing as fast as execution speed (courtesy DICE). I also recall John Carmack did mention something out having adaptive resolution during a QuakeCon, foveated rendering is basically that only in software mode.

    *Unity Pro is required as you need to render each camera to a texture in order to merge the different resolutions together.
    **As described in the article by Microsoft Research does foveated rendering require a low system latency from eye movement until photon where the monitor is a major factor in that chain.
     
    Last edited: Oct 22, 2014