10

独自のマルチスレッド リアルタイム レイトレーサーを C++ で書きたいと思っていましたが、それに付随するすべてのベクトルおよびマトリックス ロジックを実装したくありません。これに適したライブラリを見つけるためにいくつかの調査を行うと考えましたが、あまり成功していません...

実装が高速であることが重要であり、できれば使いやすいライセンスが付属していることが重要です。基本的な代数があると読んだことboostがありますが、その速度に関してどれだけ優れているかについては何も見つかりませんでした。

残りについては、Google から提供Armadilloされた .
それからSeldon、効率的で便利だと主張している を取得しましたが、スケール上の正確な位置を見つけることはできませんでした.
最後に、について読みEigenました。これは、ここで検索しているときに StackOverflow で言及されていることもわかりました。

大学の CG の講義でHLSL、代数 (学生にレイトレーサーの一部を実装/最適化させる) に使用されているので、これに使用できるかどうかを考えさせGLSLられました。繰り返しになりますが、どのオプションが最も効率的であるか、代数ライブラリーに関する一般的なコンセンサスが何であるかはわかりません。SOがここで私を助けてくれることを望んでいたので、実際の開発を始めることができます:)

PS: サイトへのリンクを試みましたが、まだ十分な担当者がいません。

4

5 に答える 5

12

独自のルーチンを作成することをお勧めします。レイトレーサーを書いたとき、ほとんどの代数が同じ小さなメソッドのコレクションを使用していることに気付きました。基本的に必要なのは、足し算、引き算などをサポートするベクトル クラスだけです。そして、そこから本当に必要なのは Dot と Cross だけです。

正直に言うと、GLSL を使用してもそれ以上のものは得られません (ドット、クロス、および単純なベクトル演算のみをサポートし、それ以外はすべて手作業でコーディングする必要があります)。また、C++ でプロトタイプを作成し、その後 CUDA に移行することもお勧めします。GPU コードをデバッグするのはかなり難しいので、CPU で動作させてから、少し再コーディングして CUDA で動作させることができます。

実際には、レイトレーサーはかなり単純です。難しいのはそれらを速くすることです。ほとんどの時間と最適化にかかるのは加速構造です。少なくとも私にはそうでした。

于 2011-01-12T21:29:04.413 に答える
2

http://ompf.org/forum/をご覧ください。

このフォーラムは、主に C++ でのリアルタイム レイトレーシングを扱います。ポインタとサンプルソースが表示されます。

ほとんどの場合、すべてのサイクルがカウントされるため、人々は外部のベクトル数学ライブラリに依存しません。最適化は、使用しているコンパイラ、インライン化、SSE (または種類) の使用の有無などに依存します。

于 2011-01-12T22:59:46.850 に答える
1

OpenEXRパッケージの一部である「IlmBase」をお勧めします。これはよく書かれたC++であり、ILMによって開発され、グラフィックソフトウェアを専門的に作成して使用する人々によって広く使用されています。

于 2011-01-12T23:11:18.900 に答える
0

POVRAYのソースコードを見てください。

于 2011-01-12T22:26:31.593 に答える
0

私が使用した私のプロジェクトではglm、あなたにも合うかもしれません。

boost::ublasまたはなどのライブラリseldonは、BLAS 指向であるため、おそらく適していないことに注意してください(また、3D 駆動型の優れた線形代数ライブラリを探していると思います)。

また、dxmathDirectX ライブラリは非常に優れていますが、C 互換のスタイルであるため、使いにくい場合があります。

于 2011-01-12T22:14:58.720 に答える