6 Performance Optimization Guide

6.1 Performance optimization guidelines

6.1.1 Performance analyzing toolkits

Contents publishing on Pico Store have a criteria of maintaining stable 72 FPS for better VR experiences. To accurately obtain in-app frame rate fluctuations and rendering interval of each frame, it’s suggested to use appropriate performance analyzing toolkits, including Epic Unreal profiler, Unreal Insight, Pico Metrics Tool and Snapdragon Profiler

  1. Unreal Profiler

Unreal Profiler can collect and monitor performance measures for Pico applications, wired and wireless. Detailed instructions can be found from Epic Manual: https://docs.unrealengine.com/4.27/zh-CN/TestingAndOptimization/PerformanceAndProfiling/Profiler/

_images/6.1.1.png

Figure 6.1 Unreal Profiler

  1. Unreal Insight

Unreal Insights is similar to Unreal Profiler but more robust and efficient. It’s applicable to connect Pico devices to PC via Type-C cables and establish TCP transmission for realtime monitoring and locate root cause of performance bottlenecks. Details can be found here: https://docs.unrealengine.com/4.27/zh-CN/TestingAndOptimization/PerformanceAndProfiling/UnrealInsights/Overview/

_images/6.1.2.png

Figure 6.2 Unreal Insight

  1. Metrics Tool

Please refer to chapter 10.1 Metrics Tool.

  1. Snapdragon Profiler

Please refer to chapter 10.2 Snapdragon Profiler.

6.1.2 Art Direction

  1. Style versus Realism

It’s suggested to use stylized art designs considering All-in-one device performance. Generally speaking, realistic art designs bring technical pressure during development.

  1. Triangle Counts

As a guideline, we suggest developers target less than 1000,000 triangles on Pico All-in-one devices.

  1. Cloth and Hair/Fur

Real-time cloth physics is expensive. It’s suggested to go with a slightly stylized approach and instead utilize sculpted, textured hair shells, which perform much better.

  1. Dynamic shadows

Dynamic shadows are a feature that’s often taken for granted, but they can have a huge impact on performance. Dynamic shadows by their nature need to be calculated every frame, putting a large burden on the CPU and GPU, and often require re-rendering of the scene many times within a single frame.

  1. Full Screen Effects

Full screen effects, such as motion blur, per-pixel outlining, real-time ambient occlusion, tone mapping, and bloom, require a lot of pixel throughput that can prove challenging for Pico all-in-one VR hardware.

  1. Dense Foliage

Foliage has a lot of the same inherent challenges as hair and fur. It’s suggested to avoid usage of dense foliage.

6.2 Performance optimization methods on Pico devices

Examples of optimization methods:

  • Reduce the number of fixed points on model faces when guaranteed to be displayed
  • Share the material and animation
  • Use a compressed texture format
  • Use as few lighting effects as possible
  • Use static batch processing
  • Optimize scripts to reduce complexity. Limit memory usage, CPU usage and other resources consumption.

More suggestions can be found from Epic official documents and Chapter 11

6.3 Advanced rendering techniques

6.3.1 Foveated Rendering

Foveated rendering optimizes the ability to render scenes by providing high resolution for the center of the field of view, and greatly reducing peripheral views the details of the scene.

For more information, see: Foveated Rendering in chapter 8.

6.3.2 MultiView

Based on the native function of Unreal MultiView, stereo rendering is implemented with one camera, which reduces DrawCall and mask culling by half compared with using two cameras, and significantly improves the frame rate of complex scenes.

For more information, see: MultiView in chapter 8.

6.3.3 VR Compositor Layers

VR Compositor Layers is more useful when rendering messages, text, videos which are used as “Focus of the Scene”. Meanwhile it can also be used for simple scenes and backgrounds.

For more information, see: StereoLayer in chapter 8.