Adaptation Guide
If your application was previously developed based on other XR platforms and you expect to adapt it to YVR 2 or Play For Dream MR devices, the following information may be helpful to you.
Feature Description
For common XR features, the current SDK has provided relevant support:
- Support for URP rendering pipeline
- The SDK is based on Unity XR development, and cross-platform Unity XR APIs can be used.
- Compatibility with Unity official XR features such as Unity Interaction Toolkit and Unity Hands
- Support for AR Foundation, including features such as Camera, Mesh, Plane Detection, and Image Tracking
We provide enterprise users with functions for system configuration and information query, as well as solutions for large VR/MR spaces, including:
- VR Large Space Map Scanning and Positioning Solution
- MR Large Space Marker-based Positioning Solution
- Camera APIs, to obtain information including VST Camera and tracking Camera.
- Devices APIs, used to configure and query device information.
- Tobii Ocumen solution 120hz data acquisition
- For enterprise features, please refer to Enterprise Developer Documentation
- You can get minimal examples of each feature from Samples
Performance Differences
In terms of computing performance, YVR 2 and Play For Dream MR use different chips and recommended values for default rendering resolution. The comparison with other XR devices on the market is as follows:
| Device | Chipset | Default Eye Buffer Resolution |
|---|---|---|
| YVR 2 | Snapdragon XR2 Gen 1 | 1600x1600 |
| Play For Dream MR | Snapdragon XR2+ Gen 2 | 2880x2664 |
| Pico 4 | Snapdragon XR2 Gen 1 | 1504x1504 |
| Pico 4 Ultra | Snapdragon XR2 Gen 2 | 1920x1920 |
| Quest 2 | Snapdragon XR2 Gen 1 | 1440x1584 |
| Quest 3 | Snapdragon XR2 Gen 2 | 1680x1760 |
| Apple Vision Pro | Apple R1 + M2 | 1920x1824 |
Tip
For information on devices from various platforms, please refer to the corresponding official documentation. Due to the use of foveated rendering technology, the subjective rendering experience of Apple Vision Pro may differ from the Eye Buffer resolution read by the software.
- For YVR 2 devices, its rendering resolution is similar to Pico 4 and Quest 2 with the same chipset, so there are usually no major problems when porting applications.
- For Play For Dream MR devices, although the chipset used is slightly better than that of Quest 3 and Pico 4 Ultra, there is a large difference in rendering resolution (about 1.7 times that of Quest3, about 1.5 times that of Pico 4 Ultra, and 1.5 times that of Apple Vision Pro). Therefore, GPU Bound problems may be encountered when porting applications.
Porting from Pico / Quest Platform
If your application was previously developed on the Pico / Quest platform, there will not be much difference in CPU performance between YVR 2 and Play For Dream MR, but you may encounter some problems in terms of GPU.
If your application has a heavy GPU load on Pico / Quest (80%+ GPU utilization), then it is very likely to encounter GPU Bound problems on Play For Dream MR. At this time, there are usually two solutions:
- Adjust the Eye Buffer resolution to a level similar to other XR platforms. At this time, the GPU Bound problem will be alleviated, but the display effect will also decrease accordingly. However, even if the resolution is similar to other XR platforms, Play For Dream MR devices will still provide users with a better visual experience than other XR platforms due to their excellent screens and optics. For information on adjusting the rendering resolution, see Eye Buffer Resolution.
- Use Quad Views rendering mode (a foveated rendering solution) to solve the GPU Bound problem. Under the default resolution configuration of Quad Views rendering mode, it only needs about 55% of the pixels of the default Play For Dream MR to provide 4K-level PPD in the user's gaze area, that is, using lower GPU overhead to obtain higher display effects.
- It should be noted that enterprise devices do not enable foveated rendering by default. It can be enabled in
Settings -> Display -> Advanced Options.
- It should be noted that enterprise devices do not enable foveated rendering by default. It can be enabled in
Porting from Apple Vision Pro Platform
If your application is developed on the Apple Vision Pro (hereinafter referred to as AVP) platform and needs to be ported to Play For Dream MR devices, in addition to the aforementioned differences in default rendering resolution, there are also large differences in the GPUs of AVP and Play For Dream MR devices. AVP uses a desktop-level M2 chip, and the accompanying R1 chip can reduce the overhead of Pass-Through rendering. Play For Dream MR devices use a mobile-level Snapdragon XR2+ Gen 2 chip. Even if its performance is strong on the mobile side, it is undeniable that its GPU performance is still significantly behind AVP's M2 chip.
Therefore, when porting applications, it is very likely to encounter GPU Bound problems. In addition to the aforementioned Eye Buffer resolution adjustment and Quad Views rendering mode, some performance optimization of the project is also required.
Performance Optimization
The following optimization suggestions can help you achieve better performance on Play For Dream MR devices. Most of the following suggestions focus on the GPU side.
- Use URP rendering pipeline
- Set the application to 72 FPS, which will significantly reduce the overhead of the system Compositor
- Use Forward rendering mode. In Universal Renderer Asset, select
Forwardrendering mode inRendering-Rendering Path, and setDepth Priming Modeto Disable - Avoid using post-processing. You can disable the
Post Processingoption in Universal Renderer Asset - Use MSAA for anti-aliasing: Anti-aliasing methods such as TAA that require multi-frame accumulation will increase the burden on the GPU, so it is recommended to use MSAA for anti-aliasing. 2x MSAA usually has a good balance between performance and effect.
- Disable Depth Texture and Opaque Texture: In Universal Renderer Asset, disable the
Depth TextureandOpaque Textureoptions, which can reduce an additional copy operation. - Disable SSAO: In URP, SSAO requires an additional Depth Priming Path and two blur passes to reduce noise, which will increase the burden on the GPU. In Universal Renderer Asset, make sure that Screen Space Ambient Occlusion Features is not enabled under Renderer Features
- Disable HDR: HDR rendering will significantly increase GPU bandwidth consumption. In Universal Pipeline Asset, find Quality-HDR and make sure it is disabled.
- Disable Decal: On the XR side, the Decal effect needs to use a depth map, which will increase the burden on the GPU. If it is a terrain effect, it is recommended to make it directly in the art assets. If it is for runtime shadows, it is recommended to implement shadows through Blob Shadow.
- Use ASTC texture compression: Ensure that the application's textures are compressed with ASTC, which can reduce GPU bandwidth consumption. It is recommended to use ASTC 6x6 compression format.
- Use 32x32 resolution for solid color or textures with very little content. High resolution should be strictly avoided for solid color textures.
- Enable Mipmap for textures to reduce GPU bandwidth consumption
- Reduce the use of Lit Shader: Lit Shader usually requires more GPU computing resources, and lighting effects should be baked as much as possible. For inconspicuous or relatively unimportant content, Simple Lit Shader can be used to achieve real-time lighting effects.
- Optimize art assets: It is recommended to keep the number of on-screen triangles below 200,000.
- When performing final performance testing, please disable the Performance Profiling Tool function, as this function will also increase the burden on the GPU.