
In graphics programming there are a lot of terms and definitions that need to be understood, even when working at a high level of abstraction. This learning curve is steepened by the fact that different game engines can have different implementations and interpretations of the underlying technology and will often use these terms in subtly different ways.
This page is a glossary of common shader development terminology, explained in plain English with minimal assumed knowledge. It is intended to be used as a companion guide to help explain concepts found in other shader development articles/tutorials.
Some quick context
Most of my experience with materials and shaders has been part of my work as a technical and visual effects artist, bouncing between Unreal Engine and Unity. Although I will do my best to make these terms as engine-agnostic as possible, my approach will necessarily be through the lens of this experience.
Just something to keep in mind!
What is a Shader?
A shader is a series of instructions and inputs that dictate a rendered object’s appearance. This includes, but isn’t limited to, the object’s color, translucency, shape, position, and how light reacts to its surface.
A range of different types of variable can be defined within a shader. Some of the more common include scalar variables (a single float value), vectors (collections of up to 4 float values which can be interpreted as color information, position, direction, and more), and texture maps.
By declaring Properties within their shader, developers can allow others to set their own values to change how the shader will render the final surface. This is an important component of the creation of Materials, which are explained in more detail below.

Depending on the graphics API your game engine of choice is using, shaders are most commonly developed in one of two languages: HLSL for DirectX, or GLSL with OpenGL. When you package/build your game project your HLSL/GLSL shaders will be compiled to support the specific platforms you have chosen. Depending on your target hardware this can get a little complicated, but most commercial game engines will handle this process for you.
Both Unity and Unreal provide node-based visual programming editors through which you can create and edit shaders. These tools will abstract the code-writing aspect of shader development behind a node graph which can make the process much easier to understand. Behind the scenes the engine will be taking those nodes and using them to generate the shader code.

In Unreal Engine new shaders are created at the same time as materials, and the terms are sometimes (and incorrectly) used interchangeably. This is because the frontend of the Unreal Material Editor merges the two together, and will save out a node-based version of an HLSL shader and a material that can be applied to objects in the game world as a single asset.
For more information on this distinction check out my Seven Tricks to Speed Up Shader Compilation in Unreal Engine article.

Shader development is a wonderful rabbit hole. If you’d like to learn more about creating shaders using visual programming in either Unreal or Unity I highly recommend checking out Ben Cloward’s new Shader Graph Basics series on YouTube. He’ll take you through the entire process in both engines.
If you’re more interested in the nuts and bolts of HLSL, take a look at the Book of Shaders by Patricio Gonzalez Vivo and Jen Lowe. It’s still a work in progress, but it’s a great place to start.
What is a Material?
A Material is an asset that, when combined with a shader and a selection of input values, can be applied to an object to change the properties of its surface. Unlike shaders, materials can be created and modified at runtime.
One significant point of difference between Unity and Unreal is that in the latter, materials and shaders are created at the same time. This means that in Unreal a Material cannot be edited outside of the Material Editor except through the creation of Material Instances.
To put it another way: In practical terms Unity Materials and Unreal Material Instances are analogous and serve the same function.

What is a Master Material?
A Master Material is a term I have found most commonly used within the Unreal Engine community to describe a particularly versatile material/shader combination that utilizes a host of configurable parameters intended to support a wide range of possible surfaces.

A Master Material may have many dozens of configurable options, often gated with switches so the engine does not need to compile branches of the shader that the particular instance of the Material doesn’t require.
In Unity the default Standard shader could be considered a ‘Master Material’, although the language can get a little confusing here. I’ve noticed Unity developers tend not to use the term ‘Master’ as much, as it means something else in the Shader Graph.

For more information on the creation and application of Master Materials, check out my article on The Anatomy of an Unreal Engine Master Material, which looks at a practical example step-by-step.

Watch this space!
I hope this page has helped contextualize some of the common terms I use in my articles here on techarthub. As the site continues to grow I hope to come back with relevant updates as more resources are made available.
Sometimes its hard to know what information is important to include in these articles, so if I’ve left you confused or with further questions please don’t hesitate to reach out. I’d like this resource to be as useful as possible, and if I’ve not explained something well enough I’d really like to know!
You can reach me here on techarthub, or find me in the community Discord Server.
Thanks a lot for reading, and good luck with your projects!









