レンダリングパイプラインと物理パイプラインが伝統的に分離されている理由はいくつかあります。これらを挙げているので、これはゲームだけではないことを覚えておいてください。あなたの質問は、OpenGLのような3Dレンダリングテクノロジーを使用するアプリケーション、競合他社、またはその先駆者です。
- 3Dを使用するすべてのアプリケーションが物理学を必要とするわけではありません。OpenGLは単にゲーム用に構築されたのではなく、その使用法は医療シミュレーションから販売統計のモデリング、航空交通シミュレーション、複雑な化学反応など、すべてをカバーしていることを思い出してください。
目的が多すぎるシステムは、効率の面で希薄になります。グラフィックパイプラインは信じられないほど高速でなければなりません。パイプラインがメインシステムメモリ(コードが存在する場所)などの他のサブシステムとインターフェイスする必要があるポイントを導入し始めると、効率が大幅に低下します。グラフィックカードのハードウェアは非常に具体的に絞り込まれ、非常に高いコストと長年にわたる競争の激しい研究で、ピクセルをプッシュするために超最適化されています。
物理演算を取り巻く数学とデータ構造の性質(特に衝突の検出と解決。これがなければ、物理学はありません)は、レンダリングに必要な数学とは大きく異なります。
- ハードウェアの物理を扱うソリューションがあります。しかし、レンダリングの方法とは異なり、特定の状況で物理を実行する方法は大きく異なります。これの最も基本的な兆候は、ニュートン物理学がすべてに当てはまるわけではないことです。物理学を数学的にモデル化する他の方法があり、それはハミルトニアン力学のような他の状況でより適切です。また、特にゲームでは、個々のゲームごとに、2Dと3Dのどちらの場合でも、物理を異なる方法でモデル化することを選択できます。これらは実際の物理を反映する必要さえありません!-ゲームは想像力の産物だからです。言い換えれば、物理学は最終的にゲームダイナミックの一部であり、OpenGLのようなテクノロジーが適用される他のすべてのソリューションは言うまでもなく、ゲームごとに変化する可能性があります。
頂点ごとのレベルで物理を正確にシミュレーションすることは、ほとんどの場合、現在実行可能なオプションではありません。ほとんどのゲームでモデルのポリ数が多いこと、および凹面多面体を含む衝突検出の本質的な困難を考えると、提供されているモデルから物理を計算するだけでは簡単ではありません。ほとんどの3Dゲームではありませんが、多くの場合、円柱またはボックスの形のバウンディングボリュームを使用して、衝突検出を簡素化します。このようなレベルの衝突検出も必要です。現在のテクノロジーを考えると、関連する処理レベルでは、ゲームロジックの残りの部分を実行するための余地はあまりありません。NvidiaのPhysXでさえ、物理シミュレーションのために、複雑な凹面の多面体をより単純な凸面の多面体に分解する必要があります。
あなたのグラフィックカードは、それが実行する変換でパースペクティブを生み出しています。これは、物理学で実行される変換とは異なります。これは、遠近法とは何の関係もありません。単に、世界の基本的な位置と方向を計算するだけです。MVCについて知っていれば、アプリケーションで保持するデータと、そのデータをどのように提示するかとの間に明確な違いがあることを理解できます。
コンピュータテクノロジ業界はニーズによって推進されており、視覚化はほぼ普遍的なニーズですが、物理シミュレーションは、要件として、またはそれぞれの実装に関して、決して普遍的なものではありません。
ですから、私のアドバイスは、粒子に逆らうことについて心配するのをやめ、レンダリングと物理学という2つの必要なことを行う方法に集中することです。グラフィックカードの処理パイプラインのデータを取得することはできません(CUDA / OpenClは例外です)。三角形とマテリアルデータをプッシュすると、3Dワールドが動画としてポンプで送られます。
最後の余談として、あなたの質問は無意味ではありません。物理学とレンダリングの組み合わせた基礎に対する欲求、および浮動小数点演算が固定小数点よりもはるかに遅い可能性があるという事実は、ボクセル技術が大きな関心の復活を見ている理由を示しています。 、軸整列凸多面体。これにより、主に空間的に分割可能でインスタンス化可能な整数インデックスグリッドで作業するようになるため、物理演算に必要な浮動小数点ベクトル演算の量が減り、パフォーマンスが大幅に向上します。特に同じ2つのサブシステムに異なるグリッド解像度を使用する場合があるため(SVOなどのオクツリーベースのソリューションを使用する場合)、この同じグリッドをレンダリングと物理の両方に使用できます。