Universal shader translator.
The central structure of the crate is
Functions which export shader modules into binary and text formats.
Parsers which load shaders into memory.
Module processing functionality.
An arena holding some kind of component (e.g., type, constant, instruction, etc.) that can be referenced.
Early fragment tests. In a standard situation if a driver determines that it is possible to switch on early depth test it will. Typical situations when early depth test is switched off:
Exported function, to be run at a certain stage in the pipeline.
A function defined in the module.
A function argument.
Variable defined at module level.
A strongly typed reference to a SPIR-V element.
Variable defined at function level.
Flags describing an image.
Member of a user-defined structure.
A case for a switch statement.
A data type declared in the module.
Size of an array.
Operation that can be applied on two values.
Describes how an input/output variable is to be bound.
Built-in inputs and outputs.
Enables adjusting depth without disabling early Z.
Additional information, dependent on the kind of constant.
Axis on which to compute a derivative.
An expression that can be evaluated to obtain a value.
Sub-class of the image type.
The number of dimensions an image has.
Type of an image query.
The interpolation qualifier of a binding or struct field.
Built-in shader function for math.
Built-in shader function for testing relation between values.
Sampling modifier to control the level of detail.
Primitive type for a scalar.
A literal scalar value, used in constants.
Stage of the programmable pipeline.
Instructions which make up an executable block.
Class of storage for variables.
Enum with additional information, depending on the kind of type.
Operation that can be applied on a single value.
Number of components in a vector.
A code block is just a vector of statements.
Number of bytes.
Hash map that is faster but not resilient to DoS attacks.
Hash set that is faster but not resilient to DoS attacks.