This is the beginning of a journey to learn all about the Gear VR. I am now starting development of products and services for Virtual Reality (VR) with a focus on Oculus Mobile. I may broaden to other mobile or non-mobile systems, including Augmented Reality (AR) systems but for now the focus will be lasered in on the Gear VR (aka Oculus Mobile).
Reflections on Gear VR
I actually created a game on Gear VR for the Oculus Mobile Jam 2015. The game was not at all optimized for Oculus Mobile. At the time I did not have time and I did not even have a Gear until halfway through the competition. I also over-estimated the strength of what mobile could do.
Reading through dev blogs and some specs I realize that development for this device may be closer to my development experience on the Nintendo Game Boy Advance (GBA) or Nintendo Dual Screen (NDS). I even see references to say don’t square root and see support for fixed point math in the Open GL ES SL spec. One thing that is very different, however, is that I never worried about heat when programming for these systems. We could push them to the limit and when we went over, we would just have to step back, fix the problems, and then gaming could resume forever.
These phones seem to have more of a flexible limiting to themselves. We have shaders, that’s cool. And these processors can be pushed quite hard but then they will over heat. Also, we don’t have as much dedicated hardware, or so it seems. On Nintendo systems we could squeeze and not think about the OS too much. On these phones we are warned that Android will steal cycles here and there and even steal the GPU sometimes. So we have to add fuzzy artificial buffers to our stuff. I will do more real development and real testing to see the truth of it.
What has happened thus far
I have spent a lot of time reading through dev blogs, specifications, forum posts and anything I can get my mits on.
Specifically I have been reading through materials on:
- Unity optimizations for mobile
- Light mapping – probes, baking, etc
- Mali GPUs – basic characteristics
- OpenGL ES 3.1 and OpenGL ES SL – I still have a lot more to look through especially in terms of optimizations
- Some Android dev stuff
I have not been able to find details of the hardware I would really like:
- Clock cycles per method in OpenGL ES SL – how much does sin or exp cost? Or is it texture lookups that slaughter performance? Is square root run on something else? Does using fixed point math perform much faster or with less heat?
- Detailed Mali T760 architecture documentation. – I want to know the real strengths and weaknesses of this hardware. Are there other bottlenecks between it and the Exynos processor? Are there faster levels of memory or registers I can put stuff into? If there are 128 uniform variables, how many of those reside on registers that are easily accessed by the cores? Do the cores have some registers they share, do they have local registers? How many? These are the types of things that would help me optimize my shaders and programs in general.
In the end I did just build a basic project and push to the Gear to ensure I have basic working pipelines.
Cube and Cylinder you are always here to welcome us into a new project.
What is next?
- Setup and learn each and every option configurable in Unity projects. The goal is to understand how each affects performance and quality with a focus on mobile and VR.
- Find more about performance of programs and shaders. I’m hoping to find documentation but I may also just do experimentation to find the truth.
- Find more about Mali architecture. I want to know what we really have and how to build content to get the most from it without melting it.
- Wireless content transfer. Find some way to update wirelessly. I have found blogs talk about this.
- Learn the debugging and profiling tools better.
- If I get too exhausted from these low level details then I may start to create fun content anyway.
I am enjoying this journey and I am excited to master this new hardware. By doing so I wish to create great things to help others and to in some way find satisfaction by bringing something of worth to people.