Tackling the Impossible in Unreal Engine 4
At Neoglyphic we’re working on stories in the world of Sunborn Rising, an intellectual property we’re developing across multiple mediums. Early in our process, we evaluated real-time engines and decided to use Unreal Engine 4, as we felt it had the highest potential for real-time graphics that approached the boundaries of CG quality.
With all engines we looked at we hit a similar issue - giving our characters the fur they needed! Fur is a difficult issue for real-time, and it seemed like we would need a custom solution. Our Chief Creative Officer, Christopher Chamberlain, and I went through many different approaches to evaluate their pros and cons, and to see what we could learn in the process. We were prototyping our main character, a young cat-like character named Barra, at the time.
When we say we tried everything, boy did we try everything. Stylizations, sculpted forms, hand-placed cards, photorealism, you name it. We hit it from both technical and artistic sides, bringing both conversations to the table constantly. Our goal wasn’t always to make something of final quality, often it was just to evaluate the pros and cons of an approach, particularly with Unreal Engine. Illustrated below are some of the approaches we tried at first.
- “Clean” Photo-based texturing
- Stylized texturing with high detail normals
- “Messy” Photo-based texturing
- Hand-placed cards for breaking silhouettes
- Modeled, sparse “tufts” for stylized look
We weren’t super happy with any of these results, so we had one last idea to try. We attempted a shell-based approach, one involving stacked layers of geometry with alpha that had fallen out of popularity in recent years.
There was a lot of conventional wisdom that this approach might be too costly - but at the time we were aiming for cinematic quality with performance being second priority - so we went for it. Early on we started getting very favorable results! We had better performance than expected, and vastly improved visual quality. The more time we spent with this technique, the more we were able to improve it and the happier we were with it.
We saw potential where we hadn’t before, potential both to innovate and to push a higher fidelity level than we had previously thought possible. We had luck combining procedural noises with modern lighting and shading, and some faux-techniques to fill in the gaps. We kept pushing, experimenting with different techniques for alpha, coloring, controlling shapes and more. We started trying to use it on characters again as well, as seen in this early test.
At some point, we decided we wanted to turn this technique into a full-blown plugin for Unreal. We wanted it to be portable and easy to install, extremely easy to use, and super scalable for various platforms. So we got to work!
We ended up completely re-architecting a lot of our original prototyping to great effect. We built in support for physics via Compute shader and CPU, which let us hit every platform we wanted. We designed new LOD systems that helped us hit our performance targets. We dramatically improved our ease-of-use, making it practically drag-and-drop in implementation. We even completely reworked our lighting and shading, incredibly improving our visuals!
Now that we have launched this technology in the form of our NeoFur Unreal Engine 4 plugin, we have come full circle. We’re very happy with where our work and advances in a shell-based approach have taken us. Physics and dynamics, scriptability via Blueprint, high performance, and best of all, world-class visuals. We continue to push our solution to new heights and are excited about it’s future!
If we’ve learned anything - it’s that conventional wisdom should never be considered law. Things change, technology changes, and what is possible or impossible can change at any given time. We are excited about the future of Unreal Engine - a future where gaming and non-gaming industries are pushing each other forward, and bringing the best ideas, practices and technology of all industries together!