rsq - vs
ソース スカラーの逆数の平方根 (正の値のみ) を計算します。
構文
rsq dst, src |
---|
この場合
- dst はデスティネーション レジスタです。
- src はソース レジスタです。ソース レジスタでは、複製スィズルを明示的に使う必要があります。つまり、.x、.y、.z、.w スィズル要素 (または同等の .r、.g、.b、.a) のうち 1 つだけを指定しなければなりません。
解説
頂点シェーダーのバージョン | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
rsq | x | x | x | x | x | x |
次のコードは、実行される演算を示しています。
float f = abs(src0);
if (f == 0)
f = FLT_MAX
else
{
if (f != 1.0)
f = 1.0/(float)sqrt(f);
}
dest.z = dest.y = dest.z = dest.w = f;
処理の前に絶対値が取得されます。
(1.0, 4.0) の範囲にわたって、出力の精度は、絶対値で少なくとも 1.0/(222) 以内の誤差を持つものである必要があります。これは、通常の実装では仮数と指数が分離されるためです。
ソースに添字がない場合は、x 要素が使われます。入力が 1.0 の場合は、出力も 1.0 になる必要があります。0.0 のソースは無限大です。