Shadow of the Tomb Raider: Texturing the South American Jungle
Hey Ken, thanks a lot for taking the time to answer our questions! Before we start, could you introduce yourself to the community?
Thank you, my name is Ken Jiang, and I’m a senior technical artist at Eidos Montreal. I worked on our Substance workflow for Shadow of the Tomb Raider.
At the time of writing, most of the production work is done, but the game isn’t yet available to the public. How are you feeling right now?
It’s been an exciting journey since I came on board three years ago. Every day the team has striven to do the best they can, overcoming challenges and creating Shadow of the Tomb Raider together. It’s a pleasure working with such a talented team at Eidos. I’m really excited to see how the players react when they finally experience the game!
You’ve been relying on Substance products to texture Shadow of the Tomb Raider. Can you give us some details about how you implemented our software in your art pipeline?
It was our first project using Substance Designer as our primary texturing package, so during pre-production our engine team and our technical art director, Frédéric Chappart, did lots of groundwork integrating Substance into our engine. We managed to skip texture exporting, so artists could link .sbs files directly to surface materials.
We were introduced to the Substance Automation Toolkit later in the project, and this immediately allowed us to convert most of the textures and masks exported from Substance Painter into .sbs packages. That let us further manage all the unique and generic materials through the Python API. It’s specifically useful for situations like .sbs batch processing. For example, we easily brought back the non-PBR materials of Lara’s legacy outfits from Rise of The Tomb Raider and processed all the texture dependencies with a pre-made .sbs template in one batch.
How did you go about creating Substance materials in Shadow of the Tomb Raider?
I’ll talk about the process of how I created the vine material we used on the trees in the jungle.
It’s important to know the surface’s average size and UVs to estimate the final texture size of the material. In this case, I know I will tile the vine material 2 to 3 times to reach around 1024px/meter, with a set of 1K texture outputs.
I gathered as much context, and as many references and color scripts for the scene as I could.
I pretty much spent half of the time focusing on a clean, readable height map, checking the volume frequently in the engine to validate the material’s readability. Next, I started to add the details on top of it. Then, it was very important to start building from the largest vines to the smallest.
To be able to respond to any feedback more promptly, I tried to organize the nodes into modular blocks and expose only the key parameters. The graph does not only become easier to tweak this way, but it’s more optimized as well. A procedural material is much more versatile than plain images, especially when it’s being structured properly.
This involves validating the final looks in-game. The point here is to make the material compliment the environment design as a whole.
What do you think Substance tools brought to your workflow, compared to previous solutions?
Substance is now one of the essential software tools of our art pipeline. It’s helpful because it cuts down our texturing time estimates dramatically. Its non-destructive nature makes it risk-free to iterate and optimize the final results.
How do you see Substance integration evolving in your next projects?
We definitely like to keep refining our core material library. To reach that goal, we’re starting to see the need for a small, dedicated material team to help push the boundaries of our texturing workflow. On that note, we’re looking forward to exploring what we could achieve with Project Alchemist for our next project.
We’re also going to continue to expand the use cases of the Substance Automation Toolkit. We’ve created some custom noises, 32-bit HDR cubemaps, and image filters without manually plugging the loops of math nodes into the pixel processor inside Designer. This also allows us to gain full control of the XML info in a .sbs package, which is a huge win on the tech art side. We’d also like to shift our quality control tools from applying passive batch fixes to setting up the plugin library in Substance Designer with the new scripting API.
With the ever-growing demands of material quality and quantity in AAA production, we appreciate the benefits that Substance has brought to our workflow and we’d like to make the most of it in the future!