Platform Specific Recommendations
Each VR platform has its pros, cons, and specificities. For example, certain platforms make use of advanced rendering techniques that are not available on other platforms. Additionally, several platform-specific tools exist to help you track down problematic issues your project may be having.
RenderDoc (PC and Android)
RenderDoc is a stand-alone graphics debugging tool that allows you to do frame captures of your application running on PC or on Android.
Oculus Debug Tool (Oculus on PC)
The Oculus Debug Tool (ODT) enables one to to toggle Asynchronous Spacewarp (ASW), to change your field of view, and to view performance or debugging information within your application. One of the most pertinent views you can enable in ODT is the Oculus Performance Head-Up Display. This view can be used for viewing timings for render, latency and performance headroom in real-time.
SteamVR Frame Timings (SteamVR)
The SteamVR Frame Timing window can be accessed through the Video tab of SteamVR’s Settings window. This view shows CPU and GPU timings associated with SteamVR and is a great tool to monitor which frames are heavier to render, as well as the implications of reprojection in your VR project. The tool offers an option to display a more detailed graph, including the option to show the graph in-game. Do note that the Developer tab of SteamVR’s Settings window allows you to toggle Asynchronous Reprojection Interweaved Reprojection on and off.
Oculus Remote Monitor (GearVR and Oculus Go)
The Oculus Remote Monitor client is available for Windows and Mac OS X, and connects to applications running on remote mobile devices. It allows you to capture, store and display the streamed performance data from the device. It can be used to identify issues with tearing and missed frames.
Daydream Performance HUD (Daydream)
Similarly to the Oculus Performance Head-Up Display, the Daydream Performance HUD can be used to view rendering, Google VR, and other system metrics in real-time on device. Use this tool in order to investigate rendering issues concerning frame rate, asynchronous reprojection, and thermal throttling.
Fixed Foveated Rendering (Oculus Go)
Fixed Foveated Rendering (FFR) is a technique used on Oculus Go that makes use of tile-based rendering to render the edges of the eye texture at a lower resolution than the center. This is nearly imperceptible to the user as it only affects peripheral sections of the view and can significantly improve GPU fill performance. In Unity, Fixed Foveated Rendering can be enabled or disabled using the OVRManager.tiledMultiResLevel property. Read more about FFR in this blog post.
Asynchronous Spacewarp (Oculus Rift)
Asynchronous Spacewarp (ASW) is an extension of Oculus’ asynchronous reprojection implementation, which is dubbed Asynchronous Timewarp (ATW). Similarly to ATW, ASW kicks in when the frame rate drops below minimum requirements. This advanced technique allows positional information to be used in order to extrapolate where tracked elements, such as the player’s head and controllers, should be within a previous frame. This technique, combined with ATW, allow accurate intermediate frames to be generated when necessary. This leads to an enjoyable experience when frames are computationally demanding and frame rate requirements cannot be achieved. This feature is enabled by default and requires no extra effort, but developers should know that ASW may cause visual artifacts in some cases. See this blog post by Oculus to read more about Asynchronous Spacewarp.
The Unity manual installed with the PS4 Platform Installer includes a section on PlayStation VR (PS VR) specifics. Unity also provides a PlayStation VR sample project (available from Sony's DevNet Unity forum) that shows how to use PS VR specific features. PlayStation developers should also consult Sony DevNet’s technical notes and forums for more information about optimizing PS VR applications.
While the PlayStation 4 console is fixed hardware, there are two tier variants, comprising of the base PS4 and PS4 Pro systems. Always keep in mind that PS VR is supported by both of these models. Developers are required to maintain a framerate of at least 60 FPS, but are encouraged to reach 90 or 120 FPS if achievable.