log - vs

完全精度の log2(x) です。

構文

log 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
log x x x x x x

次のコードは、実行される演算を示しています。

float v = abs(src);
if (v != 0)
{
    dest.x = dest.y = dest.z = dest.w = 
        (float)(log(v)/log(2));  
}
else
{
    dest.x = dest.y = dest.z = dest.w = -FLT_MAX;
}

この命令は、符号ビットを無視してスカラー ソースを受け付けます。結果は 4 つのすべてのチャンネルに複製されます。

この命令では、21 ビットの精度が確保されます。