私の分野(VFX、パストレーシング、コンピューターアニメーション、粒子シミュレーション、流体力学、画像処理などをカバー)では、アルゴリズムの複雑さが基本です。特に数百万の頂点、ポリゴン、ボクセル、パーティクル、テクセルに到達する入力で、線形時間よりも悪い状態で動作するものが妥当な時間で完了することを期待することはできません。リアルタイムのインタラクティブなフィードバック。
そうは言っても、同僚の間での議論では、アルゴリズムの複雑さはそれほど重視されていません。おそらくそれはやや当たり前で、むしろ「初歩的」だと思われるためです。一般に、パストレーサーを作成する場合、対数時間以上で動作すること、およびバウンディングボリューム階層などのデータ構造は読者にとって使いやすく、比較的簡単に実装できると想定されています。マルチスレッドとSIMDはアルゴリズムよりも重要であると言い続けた熟練した同僚もいましたが、バブルの並べ替えの並列化から多くを得ることができるという意味で彼が言ったとは思いません。彼は賢明なアルゴリズムを適用すると当然だと思っていたので、
最近の多くの焦点は、これらの使い慣れたアルゴリズムの多くを採用し、CPUキャッシュ、SIMDレジスタと命令、GPU、マルチコアなどのハードウェアの基本的な特性をより活用することにあります。たとえば、Intelは、おなじみの古いBVHを使用して「レイパケット」の概念を考案し、基本的に複数のコヒーレントレイを再帰的なツリートラバーサルでテストする新しい方法を考案しました「SIMD命令とレジスタを使用して、レイ/ AABBおよびレイ/三角形の交差点でこれらのレイを同時にテストできるという事実によって構成されていることを除いて、複雑さとオーバーヘッドがあります)。
同様のことはcatmull-clarkサブディビジョンのようなもので、コンピューターグラフィックスでは非常に初歩的なものです。しかし今日、競争力があり、熱く、非常に効率的なのは、Gregory Patchesを使用したCCサブディビジョンに近いGPU実装です。CharlesLoopによって普及し、後にPixarで採用されました。より単純なCPU実装は、アルゴリズムの複雑さの点で必ずしも置き換えられたわけではなく、GPUで適切に動作するものに置き換えられたため、かなり時代遅れです。
そして、これは通常、最近のハードウェアの基本的な特性に比較的依存しない方法で最良のアルゴリズムを思い付かないという課題の多くです。空間インデックスとは対照的に、階層セグメンテーションアプローチを使用して、90年代のキャラクターやその他のソフトボディをアニメーション化するための衝突検出を大幅に高速化する新しい加速構造を思いつくことで、実際に業界に足を踏み入れました。求人はありますが、このような印象的なCPUキャッシュと複数のコアとプログラム可能なGPUが存在するずっと前に公開したので、最近ではそれほど印象的ではありません。最近では、大幅な変更の結果として、まったく異なるアプローチを使用しています基礎となるハードウェア。