次の方法で共有


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

こちらもご覧ください

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

シェーダー モデル 6