advertisement
Mobile | Release Notes | 135
Release Notes
This section describes changes for each version release.
1.0 Release Notes
This document provides an overview of new features, improvements, and fixes included in the latest version of the Oculus Mobile SDK.
1.0.4
Overview of Major Changes
The VrApi implementation is now distributed through the Oculus System Driver application.
Long-press back button handling (including gaze timer rendering) and recenter-on-mount are now detected and handled directly by VrApi. Applications should no longer implement this logic.
The System Utilities library dependency has been removed and its functionality is now handled directly within
VrApi. Applications which require VrApi only no longer need to link to anything else.
The VrApi Loader is now Java free, further reducing the number of dependencies an application is required to link against.
TimeWarp Debug Graph has been removed. Please use OVRMonitor instead.
For details on migrating to Mobile SDK 1.0.4 from previous versions, see
on page 111.
New Features
• Gaze Cursor Timer is now rendered automatically in VrApi as a TimeWarp Layer.
API Changes
• Back-button long press handling and recenter-on-mount are now handled directly by VrApi. Apps should not implement this logic any longer.
• VrApi now provides an interface for displaying System UIs, returning to Home, and displaying fatal error messages. See VrApi_SystemUtils.h.
• System Level Button Timings are now exposed on the VrApi System Properties interface. See VRAPI_SYS_PROP_BACK_BUTTON_SHORTPRESS_TIME and
VRAPI_SYS_PROP_BACK_BUTTON_DOUBLTAP_TIME.
• A recenter count has been added to the VrApi System Status interface. See
VRAPI_SYS_STATUS_RECENTER_COUNT.
• Applications are no longer responsible for managing the SystemUtils app events and should remove the following function calls:
• SystemActivities_Init
• SystemActivities_Shutdown
• SystemActivities_Update
• SystemActivities_PostUpdate
136 | Release Notes | Mobile
1.0.3
Overview of Major Changes
Multi-view
Mobile SDK 1.0.3 adds multi-view rendering support. Multi-view rendering allows drawing to both eye views simultaneously, significantly reducing driver API overhead. It includes GPU optimizations for geometry processing.
Preliminary testing has shown that multi-view can provide:
• 25-50% reduction in CPU time consumed by the application
• 5% reduction in GPU time on the ARM Mali
• 5%-10% reduction in power draw
Obviously the freed up CPU time could be used to issue more draw calls. However, instead of issuing more draw calls, we recommend that applications maintain the freed up CPU time for use by the driver threads to reduce/eliminate screen tears.
While current driver implementations of multi-view primarily reduce the CPU usage, the GPU usage is not always unaffected. On the Exynos based devices, multi-view not only reduces the CPU load, but slightly reduces the GPU load by only computing the view-independent vertex attributes once for both eyes, instead of separately for each eye.
Even though there are significant savings in CPU time, these savings do not directly translate into a similar reduction in power draw. The power drawn by the CPU is only a fraction of the total power drawn by the device
(which includes the GPU, memory bandwidth, display etc.).
Although all applications will have their unique set of challenges to consider, multi-view should allow most applications to lower the CPU clock frequency (CPU level) which will in turn improve power usage and the thermal envelope. However, this does not help on the Exynos based devices where CPU level 1, 2 and 3 all use the same clock frequency.
Multi-view will not be available on all Gear VR devices until driver and system updates become available.
The current set of supported devices as of the date of this release is:
• S6 / Android M
• S6+ / Android M
• S6 Edge / Android M
• Note 5 / Android M
• Exynos S7 / Android M
• Exynos S7+ / Android M
For detailed instructions on how to structure a native application for multi-view rendering, see
We are working with Unity and Epic to support multi-view in Unity and Unreal Engine.
VrAppInterface
VrAppInterface has been refactored to simplify the interface, support multi-view rendering, and enforce per-frame determinism. We highly recommend updating your VrAppInterface based application to support multi-view. However, even if you are not planning on supporting multi-view, it would be good to adopt the
VrAppInterface changes because they also pave the way for Vulkan support in the future.
VrApi
Mobile | Release Notes | 137
VrAppFramework-based applications now explicitly pass EGL objects to VrApi. Previously, the various VrApi functions had to be called from a thread with a specific EGLContext current. The current EGLContext and
EGLSurface were basically invisible parameters to the VrApi functions. By explicitly passing the necessary EGL objects to the API, there are no threading restrictions.
Volume notifier is now rendered automatically in VrApi as a TimeWarp layer - the application is no longer responsible for generating and displaying this notification. Be sure not to render your own volume interface!
Build process
Various build steps have been moved from the Python build scripts into Gradle.
New Features
• Volume Notifier now rendered automatically in VrApi as a TimeWarp Layer.
• VrAppFramework now supports multi-view rendering path.
• VrAppFramework now uses explicit EGL objects.
• GlTexture now supports RGBA ASTC compressed textures.
API Changes
• VrAppInterface::OneTimeInit and VrAppInterface::NewIntent have been replaced by
VrAppInterface::EnteredVrMode. This function is called right after an application entered VR mode.
• VrAppInterface::OneTimeShutdown has been removed in favor of moving shutdown code to the destructor of the VrAppInterface derived class.
• VrAppInterface::LeavingVrMode is now called right before the application is about to leave VR mode.
• VrAppInterface::Frame now takes an ovFrameInput structure and returns an ovrFrameResult structure.
• VrAppInterface::OnKeyEvent was removed. Key events are now explicitly handled in VrAppInterface::Frame.
• VrApi ovrModeParmFlags now provide VRAPI_MODE_FLAG_NATIVE_WINDOW for specifying the
ANativeWindow explicitly.
Bug Fixes
• Fixed docked / mounted queries to be accurate without requiring an initial event.
• Sample apps no longer prompt for an SD card on devices that don’t support external memory.
Known Issues
• When converting your app to be multi-view compliant, ensure that your System Activities version is at least
1.0.3.1 or you will receive a required system update message.
1.0.0.1
Overview of Major Changes
This minor patch release fixes problems with OS X development and splits Oculus Remote Monitor from the
Mobile SDK to make it easier to access for developers using a third-party game engine.
New Features
• Oculus Remote Monitor
• VR Developer Mode is no longer required if you have System Activities 1.0.2 or greater and an app built with Oculus Mobile SDK 1.0 or greater.
138 | Release Notes | Mobile
• Exposed experimental layer texel density and complexity visualizers (supported by apps built with Oculus
Mobile SDK 1.0 or later).
• Now available as a separate downloadable package from the full Mobile SDK download.
Bug Fixes
• Fixed OS X “No such file or directory” build problem.
• Oculus Remote Monitor
• Improved network stability on Windows
• Increased VR thread stack size.
1.0.0
Overview of Major Changes
VrApi is now dynamically loaded from a separate APK, allowing it to be updated without requiring developers to recompile applications. This will allow us to fix bugs, support new devices, and add new OS versions without disrupting development.
VrApi now presents the core minimal API for VR rendering. System-level functionality not necessary for VR rendering has been moved to a VrAppSupport/SystemUtils library. This library primarily deals with loading, and with receiving events from the Universal Menu.
Various OpenGL objects may now be explicitly passed to the VrApi. In this case, functions such as vrapi_EnterVrMode and vrapi_SubmitFrame do not need to be called from a thread with a specific
OpenGL context current.
All native applications are now built and developed using Gradle and Android Studio instead of ANT and
Eclipse. It is important to note that while the command-line Gradle build path is mature, Android Studio support for native development should still be considered experimental. Feedback on our
developer forums
is appreciated!
Important Change to SystemActivities
The VrApi implementation is now deployed as part of SystemActivities, which is automatically updated. When updating to the latest SDK, it is important to make sure the device is online to allow the SystemActivities to be automatically updated. If for some reason the SystemActivities is not up to date when launching a new application, you may get the message “Oculus updates needed.”
To allow the application to run, the
SystemActivities must be updated.
If the auto-update function has not delivered the latest SystemActivities to your device, please ensure that you are connected to a working Wi-Fi network. It may take up to 24 hours for the update to trigger, so please be patient. If your development schedule requires a timely update, you may download the SystemActivities APK
from this location
as temporary relief during this transition period. Future updates should always be processed by the automatic update system on the Gear VR platform.
New Features
• VrApi now dynamically loads from a separate APK.
• Various OpenGL objects may now be explicitly passed to VrApi, lifting some threading restrictions.
• Added support for Gradle and experimental support for Android Studio.
• Added support for the Samsung Galaxy S6 Edge+ and Note 5.
• TimeWarp Debug Graph may now be toggled on and off during runtime via VrApi Frame flags.
advertisement
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Related manuals
advertisement
Table of contents
- 3 Contents
- 6 Mobile SDK Getting Started Guide
- 6 Getting Started with the SDK
- 7 Mobile Development with Unity and Unreal
- 7 Mobile Development with Unity
- 8 Mobile Development with Unreal
- 9 System and Hardware Requirements
- 11 Device Setup
- 12 Android Development Software Setup for Windows
- 13 Java Development Kit (JDK)
- 13 Android Studio Installation
- 13 Standalone Android SDK Tools
- 14 Installing Additional Packages and Tools
- 14 Android Native Development Kit (NDK)
- 15 Gradle
- 15 Setting up your System to Detect your Android Device
- 15 Android Development Software Setup for Mac OS X
- 16 Xcode
- 16 Java Development Kit (JDK)
- 16 Android Studio Installation
- 16 Standalone Android SDK Tools
- 17 Installing Additional Packages and Tools
- 17 Android Native Development Kit (NDK)
- 18 Gradle
- 20 Mobile Development Basics
- 20 Oculus Signature File (osig) and Application Signing
- 21 Developer Mode: Running Apps Outside of the Gear VR Headset
- 21 Universal Menu and Reserved User Interactions
- 22 Reserved User Interactions
- 22 Universal Menu
- 23 Android Studio Basics
- 27 Native Development Overview
- 27 Native Source Code
- 28 Native Samples
- 29 Android Manifest Settings
- 30 Native Engine Integration
- 30 VrApi
- 30 Lifecycle and Rendering
- 33 Frame Timing
- 33 Latency Controls
- 35 Asynchronous TimeWarp
- 37 TimeWarp Minimum Vsyncs
- 37 Consequences of not rendering at 60 FPS
- 38 Power Management
- 39 Fixed Clock Level API
- 39 Power Management and Performance
- 40 Power State Notification and Mitigation Strategy
- 41 Advanced Rendering
- 41 Multi-View
- 46 Native Application Framework
- 46 Creating New Apps with the Framework Template
- 47 UI and Input Handling
- 48 Native SoundEffectContext
- 49 Runtime Threads
- 50 Other Native Libraries
- 51 Media and Assets
- 51 Mobile VR Media Overview
- 51 Panoramic Stills
- 51 Panoramic Videos
- 52 Movies on Screens
- 52 Movie Meta-data
- 53 Oculus 360 Photos and Videos Meta-data
- 53 Media Locations
- 54 Native VR Media Applications
- 56 Models
- 56 Oculus Cinema Theater Creation
- 56 Detailed Instructions
- 62 Theater Design Principles
- 62 FBX Converter
- 63 Overview
- 63 Coordinate System
- 64 Materials
- 65 Animations
- 65 Tags
- 65 Command-Line Interface
- 66 Options
- 67 Batch Execution
- 67 Troubleshooting
- 67 Optimization
- 67 Reducing Draw Calls
- 68 Reducing Vertices
- 68 Reducing Overdraw
- 70 Mobile Best Practices
- 70 Rendering Guidelines
- 70 Mobile VR Performance
- 71 Frame Rate
- 71 Scenes
- 72 Resolution
- 72 User Interface Guidelines
- 72 Stereoscopic UI Rendering
- 72 The Infinity Problem
- 73 Depth In-Depth
- 73 Gazing Into Virtual Reality
- 74 Adreno Hardware Profile
- 76 Testing and Troubleshooting
- 76 Tools and Procedures
- 76 Android System Properties and Local Preferences
- 79 Screenshot and Video Capture
- 81 Oculus Remote Monitor and VrCapture
- 81 VrCapture
- 83 Oculus Remote Monitor
- 83 Setup
- 84 Basic Usage
- 92 Using Oculus Remote Monitor to Identify Common Issues
- 96 Android Debugging
- 97 Adb
- 98 Logcat
- 99 Using Logcat to Determine the Cause of a Crash
- 99 Getting a Better Stack Trace
- 100 Application Performance Analysis
- 100 Basic Performance Stats through Logcat
- 101 SysTrace
- 102 NDK Profiler
- 103 Rendering Performance: Tracer for OpenGL ES
- 105 Android Studio Native Debugging
- 105 Native Debugging with Android Studio
- 108 Native Debugging with ndk-gdb
- 111 Mobile Native SDK Migration Guide
- 111 Migrating to Mobile SDK 1.0.4
- 113 Migrating to Mobile SDK 1.0.3
- 121 Migrating to Mobile SDK 1.0.0
- 124 Migrating to Mobile SDK 0.6.2.0
- 126 Migrating to Mobile SDK 0.6.1.0
- 128 Migrating to Mobile SDK 0.6.0
- 135 Release Notes
- 135 1.0 Release Notes
- 139 0.6 Release Notes
- 145 0.5 Release Notes
- 149 0.4 Release Notes
- 152 System Activities/VrApi Release Notes
- 152 1.11.x Release Notes
- 152 1.10.x Release Notes
- 153 1.0.x Release Notes
- 157 System Driver Release Notes
- 157 1.5.x Release Notes
- 157 1.0.x Release Notes
- 158 Oculus Remote Monitor Release Notes
- 158 1.x Release Notes