Breakdown 2 of 5
Master materials
I made every master material in the game, including neon holo signs and vertex paint blends broken up with world space noise.
Overview
I made every master material in the project. The artists used 4 of them most: Opaque, Sign (a hologram-style master), Blend and Decal.

I repeatedly added features as the artists asked for them, sorted the parameters into artist-friendly groups so each material was easy to customise, and weighed each request against its rendering cost.
Opaque
This is the general-purpose material, used on most props and architecture. Most of it is the usual tint, emissive and overlay controls, plus a setting for the ink lines.
Borderlands paints black ink lines straight into the diffuse texture. On a metallic or glossy surface those lines would catch reflections and stop looking like ink, so the Opaque master thresholds the diffuse into a mask of the lines, removes them from the metallic channel and pushes them to full roughness.

Opaque master’s parameters
Base
- Textures
- Strengths
- Tint
- Override roughness
Emissive
Overlay
Outline
- float
- bool
- vector
- texture
Sign
Lectra City is covered in neon and holographic signs, and these are replicated with the Sign master. Each effect, like the distortion, scanlines and faults, is its own parameter group with an on switch, and they’re all multiplied together at the end into the emissive colour and opacity. It was intended to be highly customisable so it could be used anywhere. Two examples are shown below.
Here’s a comparison of my sign implementation and one from Borderlands 3, with the 2D graphic by Milly.

This is the sign master graph. The coloured comment boxes are for the scanlines, noise, pulse and faulty effects, and the Material Attributes box clamps them into emissive colour and opacity.

Sign master’s parameters
Screen
- Screen size
- Icon size
Distortion
Jitter
Texture
Scanlines
- Switch
- Scanline 1
- Scanline 2
- Scanline 3
Noise
Pulse
Faulty
Hex
Final effects
- float
- bool
- texture
Blend
A big artist request was the vertex painting system. They liked the ground but wanted to be able to break it up and have complete control of where. To accommodate this, I set up the system, wrote documentation and taught the artists how to use it. An artist can paint up to four layers over a base material, one vertex colour channel per layer, and the textures are world aligned so they line up across meshes.

It’s built on Unreal’s material layers. Each surface, like dirt or grass, is an instance of the same layer material, with the Opaque master’s controls plus a world aligned switch, and each layer sits on the one below it through a blend.

Painted vertex colour on its own gives a soft, smeared gradient, and on a low-poly mesh it shows exactly where each vertex sits. To break that up, the blend mixes the painted value with a noise texture sampled in world space before it drives the alpha. The texture packs a different noise into each channel, so each material instance picks the kind of edge it wants by choosing a channel:
v = one vertex colour channel, inverted by default
n = chosen channel of the packed noise texture, sampled at world XY / 1000 * Noise Scale (0.8)
alpha = CheapContrast( saturate(2v + n - 1), Noise Contrast (2.0) )
Around the middle of a brush stroke, the noise decides where the edge falls and the contrast sharpens it. Because the noise comes from world position rather than UVs, the edge carries on across the join between two meshes, the same as the texture.

Blend’s parameters
MLB_GroundBlend
- Control
- Noise
ML_GroundLayer
- Material scale
- Same as Opaque
- float
- bool
- texture
- channel
Decal
I wrote the Decals slide of the art bible, which planned graffiti, cracks, grunge and markings to break up the trim sheets.

In the Decal master, every channel has its own switch, and atlas controls let one texture sheet hold several decals packed to save VRAM, picked by column, row and index.
To really nail the painted look, the decals had to be hand-drawn, as this is a very distinct aspect when looking at the game. References were gathered from various places that we could use, like Unreal’s Starter Content or Megascans leakages, and then manually remade by Milly and Ollie. The effort paid off.
Optimisation
All master materials made use of static switches, so that unused features would not add to performance cost. Packed textures avoided higher texture usage. Since these materials were used on almost every asset in the game, I kept the shader complexity as low as possible.
Assets were also optimised: set to be immovable and use Nanite to benefit from batch instancing, with harsh Levels of Detail (LODs) for assets that couldn’t support Nanite, like the translucent holograms or the material blend floors.



Reflections
Using Nanite probably did more harm than good, as the game had to do rendering for both pipelines. Traditional LODs would have sufficed. I also didn’t do much profiling outside of stat GPU and the shader complexity view, so I had no repeatable numbers to show where the biggest costs were or whether my changes helped. I also juggled this amongst a lot of other areas of work, so I couldn’t give it the focus it deserved.