浮動小数点精度(fp:preciseとfp:fast)


10

CまたはC ++では、浮動小数点精度のコンパイラオプションは、実際の(スモール/インディーズ)ゲームに本当に違いをもたらしますか?

私の観察によると、fp:fastの設定はfp:preciseよりも何倍も速く、私がここで理解していることから(/programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-encounter)2つのコンパイラオプション間の精度の違いは、浮動小数点数の16桁目からのみ変更されます。

fp:fastを使用しているときに2Dまたは3Dゲームでひどく間違った例を見つけた人はいますか?

編集:明確にするために、私は浮動小数点値自体の精度については質問していません(つまり、浮動小数点と倍精度と10進数)。コンパイラオプションに関連する精度についてのみ。

回答:


11

fp:fastとfp:preciseの解釈は疑わしいようです。小数点以下16桁目以降の丸め誤差よりも多くの効果があると思います。私はあなたを参照します浮動小数点精度にブルース・ドーソンの記事詳細。

一般に、浮動小数点の精度エラーは間違いなくゲーム開発における実際の問題です。これは、物理プログラマーや、世界が長い、または実行時間が長い(MMOのように、数週間または数カ月程度)ゲームの場合は特に厄介です。ほとんどの場合、浮動小数点の精度エラーは、シミュレーションの不安定性と時間の経過とともに徐々に悪化するジッターのある動きとして現れます。ゲームでこれらの種類のアーティファクトが表示されず、パフォーマンスが大幅に向上している場合は、fp:fastを使用しても安全です。


1
-1浮動小数点の精度は、ゲーム開発では大きな問題ではありません。間違ったデータ型を選択することと、数値に関する知識とアルゴリズムが不足していることが、この投稿で言及されているすべての問題の原因です。私が参加したすべてのプロジェクトはfp:fastを使用し、言及された問題はありませんでした。
Maik Semder 2012

はい、私たちの結論は同じです。私のポイントは、浮動小数点の精度はゲーム開発の特定の領域で問題になる可能があるということでした。それが(これらの領域で)数値の知識と適切なデータ型が必要な理由です。
グッドグッド主義

優れたリンクと回答の両方に+1、マイクセムダーを指定しました。また、コードでどのような操作を使用すればよいかわからないという理由で、この種のエラーに苦しんでいる人を見たこともあります。
Ali1S232 2012

@postgoodism回答いただきありがとうございます。入力を無視しない。あと1日か2日待って、さらに回答が得られるかどうか確認してください。
イニシア2012

@MaikSemder基本的にはfp:fastfp:preciseさまざまな奇妙な問題(@postgoodismが言っているような物理学などの複雑な計算で気づく可能性がある)に本当に気が付かない限り、そのまま使用します。ありがとう、これについて疑問に思いました。
ニコス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.