WavePrefixProduct 関数
このウェーブ内のアクティブなレーン内のすべての値の積を、このレーンより小さいインデックスで返します。
構文
<type> WavePrefixProduct(
<type> value
);
パラメーター
value
乗算する値。
戻り値
すべての値の積。
注釈
このルーチンに対する操作の順序は保証できません。 そのため、実質的には、[precise] フラグは無視されます。
後置積は、プレフィックス積に現在のレーンの値を乗算することによって計算できます。
インデックスが最も低いアクティブ レーンは、常にプレフィックス積に対して 1 を受け取ります。
この関数は、すべてのシェーダー ステージでシェーダー モデル 6.0 からサポートされています。
例
uint numToMultiply = 2;
uint prefixProduct = WavePrefixProduct( numToMultiply );
ウェーブ サイズが 8 のマシンで、レーン 0 と 4 を除くすべてのレーンがアクティブな場合、WavePrefixProduct から次の値が返されます。
lane index | status | prefixProduct |
---|---|---|
0 | 非アクティブ | 該当なし |
1 | active | = 1 |
2 | active | = 1*2 |
3 | active | = 1*2*2 |
4 | 非アクティブ | 該当なし |
5 | active | = 1*2*2*2 |
6 | active | = 1*2*2*2*2 |
7 | active | = 1*2*2*2*2*2 |