1

iOS 用のリアルタイム レイトレーサーの構築を開始しています。私はこのレイトレーシングのことは初めてです。これまでに行ったことは、ObjC で初歩的なものを書くことだけです。C ベースのレイトレーサーは ObjC で書かれたものよりも高速になるように思えますが、オブジェクト階層が非常に便利になるため、ObjC のものははるかに単純になります。ただし、速度は非常に重要です。リアルタイムにしたいので、たとえば 30 fps です。

C の高速化が複雑さを増す価値があるかどうかについて、あなたの意見は? C のコードにはもっと時間がかかり、多くのバグで頭痛の種になることは予測できます (私は C は初めてではありませんが)。

C で書かれたレイトレーサーの例はありますか? そのようなことを Google で検索すると、C++ と C# の多くの結果が表示されます。

4

4 に答える 4

1

高速なレイ トレーシングが必要な場合は、CまたはObjective C を使用することをほとんど忘れることができます。ほとんどの場合、OpenCL を使用する必要があります。30 fps を (非常に近くても) 得るにはまだ十分ではありませんが、CPU で実行されているものよりも少なくとも 2 倍高速になるでしょう (5 倍から 10 倍高速であっても、それほど驚くことではありません)。 )。

于 2010-10-04T06:02:15.770 に答える
0

http://ofps.oreilly.com/titles/9780596804824/をご覧ください 。

レイトレーシングではなく、レイトレーサーを作成しましたが、大変な作業です。GLはグラフィックスに異なる手法を使用しているため、たとえば、ダイヤモンドが光を取り込む能力をレンダリングすることはできません。そのリンクにはサンプルコードが含まれているので、ダウンロードして実行できます。適度に複雑な例のいくつかでさえ、実際のデバイスで実際に動き回っていることに気付くでしょう...私たちは1fps未満で話しています。

于 2011-06-25T13:16:15.050 に答える
0

「リアルタイム Raytracer」の作成は、手動で最適化されたアセンブリ (または「安価な」Intel コンパイラの使用;) を使用せずに作成されますが、速度が必要なため不可能です。

さらに多くの処理能力が必要ですが、OpenCLパスでさえ十分に強力ではないと思います(これは私の意見では、実際のデスクトップマシンでも当てはまります。これの理由は、グラフィックプロセッサに実際に大きなキャッシュがないためです) )。

于 2010-10-06T15:34:54.920 に答える
0

zneak が述べたように、c++ は速度とポリモーフィズムの最適な組み合わせです。

ただし、objc 呼び出しを減らすことで、それに近いものを実現できます (読み: ポリモーフィック インターフェイスを必要最小限のセットに減らしてから、高速にする必要のある部分を単純な C または C++ に入れるだけです)。

objc メッセージのディスパッチは非常に高速であり、通常はインターフェイスから仮想/動的メソッドの多くを削除できます (すべての objc インスタンス メソッドが仮想であると仮定します)。objc メソッドの c コードは依然として c コードです...そこから、ボトルネックがどこにあるかを判断します-作業コードを変更する前にプロファイリングしても問題ありません;)

于 2010-10-04T06:50:25.397 に答える