8.4. Shader Inputs and Outputs

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.