FoveatedRendering

Introduction

Foveated Rendering can help reduce power usage and slightly increase rendering performance by reducing the quality of the peripheral region. Foveated Rendering maintains the resolution of the foveated region (center of the field of view) while reducing the resolution of the peripheral region (region that surrounds the foveated region).

../_images/Demo.png

The foveated region size can be set by FOV of SetFoveationParams. The FOV value means the field of view angle. A clear FOV region willl be generated using full resolution.

The quality of the peripheral region can be set by PeripheralQuality of SetFoveationParams. Outside the clear foveated region, the resolution will be downgraded if possible. However, which area of the peripheral region will be downgraded and how it will be downgraded will depend on the platform design. Wave SDK will only make sure that the foveated region is clear.

The position of the foveated region will shift by the coordinates (Focal_X/Focal_Y) of the SetFoveationParams for each eye in the screen.

The last setting of the foveated effect is used throughout the app or content (even if the level changes). If you do not want the effect to be used throughout, manage it in the different levels.

Note

Please make sure the AutoFoveation in AdaptiveQuality is disabled, AutoFoveation will override the foveation settings.

Note

Important: [UE5.0/5.1/5.2] Please disable Mobile Multi-View in project settings. The FoveatedRendering feature takes no effect when Mobile Multi-View is enabled for now.

API

../_images/FoveationAPIs.png

void GetFoveationParams(EEye Eye, float Focal_X, float Focal_Y, float FOV, EWVR_PeripheralQuality PeripheralQuality)

void SetFoveationParams(EEye Eye, float Focal_X, float Focal_Y, float FOV, EWVR_PeripheralQuality PeripheralQuality)

Eye
EEye {LEFT, Right} means to which eye the parameter will be applied.
Focal_X/Focal_Y
Focal_X/Focal_Y means the X/Y coordinate of the assigned eye. The original point (0,0) resides on the center of the eye. The domain value is between {-1, 1}
FOV
FOV represents the angle of the clear region.
PeripheralQuality
EWVR_PeripheralQuality {Low, Medium, High} represents the resolution of the peripheral region.

bool IsRenderFoveationEnabled()

return
True means SetFoveationMode is enabled manually or is enabled by default by the device. False means SetFoveationMode is disabled manually or is disabled by default by the device.

bool IsRenderFoveationSupport()

return
True means foveated rendering is supported by the device. False means foveated rendering is not supported by the device.

void SetFoveationMode(EWVR_FoveationMode Mode)

Mode
EWVR_FoveationMode {Disable, Enable, Default, Dynamic} Forcibly disable, enable foveated rendering or default to the foveated parameters of the device. Foveated parameters will be adjusted dynamically depend on HMD motion if set Dynamic mode. For more information, see WVR_RenderFoveationMode.

Project Settings

Set the Foveated Rendering Mode and the peripheral FOV and quality for both eyes. For more project settings, see Optional Project Settings.

../_images/FoveationPS.png