At GDC 2018 earlier this year, we launched our latest technical graphics demo focusing on our PowerVR Series8XE range of GPUs. From the beginning of the project, we set out to show exactly how much our PowerVR Series8XE range of GPUs was capable of, despite its highly compact, low-area design. The range includes cores such as the PowerVR GE8300 (four pixels/clock, 64 FLOPS/clock, and PowerVR GE8100 (one pixel/clock, 32 FLOPS/clock). These have seen real traction in the cost-sensitive areas of the market, where traditionally it’s been considered not possible to run high-end simulations and effects. However, thanks to the combination of Vulkan and our Rogue architecture we set out to show that this is no longer the case. Devices featuring these cores in the market include the Acer Iconia One 10 and Lenovo Tab 7 Essential tablets, HTC Desire 12 and Huawei Honor Play 7 smartphones, and automotive parts such as the Renesas R-Car D3, among many others.
The Rogue Swarm demo is a small, but significant showcase of what can be achieved with these low-area, but fully Vulkan® 1.1 conformant, GPUs. It features a high-speed, high-energy, spaceship chase through an asteroid belt. The lead ship is chased by a “swarm” of smaller enemy ships, firing lasers and trying to stop the lead ship from escaping. The entire demo is dynamic with the asteroids, chasing ships and lasers all procedural and therefore, slightly different every time.
Showcasing Vulkan features
The demo makes full use of Vulkan, from the graphical and the compute side. The swarm of ships chasing the lead ship all form part of the simulation, which includes the main ship, asteroids and laser fire. This simulation executes a flocking algorithm which gives the chasing ships their swarming behaviour as well as simulating their laser fire, avoidance of each other, avoidance of asteroids and their chasing of the main ship.
All of these elements are computed in a highly complex Vulkan compute shader on the GPU. In Vulkan, this works as a command buffer that is executed every frame and updates the locations of the various elements in the simulation. This command buffer doesn’t change frame to frame so takes full advantage of Vulkan’s ability to pre-record buffers and execute them over and over again with updated input variables. In the past, this kind of simulation may have had to run on the CPU, limiting it to only high-end platforms. With Vulkan, it’s now possible to run these advanced simulations with incredible efficiency on the GPU delivering significant benefits in the form of increased application performance and reduced CPU overhead.
On the rendering side, after the GPU has updated the simulation it begins rendering the various elements in the frame. The ship meshes are submitted only once and instanced rendering creates as many of the chasing ships as needed for the scene. Textures are all optimised for size and compressed with PVRTC to ensure that the bandwidth requirement of the application is as small as possible. This includes our deep space background, which is an incredible, high-quality cube map texture created by our in-house art team.
Speaking of art, a lot of what we think makes this demo so compelling is the combination of a great technical showcase with some incredible artwork in the ships, planets and backgrounds created by our team. It really goes to show that even with incredibly area-efficient GPUs it’s still possible to create something visually impressive.
The specific device we developed this on was the Acer Iconia One 10 FHD, a great little tablet with a PowerVR GE8300 GPU and a 10.1in 1,920 x 1,200 display.
In the early stages of development, we made great use of the Imagination SDK to get a test application running on the device in very little time. The SDK includes OpenGL ES and Vulkan example applications and we made great use of the Vulkan-Compute Particle Simulation which served as a code base.
Initially, we focussed on creating a flocking algorithm in a Vulkan compute shader and passing that through to the rendering pipeline. One of the great benefits of this approach is that the simulation stays in the GPU memory throughout the render, further reducing bandwidth and making this approach ideal for cost-sensitive devices.
With this working, we were able to focus on tuning the performance of the compute and fragment shaders with a combination of our SDK ShaderEditor tool for offline profiling and our PVRTune application for on device performance metrics and profiling. These tools are incredibly useful, with Tune being able to work on non-rooted consumer devices, unlike similar tools from other vendors, which makes it ideal for app makers targeting real-world platforms.
With the bulk of the technical features in place, our art team came in creating the stunning assets that make the demo really stand out. The high-resolution planet, asteroid textures and meshes were all created in-house with the textures compressed with our SDK PVRTexTool. This tool enables easy texture compression for mobile developers to a variety of formats including our own PVRTC.
We’re very proud of the resulting demo and we received great feedback from developers at GDC18. We’ve since run the app on a PowerVR GE8100, which can be found in devices such as the HTC Desire 12, Huawei Honor Play 7 and Ulefone Armour X. The demo runs really well on these devices, with a high, smooth framerate with no changes needed at all. We’ve since launched our PowerVR Series 9XE range of GPUs, building on the great progress made in Series8XE. Many of these cores are now with our silicon partners and on the way to consumer devices soon, where the full Vulkan support will again mean apps like Rogue Swarm will run excellently.
Ultimately, from applications like this and from the feedback we receive from around the industry it’s easy to see why Vulkan adoption is accelerating as fast as it is, truly making good on its “write once, run fast, run anywhere”, promise.