Mobile device performance continues to grow each year, and to the delight of users, VR has become faster, more mobile, and more accessible. Despite this, optimizing mobile device graphics remains a challenging application development area.
This issue is particularly evident in mobile VR devices. Compared to mobile phones, we must ensure twice the number of frames per second (FPS) for two separate screens, whose resolution continues to increase.
During the InnerVR project, our team faced a technical challenge: showcasing high-quality open locations. This required rendering detailed environments and ensuring smooth performance on mobile devices.
In this article, we will take you through our experience of overcoming this challenge.
We:
- reveal the techniques we used
- introduce the Impostor tool we developed to simplify distant objects using image-based representations.
Well, let's get to the point.
InnerVR meditation game developed by the Onix team
Current Challenges in Mobile VR Graphics Optimization
How Onix Optimized VR Graphics for Mobile Devices: Insights from Our Project
How the Impostor Tool Boosted Our VR Development
Summing Up
FAQ
Current Challenges in Mobile VR Graphics Optimization
To ensure we're all on the same page, let's first explore the current challenges in optimizing graphics for mobile VR. This will give us a clear understanding of what we're dealing with.
High FPS requirement for VR
Mobile VR devices must render content at a much higher frame rate than typical mobile applications. For VR to be smooth and immersive, it requires at least 90 FPS, compared to the 30-60 FPS standard for mobile games.
Additionally, VR must render this high frame rate on two separate screens, one for each eye, which doubles the GPU's workload. This increased demand is further compounded by the steadily rising resolution of VR displays, which now often surpasses 2K per eye.
Performance constraints
Mobile VR devices have limited processing power compared to high-end PCs. Balancing graphical fidelity with maintaining a consistent frame rate is essential for preventing motion sickness and ensuring a smooth VR experience.
Texture and asset compression
Mobile devices have limited storage and memory capacities. Compressing textures and other assets without sacrificing visual quality is crucial for optimizing performance and minimizing load times.
Rising user expectations
As VR technology becomes more widespread, users expect increasingly higher levels of graphical fidelity. This growth drives the need for more sophisticated and visually appealing VR experiences, putting additional pressure on developers to optimize their applications effectively.
How Onix Optimized VR Graphics for Mobile Devices: Insights from Our Project
Recently, the Onix team worked on the InnerVR project. This is a soothing meditation and relaxation VR game tailored for Oculus Quest 2, created to support users in leading a more mindful life.
During the development of InnerVR, our team faced a technical challenge: open location quality requirements. We needed to showcase expansive, open locations with the highest possible visual fidelity.
The camera's field of view (in red), blocked by mountains, viewed from above.
Creating large, open environments for VR presents unique challenges. Typically, developers use visual blocks and large environmental elements, such as mountains and buildings, to limit the number of 3D models in view and maintain performance.
However, for the InnerVR project, we needed to ensure that users could view extensive landscapes and distant objects with high fidelity without compromising performance.
We knew that the ability to walk around the locations would be limited to a small area, and this condition allowed us to develop an optimization tool for levels – the Impostor.
This experience will be invaluable for teams aiming to develop a VR meditation apps, ensuring high-quality visuals without sacrificing performance for a serene and immersive user experience.
Read also How to Hire Developers for VR and AR Projects
The idea behind the Impostor
The idea behind our optimization tool, the Impostor, is straightforward:
Suppose the user cannot get close to an object in the application. In that case, there is visually no significant difference between a volumetric 3D model and an image of that 3D model on a plane.
This technique reduces the number of polygons that need to be rendered, significantly improving performance.
An example of the Impostor's output
Similar technologies have long been used in games as part of Level of Detail (LOD) systems. The lowest LOD level often represents a 3D model as a simple image used for objects at great distances without discernible details.
In VR, however, our approach was to use this level of detail more extensively to handle the increased demands of rendering high-resolution environments.
An example of LOD versions of a single object: the higher the LOD, the lower the detail.
Implementation process
In our case, the lowest level of detail was the main player.
To gain full control over the model's angle, lighting, and materials, we created a tool that is highly user-friendly for Level designers and automates many routine tasks:
1. Initially, the designer assembles the level from game assets without worrying about optimization.
2. Knowing where the user can move, the designer selects models and objects to replace with impostors.
By selecting one or several models and pressing a single button, the designer can replace millions of polygons with two polygons and an image into which the model with all lighting and material effects is instantly baked.
Below you can see an example of the Impostor's output in our project, InnerVR. On the left are the real objects, and on the right are the objects after the Impostor's processing.
An example of the Impostor's output
3. The number of textures in a project also affects performance. Since device memory is limited, we devised an impostor packer.
By selecting several impostors, the plugin combines them into a single image and replaces the old planes with new ones, mapped correctly. Designers can choose the final texture resolution and adjust settings until the desired result is achieved, further optimizing memory usage.
An example of a packed texture atlas
Here is a quick overview of how to use Impostor:
How the Impostor Tool Boosted Our VR Development
- Improved performance
It reduces the number of polygons rendered, ensuring smoother gameplay and higher frame rates in VR.
- Enhanced visual quality
Despite polygon reduction, it maintains realistic lighting, shadows, and materials for a visually rich experience.
- User-friendly design
It simplifies the process for designers, allowing them to focus on creativity without worrying about optimization.
- Flexibility
Changes are reversible, preserving original models for easy editing and adjustments.
- Optimized texture management
It consolidates textures, optimizing memory usage and enhancing overall performance.
- Resource efficiency
Lightening the computational load frees up resources for more innovative features and effects.
- Supports detailed environments
Enables the creation of expansive, detailed environments on mobile platforms without sacrificing performance.
Below you can see the results we achieved using Impostor:
Summing Up
The Impostor tool has been instrumental in optimizing our VR projects, enabling us to deliver high-quality, immersive experiences on mobile devices. Its ability to improve performance, enhance visual fidelity, and streamline the design process makes it an invaluable asset in our development toolkit.
Whether you need assistance optimizing your VR graphics for mobile devices or have any other VR development needs, feel free to contact us!
FAQ
How does the Impostor tool improve performance?
The Impostor tool reduces the number of polygons rendered by replacing complex 3D models with impostors (2D representations) for distant objects. This results in smoother gameplay and higher frame rates, which are crucial for immersive VR experiences.
Can the Impostor tool be applied to other types of applications beyond VR?
While primarily designed for VR optimization, the principles of the Impostor tool, such as reducing polygon counts and optimizing textures, can be adapted for various types of 3D applications where performance optimization is critical.
Can the Impostor tool maintain visual quality despite reducing polygon count?
The Impostor tool ensures that lighting, shadows, and material effects are accurately represented in the impostor images. This allows for realistic visuals without sacrificing performance.
How does the Impostor tool handle texture management?
The Impostor tool includes a feature called the Impostor Packer, which combines multiple impostors into a single texture. This optimization reduces memory usage and improves overall performance on mobile devices.
Never miss a new blog post from us!
Join us now and get your FREE copy of "Software Development Cost Estimation"!
This pricing guide is created to enhance transparency, empower you to make well-informed decisions, and alleviate any confusion associated with pricing. In this guide, you'll find:
Factors influencing pricing
Pricing by product
Pricing by engagement type
Price list for standard engagements
Customization options and pricing