Shader Reference
Introduction
In MagicaVoxel, a shader is a fragment of code used to generate shapes and colors in your project. Basically it's a processor for your voxel model.
You can execute a shader by typing the xs
command in the console:
The shader-name parameter will be based on the shader itself. You can add up to 8 parameters (arg0
to arg8
), if the shader expects them.
Available options are:
-n
: followed by a number, it will iterate the shader a number of times
For an introductory tutorial, please check the Writing Your First Shader tutorial.
Built-in
A shader comes with a number of built-in functions and inputs.
Inputs
These are the available inputs you can use in your shader:
uniform vec3 iVolumeSize
: the voxel volume (i.e.: the object you are editing) dimensionsuniform float iColorIndex
: the selected color index in the current editor paletteuniform vec3 iMirror
: the editor Mirror Mode (0 if not enabled, 1 if enabled) for each direction (x, y, z)uniform vec3 iAxis
: the editor Axis Mode (0 if not enabled, 1 if enabled) for each direction (x, y, z)uniform float iIter
: the current iteration indexuniform vec4 iRand
: a random numberuniform float iArgs[8]
: an array of user parameters. Use it to pass any custom data you may need
Functions
These are the available functions you can use in your shader:
float voxel(vec3 v)
: returns the voxel color index at positionv
. If no voxel is present, it will return 0
The map() Function
Each shader should have a map()
function with this syntax:
This method will generate a new voxel (of a defined color index) al position v
.
Example
The following code will fill the full space of your voxel model wil voxels of color index 4:
Last updated