浮動小数点数から XR_BIAS への変換ルール
このセクションは、Windows 7 以降のオペレーティング システムのみに適用されます。
float を XR_BIAS に変換するには、次の規則が適用されます。 これらの規則では、開始浮動小数点値が c であるとします。
c が NaN の場合、結果は 0 になります。それ以外の場合は、次のルールが適用されます。 NaN は "not a number" の略で、浮動小数点形式では使用できない値を表すシンボリック エンティティを意味します。
浮動小数点数スケールから整数スケールに変換するには、次の操作を実行します。
c = c * 510
上記の操作により、オーバーフローが発生する可能性があります。
バイアスに対して、次の操作を実行します。
c = c + 384
上記の操作により、オーバーフローが発生する可能性があります。
c の指数に応じて、次のいずれかの操作を実行してクランプします。
バイアス後、c の指数が 2 以上 (>= 2 または c が INF の場合)、結果は 0x3ff になり、1.2529 とほぼ等しくなります。
バイアス後、c の指数が 0 より小さい (< 0 または c が -INF) の場合、結果は 0x0 になり、約 -0.7529 になります。
結果として、c の仮数の最上位 10 ビットを再解釈します。
float から XR_BIAS への変換は、XR 側で 0.6f Unit-Last-Place (ULP) の許容誤差です。 この許容値は、float から XR に変換した後、表現可能なターゲット形式値の 0.6f ULP 以内の任意の値をその値にマップできることを意味します。 無限に正確な結果の 1 ULP は、たとえば、浮動小数点で表される最後の (最下位の) 位置で最大 1 単位の誤差が生じるため、最も近い偶数に丸めるのではなく、結果を 32 ビットに切り捨てることが実装で許可されていることを意味します。
データを反転するための標準の Direct3D バージョン 10 要件も適用されます。