Tiling system- procedural tile placement
Above is a video breakdown of my procedural tiling system. It randomly selects portions of a texture set, and rotates them, to create a random looking damaged surface and reduce visual repetition. The video goes into the details but to the right is the code I wrote to handle normal map rotation at increments of 90 degrees (without the use of a rotator node to correct the vector).
|
HLSL Radar- Animated graphic without using textures
The radar material was made exclusively using HLSL and trigonometry- with no textures or other assets. That is, we're taking the UVs and time as inputs, and then performing math to get the desired output without sampling external resources. The video above has a demonstration and breakdown, and the full code I wrote for this is to the right.
|
Decal with text input
This was designed for The Missing Few, to avoid the need for textures. Among other assets the game had little memorial plaques in the hospital level with names of Kickstarter backers engraved, and this would have meant creating a ton of textures.
Instead, I made a decal system that supported text entry, using blueprint and material. In addition to conventional features such as support for different fonts and alignments, it featured normal map generation to allow for raised or engraved text, and a resolution exponent control that allowed a designer to drop the generated resolution of signs that were a little outside the playable area. Each step on the exponent would move the generated resolution up or down to the next power of two. |
Scalar UVs for modular kits
This was built for a set of modular assets, including walls, railings and pipe segments which could be scaled to arbitrary lengths. These were primarily used in circumstances where conventional world-based triplanar blending could not have been employed.
The material would use the scale of the object in the world to update tiling information, to avoid textures stretching when the objects were manipulated. This was used on a great deal of walls and other long assets in The Missing Few (2020) |
Vertex colour blending for distinct substances
This material supports the use of vertex colours for masking. It is possible to set up four distinct material layers, with roughness, normal maps and so forth for each layer, and then blend them on an asset through vertex colour. We used this technique on The Missing Few (2020) to blend several different versions of a material to add water damage or other details. An asset submerged in water at an odd angle could have vertex colours assigned in a line along the water level, with a damp version of the material blending into the dry material above water. In the example above, the plane on the right has been given texture variation using a few different layers.
Above is my layered material function- containing all the features any given layer might require. It is structured to take inputs, rather than hold local parameters, in the interest of not having multiple competing parameters with the same name if this structure is used more than once in a material. This is the reason it takes static bool parameters and feeds them into switch statements, rather than directly using a static switch parameter for example.
This is the set up for the four layer version (R,G,B, and A vertex colour channels), which has all the relevant elements parametised here and used as inputs for that standard layer structure, which was defined in the function earlier. The static bools on the right contain information about texture formats, and so forth, and these are held as constant across all layers. The nested function structure means that adjustments to the material structure can be completed once and replicated across all four layers. Static switches in the lower right mean that the number of desired layers can be set.
Water shader- The Missing Few (2020)
|
This water shader was used for the river crossing scene in The Missing Few. It works by blending three copies of the same normal map at different scales moving in different directions, with a fresnel and depth fade to handle refraction and opacity. A fairly simple approach, but effective at distance.
|