Mobile VR can be particularly demanding as devices are less powerful than modern desktop PCs. It is important to take mobile platform limitations into account when designing mobile VR experiences. Mobile VR experiences should ideally be built from the ground up as porting a high-end PC or console VR experience to mobile is a trying task. The rule of thumb is to optimize your experience from the get-go and to tone down everything from visual effects to processing done of the CPU. Apart from what has already been mentioned above, please consider the following guidelines when developing your mobile VR application:
Minimize (or eliminate) the use of post-process effects
Keep geometry as simple as possible
Minimize draw calls
Avoid using Standard Shader or other computation-heavy shaders
Use Physics wisely as it is very computation-heavy. If possible, replace Physics colliders with distance-checking logic.
When a device detects that it is heating up too much, thermal throttling may occur and will cause the device to intentionally begin to limit the amount of power your application can consume. This will naturally result in slower computations, and will negatively affect frame rate.
Thermal throttling is an important factor to keep in mind when developing mobile VR applications. It is a common issue mainly due to the fact that mobile VR often pushes devices to their maximum capacity. Mobile devices being enclosed in headsets whereas they were designed to be handheld also contributes to increased thermal impact.
Optimizing CPU and GPU processing, limiting network usage and location service usage will all contribute to improving your application’s energy impact. Consider setting Sustained Performance Mode when a predictable and consistent level of device performance over longer periods of time, without thermal throttling, is required. Overall, performance might be lower when this setting is enabled. This setting is based on the Android Sustained Performance API.
Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.