Unreal StarVR Plugin

Rendering


StarVR One plug-in supports Fixed Foveated Rendering (FFR). FFR enables the edges of the eye buffers to be rendered at a lower resolution than the target center portion of the eye buffers. High-resolution pixels are in a fixed position in the center of the area, eye buffer.

Through the use of FFR, the visual performance gains includes :
- Significant improvement of GPU fill performance
- Reduced power consumption, which affects heat
- Eye textures are increased within an application, increasing performance and overall user viewing experience

In exchange for FFR function, the following differences are found :
- FFR is most effective on low contrast textures, which include background images and large objects
- FFR is less effective on text and fine detailed images, which require higher contrasts, noticeable degradation in the image quality may be apparent
- The use of FFR does provide a benefit for complex fragment shaders


You can adjust FFR levels on a frame-by-frame basis to achieve the optimal trade off between performance and visual quality. Three specific features can be used to obtain the desired performance to visual ratio, they include: Rendering Quality, Rendering Density, and Rendering Factor.

The features are accessible through two environments, the Unreal Engine Editor or a configuration file.

FFR in Detail

The gains (losses) provided by FFR can be calculated by the cost of your application’s pixel shader. While a 25% gain in performance with pixel-intensive applications is achievable, applications with simple shaders are likely not to see significant improvement as they are not bound to GPU fill.
As compared to traditional 2D screens, the StarVR One HMD requires the warping of the displayed image to enable the correct display on the HMD lenses due to its curvature. The distortion allows for the perception of a larger field of view than on a typical display. Displayed to the viewer be warped to match the curvature of the lenses in the headset. This distortion allows us to perceive a larger field of view than we would by simply looking at a raw display. In the following image a 2D plane (horizontal line) is warped into a spherical shape to demonstrate the effect of distortion.

Due to the distortion, pixels making up an eye texture tend to be unevenly represented. To counter the distortion, more pixels are then required to create the post-distortion areas at the edge of the FOV than the center. As a result, a higher pixel density at the edge of the FOV than in the center. The result is an ineffective use of the rendering function and highly inefficient use of processing resources. 

The Fixed Foveated Rendering function solves the issue by lowering the output of the image during computation. This is implemented by controlling the rendering quality, density, and factor of individual tiles. By controlling the resolution of the individual tiles, FFR ensures that the tiles on the edges of the eye buffer are lower resolution than the center. In achieving this reduction, the quality of the post-distortion image is not perceptibly lowered and provides a significant improvement in GPU performance for renderings with a large number of pixels.
To adjust FFR levels, see the following section for further details.

Set FFR Texture Levels

There are multiple ways to set the FFR texture levels. The features are enabled through the Unreal Engine Editor or through a configuration file.

Prerequisites:
- Fully Integrate the StarVR One Plugin into the project

Edit Rendering Quality
Rendering Quality designates the resolution quality of the rendering of the image textures. You can set the rendering quality in the UE editor project settings.

Edit Rendering Quality in the Editor
To access the settings:
1. Activate the Unreal Editor and open the project.

2. In the Content Browser, select Content > AcerContent > Maps to setup the content data for selection

3. Open the console frame by pressing Tab or Tilde (~). Entering the following command to adjust the Rendering Quality.

4. In the console, enter the command starvr.rendering.quality #. The # designation refers to a selection in the following :
Fixed Foveated Rendering Quality :
Quality Low
- 0
Quality Medium
- 1
Quality High
- 2
Quality Ultra High
- 3
Quality Extreme High
- 4

The Rendering Quality is now configured and displays on the HMD.

Edit Rendering Quality in a Configuration File
To configure a file :
Prerequisites:
- Project must be compiled
1. Open a File Explorer window.

2. Navigate to the user profile and select Documents (%userprofile%Documents).

3. Create the following folder and file :
%userprofile%DocumentsUnreal EngineEngineConfig
File name: UserEngine.ini

4. Once created, double click on the configuration file select Open with to open with the Notepad application.

5. Add the following settings in the file:
[StarVR.Settings]
starvr.rendering.quality=2*
* Fixed Foveated Rendering Quality:
Quality Low
- 0
Quality Medium
- 1
Quality High
- 2
Quality Ultra High
- 3
Quality Extreme High
- 4

6. Save the file and close it to finalize the new settings.

7. Click the project executable file [Project_name.exe] to run using the new configuration settings.

Edit Rendering Density
Rendering Density designates the pixel density of the rendering of the image textures. You can set the rendering density in the UE editor project settings.
 

Edit Rendering Density in the Editor
To access the settings :
1. Activate the Unreal Editor and load the target content.

2. Open the console frame by pressing Tab or Tilde (~). Entering the following command to adjust the Rendering Density.

3. In the console, enter the command starvr.rendering.density #. The # designation refers to a set range: 0.1 to 1.0.

The Rendering Density is now configured and displays on the HMD.

Edit Rendering Density in a Configuration file
To configure a file :
Prerequisites :
- Project must be compiled
1. Open a File Explorer window.

2. Navigate to the user profile and select Documents (%userprofile%Documents).

3. Create the following folder and file:
%userprofile%DocumentsUnreal EngineEngineConfig
File name: UserEngine.ini

4. Once created, double click on the configuration file select Open with to open with the Notepad application.

5. Add the following settings in the file:
[StarVR.Settings]
starvr.rendering.quality=2
starvr.foveated.rendering.density=1.0*
* Fixed Foveated Rendering Density: 0.1 to 1.0

6. Save the file and close it to finalize the new settings.

7. Click the project executable file [Project_name.exe] to run using the new configuration settings.

Edit Rendering Factor
Rendering Factor designates the rendering factor for the rendering of the image textures.You can set the rendering factor in the UE editor project settings.

Edit Rendering Factor in the Editor
To access the settings :
1. Activate the Unreal Editor and load the target content.

2. Open the console frame by pressing Tab or Tilde (~). Entering the following command to adjust the Rendering Factor.

3. In the console, enter the command starvr.rendering.factor #. The # designation refers to a set range: 5 to 95.

The Rendering Density is now configured and displays on the HMD.

Edit Rendering Factor in a Configuration File
To configure a file :
Prerequisites :
- Project must be compiled
1. Open a File Explorer window.

2. Navigate to the user profile and select Documents (%userprofile%Documents).

3. Create the following folder and file:
%userprofile%DocumentsUnreal EngineEngineConfig
File name: UserEngine.ini

4. Once created, double click on the configuration file select Open with to open with the Notepad application.

5. Add the following settings in the file:
[StarVR.Settings]
starvr.rendering.quality=2
starvr.foveated.rendering.density=1.0
starvr.foveated.rendering.factor=55*
*Fixed Foveated Rendering Factor: 5 to 95

6. Save the file and close it to finalize the new settings.

7. Click the project executable file [Project_name.exe] to run using the new configuration settings.