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