操作符(Operators)
本章讲述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 |
除了 = 操作符之外的其他二元操作符都可以应用于标量, 矢量或者这两者的组合, 当操作数类型不一致的时候, 会应用隐式类型转换规则将操作数类型转换成为相同类型. 这种类型转换适用于标量, 矢量,或者两者的组合.
下面讲述一些合法的操作符使用:
- 两个操作符都是标量, 其结果也为标量.
- 一个操作符为标量, 另一个操作符为矢量, 先会把标量的类型转换为矢量类型, 这个矢量类型的维数跟另一个矢量相同, 其所有成员的值都与被转换的标量相同. 操作符会逐个应用于这两个矢量相同位置的分量, 其结果为同维数的矢量.
- 两个操作数为同维数的矢量, 操作符就逐个应用于两个矢量相同位置的分量, 其结果为同维数的矢量.

本文详细介绍了Metal着色语言中的各种操作符,包括基本算术操作符、关系操作符、逻辑操作符等,并解释了这些操作符如何应用于标量、矢量以及矩阵中。
1134

被折叠的 条评论
为什么被折叠?



