3DゲームのCPUとGPU:誰が何をしているのか?

コリン

アプリケーション(CPU側)とGPU側の境界について混乱しています。誰かが、アプリケーションがゲームで一般的に何を担当しているのかを理解するのを手伝ってもらえますか?

私の理解では、アプリケーションはGPUがレンダリングするフレームを送信します。これは、頂点シェーダー、ラスタライズ、およびピクセルシェーダー(最も基本的なレンダリング形式)を含むプロセスです。これにより、GPUにはフレームごとに何が発生するかについての概念がないと私は信じています。

これは、アプリケーションがすべてのオブジェクトが世界空間のどこにあるかを追跡していることを意味しますか?また、ユーザーが文字を移動した場合(たとえば)、アプリケーションは新しい場所を決定し、GPUに新しい変換を送信しますか?

これは特に混乱を招きます。頂点シェーダーは、基本的に2つの静的ポーズに基づいてモデルを時間の経過とともにアニメーション化するモーフィングなどに使用できることを読んだからです。

user4842163

最新のエンジンとは連絡を取り合っていませんが、前回確認したところ、ゲームの状態のほとんどすべてが通常CPUに保存されており、データはCPUからGPUに書き込まれることが多く、ほぼ同じ頻度で読み返します。

これには、CPUに保存されている冗長データも含まれる可能性があります(ドライバーの機能については説明しません)。たとえば、エンジンはCPUとGPUの両方に三角形メッシュを格納し、メッシュをCPUに保持して、錐台カリング、衝突検出、ピッキングなどを実行する場合があります。この冗長性の理由の1つは、ゲームロジックの大部分をGPUコードで記述することが、場合によっては不可能ではないにしても、非常に難しいためです。たとえば、GPU側で衝突検出の一部を高速化できる場合がありますが、物理システムを物理システムからのGPUプッシュイベントで完全に記述して、オーディオシステムが衝突イベント(GPU)でサウンドを再生できるようにすることはできません。オーディオハードウェアと通信できません)。もう1つは、GPUは一般に、メモリに関してより制限されていることです。

GPUは依然として非常に特殊なハードウェアです。結局のところ、GPUにPongを書き込むことすらできません。これは、キーボード、マウス、ゲームパッドなどからユーザー入力を直接読み取ったり、オーディオを再生したり、ハードドライブからファイルを読み込んだりすることができないためです。CPUは今でもすべてを調整する「マスターブレイン」のようなものです。

トゥイーンやスキニングのようなものに関しては、それはしばしばGPUで計算されますが、それは「状態管理」のようなものではありません。CPUは、各ボーンの行列をボーン階層に格納し、それらの行列と変形されていない頂点位置をGPUに送信して、その場で計算できるようにする場合があります。そのシナリオでは、GPUにフレームごとにオンザフライでデータを計算させるほど、ゲームの状態がGPUに保存/管理されるのではなく、これらのシナリオでは超高速で実行できます。そもそも永続的に保存されます。このような場合、CPUは結果のデータを読み戻すことさえしません。

通常、GPUは状態の管理にはあまり使用されません。それは、それを行うのに適している場所で、非常に高速に物事を計算するためによく使用されます。そこに状態が保存されている場合、CPUにはすでに十分なデータがあるため、破棄して再生成できる一時的な状態であることがよくあります。例外は、私が見たいくつかのGPGPUソフトウェアで、実際にはアプリケーションの状態をGPU​​に排他的に保存し、CPUにはコピーがまったくなく、CPUはGPUへの書き込みよりもGPUからの読み取りを多く行っていますが、ゲームはないと思いますそれをかなりやっています。

したがって、ほとんどの場合、はい、通常、GPUはゲームの世界と状態をかなり気にしません。CPUは、テクスチャデータやメッシュや画像からのVBOなど、破棄可能なデータを一時的にあちこちに保存するために使用し、GPUを使用して大量の破棄可能なデータをその場で非常に高速に計算して出力します。永続データの保存と出力にはそれほど頻繁には使用されません。

大雑把な例えを考え出すと、ピザレストランのビジネスマネージャーが住所などの顧客レコードを永続的に保存するようなものです。彼らは一時的に彼の速いオートバイでピザ配達人にピザを配達するために住所を与えるかもしれません、しかしそれはあまりにもつながるので、彼らはピザ配達人にすべての顧客の住所を追跡するために独占的に任せるつもりはありません多くのやり取りがあります(さらに、ピザを配達する人は、ピザを配達するすべての顧客の住所を覚えていない可能性がありますが、マネージャーは、大量の顧客データを保存するためのデータベースを備えたコンピューターを持っています)。それは主にビジネスマネジャー->ピザ配達人からの一方向のコミュニケーションです。つまり、「高速バイクを持っているピザ屋さん、この住所にピザを配達してください」のようなものです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

「科学GPU」と「ゲームGPU」の違いは何ですか?

分類Dev

ゲームの更新速度をロックすると、CPU使用率が高くなります。何もしていないときにスレッドをスリープ状態にするにはどうすればよいですか?

分類Dev

このHTMLで3Dは何をしているのですか?

分類Dev

誰かがこのJavaScriptコードが何をしているのか教えてもらえますか

分類Dev

誰かが最後のループが何をしているのか教えてもらえますか?

分類Dev

次のJavaコードが何をしているのか誰かに説明してもらえますか?

分類Dev

以下のコードが何をしているのか誰か説明してもらえますか?

分類Dev

私はオセロと呼ばれるゲームを作っています、そして最後に私は誰が勝ったかを見るためにボードを繰り返したいのですが、ValueErrorに遭遇しています

分類Dev

誰もが独自のYouTubeAPI v3キーを必要としていますか?

分類Dev

誰かがC#ユニティコードを使用して私のクイズゲームで私を助けることができますか

分類Dev

GPUを搭載したCPUと搭載していないCPUの違いは何ですか?

分類Dev

誰かがこのコード行が何をしているのか説明できますか?

分類Dev

誰かがこのコードが何をしているのか説明できますか?

分類Dev

gpu-managerを管理しているのは誰ですか?

分類Dev

誰が私のCPUを抑制していますか?

分類Dev

VMWareゲストとしてUbuntuの3Dアクセラレーションを有効にするにはどうすればよいですか?

分類Dev

CPUとGPUの両方でメモリが不足しているPytorchモデル、何が間違っているのか理解できません

分類Dev

誰かが私のサーバーをハッキングしようとしていますか?私に何ができる?

分類Dev

Intel GPUで実行しているときに、Windowsアプリケーション/ゲームの上限が30FPSになるのはなぜですか?

分類Dev

コンピューターを誰かと共有して、使い続けている間に重い CPU/GPU 計算を実行する

分類Dev

かなりのネットワークとCPUリソースを消費する奇妙なランダムな名前で処理します。誰かが私をハッキングしていますか?

分類Dev

誰が勝ったのか、誰が負けたのかがポップアップするまでに遅らせようとしています(じゃんけんゲーム)

分類Dev

Androidの権限:誰が何を使用していますか?

分類Dev

誰かがこのソートアルゴリズムが何と呼ばれているのか教えてもらえますか?

分類Dev

誰かが(e)が何をしているのか、そしてターゲットオブジェクトについて説明してもらえますか?

分類Dev

誰かが私のサーバーにハッキングしようとしているのでしょうか? 私に何ができる?

分類Dev

誰かがフォローしている人だけの投稿のタイムラインを取得する方法

分類Dev

誰かがチャットせずにプレイしているゲームを認識する(discord bot python)

分類Dev

誰かがこの関数が何をしているのかを段階的に説明できますか

Related 関連記事

  1. 1

    「科学GPU」と「ゲームGPU」の違いは何ですか?

  2. 2

    ゲームの更新速度をロックすると、CPU使用率が高くなります。何もしていないときにスレッドをスリープ状態にするにはどうすればよいですか?

  3. 3

    このHTMLで3Dは何をしているのですか?

  4. 4

    誰かがこのJavaScriptコードが何をしているのか教えてもらえますか

  5. 5

    誰かが最後のループが何をしているのか教えてもらえますか?

  6. 6

    次のJavaコードが何をしているのか誰かに説明してもらえますか?

  7. 7

    以下のコードが何をしているのか誰か説明してもらえますか?

  8. 8

    私はオセロと呼ばれるゲームを作っています、そして最後に私は誰が勝ったかを見るためにボードを繰り返したいのですが、ValueErrorに遭遇しています

  9. 9

    誰もが独自のYouTubeAPI v3キーを必要としていますか?

  10. 10

    誰かがC#ユニティコードを使用して私のクイズゲームで私を助けることができますか

  11. 11

    GPUを搭載したCPUと搭載していないCPUの違いは何ですか?

  12. 12

    誰かがこのコード行が何をしているのか説明できますか?

  13. 13

    誰かがこのコードが何をしているのか説明できますか?

  14. 14

    gpu-managerを管理しているのは誰ですか?

  15. 15

    誰が私のCPUを抑制していますか?

  16. 16

    VMWareゲストとしてUbuntuの3Dアクセラレーションを有効にするにはどうすればよいですか?

  17. 17

    CPUとGPUの両方でメモリが不足しているPytorchモデル、何が間違っているのか理解できません

  18. 18

    誰かが私のサーバーをハッキングしようとしていますか?私に何ができる?

  19. 19

    Intel GPUで実行しているときに、Windowsアプリケーション/ゲームの上限が30FPSになるのはなぜですか?

  20. 20

    コンピューターを誰かと共有して、使い続けている間に重い CPU/GPU 計算を実行する

  21. 21

    かなりのネットワークとCPUリソースを消費する奇妙なランダムな名前で処理します。誰かが私をハッキングしていますか?

  22. 22

    誰が勝ったのか、誰が負けたのかがポップアップするまでに遅らせようとしています(じゃんけんゲーム)

  23. 23

    Androidの権限:誰が何を使用していますか?

  24. 24

    誰かがこのソートアルゴリズムが何と呼ばれているのか教えてもらえますか?

  25. 25

    誰かが(e)が何をしているのか、そしてターゲットオブジェクトについて説明してもらえますか?

  26. 26

    誰かが私のサーバーにハッキングしようとしているのでしょうか? 私に何ができる?

  27. 27

    誰かがフォローしている人だけの投稿のタイムラインを取得する方法

  28. 28

    誰かがチャットせずにプレイしているゲームを認識する(discord bot python)

  29. 29

    誰かがこの関数が何をしているのかを段階的に説明できますか

ホットタグ

アーカイブ