Material Layers
ReferenceLayerShaders

SurfaceShader

Setup macros and layer variables used in SurfaceShaders.

Setup Macros

At the top of the vertex() function, declare SETUP_SURFACE_VERTEX.

At the top of the fragment() function, declare SETUP_SURFACE_FRAGMENT.

Layer Variables

A SurfaceShader can only output its own material properties using LAYER_OUT_* variables. It can read data values from layers below using LAYER_BELOW_TEX_* and LAYER_BELOW_MASK_* variables.

Output Variables

Variables to output material properties.

Output Variables
LAYER_OUT_ALBEDO
LAYER_OUT_NORMAL_MAP
LAYER_OUT_ROUGHNESS
LAYER_OUT_HEIGHT
LAYER_OUT_AO
LAYER_OUT_METALLIC
LAYER_OUT_EMISSION
LAYER_OUT_BENT_NORMAL
LAYER_OUT_MESH_NORMAL_MAP
LAYER_OUT_MESH_AO
LAYER_OUT_MESH_HEIGHT
LAYER_OUT_MESH_CURVATURE
LAYER_OUT_MESH_THICKNESS

Input Variables

Data values read from layers below.

Vec4 VariablesFloat Variables
LAYER_BELOW_TEX_0LAYER_BELOW_MASK_0
LAYER_BELOW_TEX_1LAYER_BELOW_MASK_1
LAYER_BELOW_TEX_2LAYER_BELOW_MASK_2
LAYER_BELOW_TEX_3LAYER_BELOW_MASK_3
LAYER_BELOW_TEX_4LAYER_BELOW_MASK_4
LAYER_BELOW_TEX_5LAYER_BELOW_MASK_5
LAYER_BELOW_TEX_6LAYER_BELOW_MASK_6
LAYER_BELOW_TEX_7LAYER_BELOW_MASK_7
LAYER_BELOW_TEX_8LAYER_BELOW_MASK_8
LAYER_BELOW_TEX_9LAYER_BELOW_MASK_9
LAYER_BELOW_TEX_10LAYER_BELOW_MASK_10
LAYER_BELOW_TEX_11LAYER_BELOW_MASK_11
LAYER_BELOW_TEX_12LAYER_BELOW_MASK_12
LAYER_BELOW_TEX_13LAYER_BELOW_MASK_13
LAYER_BELOW_TEX_14LAYER_BELOW_MASK_14
LAYER_BELOW_TEX_15LAYER_BELOW_MASK_15
YoutubePatreonDocsAssetsTwitter

©2026 Foyezes