Texturing

80lv: Could you tell us a little bit about the way you’ve been working on the production of the textures? We’re really interested to learn your general pipeline and especially talk about the shaders you are using. All the textures look very cool and soft, creating this lovely atmosphere of a cartoon.

At a high level we’ve tried to create a strong hierarchy of detail/color/contrast in our shaders/materials that works well for gameplay and mimics the aesthetic of 2D animation. In order of visual primacy – Combat VFX > Characters > Environments. Almost every surface in Spellbreak uses some form of toon shading. We developed a shader for use in Unreal materials that makes use of a ramp-like texture to define how the lighting wraps around surface normals. This material can smoothly blend between an artist-controlled cel-shaded look, standard PBR lighting, and any indirect lighting contribution. Characters are almost always completely cel-shaded, omit indirect lighting, and use very flat textures to reinforce a 2D look. The background/environments are also cell shaded, but we tend to use the PBR blending a little more case by case. Environment textures contain more detail than the characters and are more heavily sculpted with chunkier, impasto-like shapes. We also use some styled edge highlighting and distance thresholds for extra detail, but we use more muted color palettes and try to avoid a lot of noise and high contrast specularity.

There’s often a player expectation of amazing detail up close, but that detail can turn into a lot of noise at a distance. Many of our materials contain distance thresholds to simplify color palettes, alpha masks, and other details so that they can sit properly in the game’s visual hierarchy at any distance from the player. This is probably most noticeable with tree foliage. We set some distance thresholds that simplify the alpha masks at controlled distances so that we can get simpler looking styled tree silhouettes that feel a bit more painterly than if we simply relied on basic texture mipmaps.