3D brush shader

Textures used in production are often made by a studio's 2D art department. Using software such as Photoshop, brushes are added, erased and layered in a randomized fashion to produce realistic textures. This process can be time-consuming, but is necessary when a high level of artistic control is required, which is where procedurally generated textures, generally noise-based, can fall short.

We develop a shader in Maya that, akin to texture bombing, does the adding, erasing and layering of brushes automatically, based on parameters such as the brush spacing, rotation, and size. By still being able to create the brushes themselves, designers retain more control over the look.

To further reduce manual work, we extend the brush shader to work in 3D, where brushes are automatically wrapped around the 3D surface to prevent the artists from having to perform laborious UV mapping. While this is an unsolved problem in general, our method works comparatively well for scenes where the brushes are smaller in scale than the geometric deformations, which is common in our applications.

This project was implemented in C++ using the Autodesk Maya API, for the Arnold, mental ray, and Maya Software renderers.

This work was used in the production of Pokémon The Movie: The Power of Us[IMDb], Pokémon: Mewtwo Strikes Back - Evolution[IMDb], and others.

This project was finished on the 1st of September, 2019