Data is passed into and out of shaders using variables with input or output
storage class, respectively. User-defined inputs and outputs are connected
between stages by matching their Location
decorations. Additionally,
data can be provided by or communicated to special functions provided by
the execution environment using BuiltIn
decorations.
In many cases, the same BuiltIn
decoration can be used in multiple
shader stages with similar meaning. The specific behavior of variables
decorated as BuiltIn
is documented in the following sections.