本章讲述Metal 着色语言的操作符, 第一部分讲述矢量和标量操作符, 所谓标量操作数, 就是指整型, 浮点型或者布尔型的变量. 所谓矢量操作书是指其成员为整型, 浮点型或者布尔型的 1-, 2-, 3-, 4- 维矢量. 第二部分讲述矩阵操作符, 矩阵操作符应用于至少有一个操作数为矩阵的场合, 另一个操作数可以为标量, 矢量或者矩阵.
Operators |
Operand Types |
Result Type |
---|---|---|
Basic arithmetic: unary unary |
Integer or floating-point Scalar or vector |
Same as operands |
Modulus arithmetic: |
Integer only Scalar or vector |
Same as operands |
Prefix or postfix increment or decrement: |
Integer only Scalar or vector |
Same as operand |
Relational: |
Integer or floating-point Scalar or vector |
Boolean Scalar or vector (matching operands) |
Equality: |
Boolean, integer or floating-point Scalar or vector |
Boolean Scalar or vector (matching operand) |
Bitwise: unary |
Integer only Scalar or vector |
Same as operands |
Logical: unary |
Boolean only Scalar or vector |
Boolean Scalar or vector (matching operand) |
Ternary selection: expr1 |
expr1: Boolean scalar expr2 and expr3: Any type (must match) |
Type of expr2 or expr3 |
Bit-shift: |
Integer only Scalar or vector |
Same as operands |
Assignment: lvalue |
Boolean, integer, or floating-point Scalar or vector |
Type of lvalue |
除了 = 操作符之外的其他二元操作符都可以应用于标量, 矢量或者这两者的组合, 当操作数类型不一致的时候, 会应用隐式类型转换规则将操作数类型转换成为相同类型. 这种类型转换适用于标量, 矢量,或者两者的组合.
下面讲述一些合法的操作符使用: