次の方法で共有


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

こちらもご覧ください

シェーダー モデル 6 の概要

シェーダー モデル 6