Soft Kitty: An overview of the latest OpenGL ES 3.0 technical demo from Imagination

Fur effects have traditionally presented a significant challenge in real time graphics. The latest desktop techniques employ Direct3D 11 tessellation to dynamically create hundreds of thousands of geometric hair follicles or fur strands on the fly.

On mobile platforms, developers must make do with a far more restrained performance budget and significantly reduced memory bandwidth. To compound this, mobile devices are increasingly matching or surpassing the resolutions found on desktop systems.

SoftKitty OpenGL ES 3.0 demo - PowerVR RogueSoft Kitty can be seen running on PowerVR Rogue GPUs

In spite of this, our new Soft Kitty OpenGL ES 3.0 demo shows that, with our latest PowerVR Series6 GPUs, it is possible to render animated fur covered characters in real time on mobile devices. The final demo runs at >30fps at resolutions higher than Full HD driven by a PowerVR Rogue GPU.

SoftKitty OpenGL ES 3.0 demo - PowerVR RogueThe cat alone features close to 200,000 triangles

It features a furry cat, playfully chasing a laser pointer through a room in a rustic European house.

Technical Features

The demo makes use of OpenGL ES 3.0 transform feedback and instancing to make a real-time shell-fur effect possible on mobile.

Both the cat and the environment are lit with a physically based shading model and cast soft shadows into their surroundings. Every shell of the cat is lit in real time; however, the environment uses pre-computed texture maps. The character animation is performed in a transform feedback pass, where the base cat mesh is skinned with 12 bones affecting each vertex. The output is then rendered with instancing and a shell texture, which creates the fur effect.

The use of transform feedback allows the application to calculate the skinned positions of the mesh once and then reuse the positions for every shell. Combining this with instancing means the output only has to be transferred to the GPU once where the shell offset is then calculated in the vertex shader.  The high bone-per-vertex count has enabled a large amount of detail to be maintained in the real time model, but required the use of a Uniform Buffer Object (new in OpenGL ES 3.0) to pass all the data into the transform feedback shader.

PVRShell0286Soft Kitty uses transform feedback and instancing, both features of OpenGL ES 3.0

In keeping with the pop culture reference in the name of the demo, the portrait behind the box is that of physicist Erwin Schrödinger, whose famous thought experiment was an illustration of the principle of superposition, in quantum theory.

PVRShell0316A look at the wireframe view of the cat model

Development Challenges

Soft Kitty started out as a very modest experiment into developing a shell fur effect for mobile. The large amount of blending required is a challenge for many mobile graphics architectures. Despite this, we wanted to demonstrate that PowerVR Series6 GPUs can maintain high performance even when a large amount of alpha blending is required.

Cat FurInitial proof of concept for the demo

After our initial proof of concept experiments illustrated above, we established that we could create a convincing static fur effect on a model. We began planning a scene around an animated cat. Integrating the fur and animated cat character proved to be a significant technical challenge.

Using a basic animated model, we began to develop some optimisations for rendering animated characters with fur. The use of transform feedback and instancing was introduced at this stage and continually refined and improved throughout development.

The final animated model we subsequently used was originally designed for offline rendering and as such has a high polygon count. The animation utilised a large number of bones per vertex to perform the skinning. We quickly established that using standard four bone per-vertex skinning would not be sufficient, as it created deformities around the tail and back. To combat this we separated the animation data from the model and created a custom 12 bone per-vertex skinning system.

Creating this system proved to be a challenge in several areas: from initially exporting the data from the modelling package into a custom storage format, loading it into the demo, reintegrating it with the mesh data, and then actually applying the skinning. In parallel to this we also began work on a scene and chose to experiment with using pre-computed light maps to create an attractive environment for the cat to move around in.

IMG_0162The above shows an early version of the final cat model, with basic lighting on a reflective floor which was removed when we had decided on a final scene.

brokecat PVRShell0114

 An illustration of some of the issues faced in implementing the 12 bone-per-vertex system, specifically reintegrating the animation data with the original mesh. This part of development gained the nickname “the polygon soup phase”.

With the skinning system finalised, we were able to continue development on other areas of the demo, adding features such as the laser pointer, wireframe modes and the slow motion system. Work on the static scene progressed well, with the late addition of a skybox adding a nice touch to the end of the demo sequence.

PVRShell0308View from the window in the final scene

One of the additional challenges came in lighting the cat. To integrate it with the pre-computed scene, we eventually settled on shading the fur with a BRDF (bidirectional reflectance distribution function). We also cast soft shadows from the cat which integrated with the shadows cast in the scene.

The final name for the demo was suggested by a colleague mid-development and ultimately stuck.

Rendering Sequence

 

PowerVR OpenGL ES 3.0 - Soft Kitty - rendering sequenceThe scene is built up over a number of passes. By taking advantage of transform feedback, the high polygon cat mesh only has to be skinned once and the subsequent positions can then be used for both the shadow pass and every shell of the body and fur pass. Whiskers were a late addition that we felt added to the overall level of detail of the scene.

Where to see Soft Kitty’s advanced OpenGL ES 3.0 features on display

The finalised demo has been several months in development and we are quite pleased with the results.

The demo was first shown at MWC 2014 where it received a very positive response. It will also be on display at the Imagination booth (#402) at GDC 2014, SIGGRAPH 2014 and all other major conventions.

Search by Tag

Search for posts by tag.

Search by Author

Search for posts by one of our authors.

Featured posts
Popular posts

Blog Contact

If you have any enquiries regarding any of our blog posts, please contact:

United Kingdom

benny.har-even@imgtec.com
Tel: +44 (0)1923 260 511

Related blog articles

British Engineering Excellence Award

PowerVR Vision & AI design team collect another award

We’re delighted that the design team for our PowerVR Series2NX Neural Network Accelerator (NNA) has been honoured with a prestigious British Engineering Excellence Award (BEEA). The BEEAs were established in 2009 to demonstrate the high calibre of engineering design and innovation in the

Series8XT AR/VR Banner

Imagination Technologies: the ray tracing pioneers

After a period out of the spotlight, ray tracing technology has recently come back into focus, taking up a lot of column inches in the tech press. The primary reason is because graphics cards for the PC gaming market have

Amazon Fire Stick 4K pic

Amazon Lights up its Fire TV Stick 4K with PowerVR

Amazon, the internet shopping giant, announced earlier this week the latest version of its media streaming device, the Fire TV Stick 4K. First released in 2016, the Fire TV stick brings catch-up streaming services to any TV with an HDMI

Stay up-to-date with Imagination

Sign up to receive the latest news and product updates from Imagination straight to your inbox.

  • This field is for validation purposes and should be left unchanged.
>
Contact Us

Contact Us