May 6, 2015
Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries.
“I need your help, Prometheus,” says the titan in Godfire: Rise of Prometheus, sending our hero into a world of hideous, mythical beasts and gruesome monsters to steal the Godfire Spark. And if you had Unreal Engine and a Snapdragon 805 commercial device with Adreno™ 420 GPU in your arsenal, you’d step in right alongside of him.
Vivid Games has released an updated version of its acclaimed title, enhanced for Snapdragon 805 and now available on Google Play. The enhanced update, developed in Unreal Engine, showcases hardware tessellation capabilities in the Adreno 420 GPU on top of the standard OpenGL ES 3.1 pipeline.
Comparison showcasing the tessellation with displacement mapping turned on (left-hand side) and off (right-hand side), visible on the ground.
Vivid modified Unreal Engine source code to implement several advanced graphics features specifically for the most powerful Snapdragon processors used in commercial devices like the Nexus 6. Here’s a look under the hood.
Graphics worth stealing fire for
Vivid is a prominent, independent European development studio in Poland. Since its founding in 2006, Vivid has built relationships in mobile and digital game markets and with animation studios such as Platige Image, with whom they collaborated on Godfire. The opportunity to work with Qualcomm Technologies Inc. (QTI) on the newly commercial Adreno 420 GPU allowed Vivid to implement several features of Open GL ES 3.1 and Android Extension Pack within Unreal Engine on mobile:
- Tessellation with displacement mapping (GL_EXT_tessellation_shader) – Vivid added displacement maps for terrain and other inorganic props such as boulders and columns, with hard edges and relatively flat faces.
- Geometry shader (GL_EXT_geometry_shader) – Vivid added this shader to compensate for the lack of wireframe render mode in Open GL ES.
- Sub-pixel Morphological Antialiasing (SMAA) – This filter detects edges in a rendered image and classifies edge crossings into various shapes, using a precomputed table with a coverage value for each shape.
- Depth of field, bloom, radial blur and distortion – The extra processing power of the Adreno 420 GPU allowed Vivid to use these Unreal Engine effects simultaneously.
- Load-time optimizations – The Adreno 420 supports the GL_OES_get_program_binary extension, so Vivid implemented caching of binaries after a shader variation is compiled for the first time. This shortened the time it takes Unreal Engine to load all shader variations from ~95 seconds to ~18 seconds.
Unreal Engine is the go-to development environment for graphics this intensive, but some of these features were not yet available for mobile when Vivid first began working on the enhanced version of the game for Snapdragon 805. Vivid implemented them from the console branch of Unreal Engine to the mobile branch and enabled them on Snapdragon.
Graphics tools for development
Besides working in Unreal Engine, Vivid used several tools from QTI to get the most out of the Adreno 420’s DX11.2 programmable pipeline in this OpenGL ES application. Below are some that could also be useful for you:
- The Adreno SDK contains all the tools, libraries, samples, documentation and tutorials for taking advantage of the Adreno GPU.
- Adreno Profiler is a graphics profiling tool. It gave Vivid’s engineers real-time information on GPU operations while they were developing Godfire. It allowed them to dynamically analyze pieces of rendered frames and send shader changes to the test device in real time, shortening the development cycle.
- Snapdragon Debugger for Visual Studio is an Android NDK Debugger designed to help ease the transition for developers like Vivid who are coming from console and PC game development into the world of building games for mobile. Working entirely in Visual Studio, the engineers are able to debug native C code in real time on an Android device connected to their PC.
These tools facilitate graphics development on devices powered by Snapdragon.
You can install the game to a device powered by the Snapdragon 805 (like the Nexus 6) and start helping Prometheus right away.
Meanwhile, the tools I’ve mentioned are available at no extra charge to registered QDN developers. Have a look at Open GL ES 3.1 and Android Extension Pack samples in the latest Adreno SDK and try Adreno Profiler on that Snapdragon device in your pocket. If you already have a Visual Studio project and are planning to bring it on Android, download our latest tool Snapdragon Debugger for Visual Studio.
We like to enable technology through content. If you think your apps, games and graphics will help us push the Adreno envelope a little further, get in touch with us through the Adreno support forum.