Shaders are a very powerful tool that can be used to manipulate the graphics that your game renders to the screen, permitting incredibly fast effects that can range
from, for example, adding a subtle colour hue to a sprite, right up to full screen distortion effects.
A shader is basically a two-part program that runs directly on the graphics card itself, making it very fast since the GPU is doing all the work and freeing up CPU cycles
for your game code.
The full shader is comprised of a vertex shader program, and a fragment shader program (also known as a pixel shader). Both of
these tiny programs work together in order to manipulate what the graphics card renders to the screen. This then permits you to manipulate in real time, the position,
colour and alpha values that are actually rendered into the display buffer.
A complete overview of how shaders really work and what place they have in the graphics pipeline is outside the scope of this manual, but YoYo Games
have produced a number of Tech Blog articles which give an excellent base to start from:
The shader editor has the exact same functionality as the Script Editor, with auto-complete, search, print, etc... as well as all the same
keyboard shortcuts. However, please note that there is no syntax checking, due to the code being written using the specific shader language and not GML.
The code editor itself is split into two sections, with each one being available from tabs at the top. This is because you cannot create a shader without both
parts. Even if you wish to only use the fragment shader you will have to have created a "pass through" vertex shader (by default any new shader being created will
have a vertex and fragment pass through shader already coded for you).
The shader program itself is written in a shader language with the default, cross platform choice being GLSL ES. Using this language guarantees
that your game will work correctly on all platforms that shaders are available on, but you can also choose to use one of three other languages if you are only
targeting a specific platform. The available languages and their respective targets are shown in the table below:
Shader Language | Target Platform |
---|---|
GLSL ES | All targets |
HLSL9 | Windows 32 bit |
HLSL11 | UWP, XboxOne |
GLSL | Mac and Ubuntu (Linux) |
It is worth noting that you can use GLSL ES shaders on the HTML5 target platform but you must have enabled WebGL in the
HTML5 Global Game Settings otherwise it will not work.
For further details on the shader functions and how they can be used in GameMaker: Studio please see the section
Reference: Shaders.
NOTE: This manual will not cover any of the Open GL shader functions and variables, unless they are special ones that exist ONLY in
GameMaker: Studio (which can be found here. For a complete overview of the
available GLSL ES functions and variables please see the
OpenGL ES Shading Language (GLSL ES) Reference
Pages.