Stream Nodes: new workflow in Granite for Unreal

Hey everyone! We’ve been extremely busy with a range of projects so we almost forgot to tell you about our new workflow for Unreal! You can jump in and watch the tutorial video below.

We actually developed this workflow to allow Funcom to use Granite SDK in Conan Exiles. The project was already far in development when they looked into using Granite. In fact, they were going to ship a few months later and wanted a solution to automatically optimize textures. They mainly wanted to reduce the video memory needed to run the game with their high quality assets.

You can think of Granite as a solution for two different problems. Either you want to use extremely high resolution textures (16K and beyond, tiled images, UDIM, etc...). Or you want to optimize memory usage and loading times for your relatively high res (4K+ PBR) more classic game-like textures.

Most game developers think of optimization at the end of the project, and rightly so, and Granite is the perfect solution to automatically optimize textures. However, we’ve always recommended to use Granite at the start of a project because it allows you to use much much more content than you would typically use without issues. It’s a new way of thinking about texture resolution that we’ve been advocating for many years now: "don’t worry about it, go wild :)"

We have a dedicated set of tools that allow you to easily import content into a tile based streaming format. The tools are good for testing the SDK and integrating it deeply into your engine. But our Unreal workflow was conceived to be part of a project from the start. Converting a large and nearly completed project like Conan Exiles could be pretty tedious.

At that time we were experimenting with baking down the Unreal material graph into one large Granite streamed texture. This way, you can actually use the material graph as a texture creating tool and don’t worry about the runtime impact. The whole texture would be baked down, imported into Granite and streamed using our virtual texturing system. It’s was very promising but what stood out most was the workflow. You only had to add a Granite node to your material and everything was handled in the background by Granite for all materials (root and instances).

We decided to create a similar node for Funcom that would allow them to convert all their materials to Granite by placing only a few dozen nodes in their root materials. One of the great features is that the material can also behave as if the Granite node is not there and the regular textures are used. This way, there is absolutely no impact on the artist’s workflow or iteration time. Funcom set up a specific workflow with regular “bakes” (a remnant of the bake node, it should actually be called “importing”) on a dedicated machine. The generated Granite streaming files (Tile Sets) were then distributed internally when needed. They’ve written a blogpost about this here.

Our new workflow, let’s call it the Import Streaming Node, is now available for project licensees for UE4.15 and UE4.17. Contact us to get access.

Leave your information