私が理解したことがないものがあります。GTA IVのような大きなPCゲームは、CPUの50%を使用して60fpsで実行できますが、回転するティーポット@ 60fpsのDXデモはなんと30%を使用しますか?
私が理解したことがないものがあります。GTA IVのような大きなPCゲームは、CPUの50%を使用して60fpsで実行できますが、回転するティーポット@ 60fpsのDXデモはなんと30%を使用しますか?
回答:
一般的には、
たとえば、簡単に実行できる最適化の1つは、見えないものを実際に描画しないことです。Grand Theft Auto IVの街並みのような複雑なシーンを考えてみましょう。レンダラーが実際にすべての建物と構造をレンダリングしているわけではありません。代わりに、カメラが見えるものだけをレンダリングします。元のカメラに向かって、同じ建物の裏側を飛び回ることができれば、半分造られたくり抜かれたシェル構造が表示されます。カメラが見ることができないすべてのポイントはレンダリングされません。あなたはそれを見ることができないので、あなたにそれを見せようとする必要はありません。
さらに、特定のハードウェアセットに対して開発している場合は、最適化された命令と特別な手法が存在し、さらに高速化が可能になります。
あなたの質問の他の部分は、デモがそれほど多くのCPUを使用する理由です:
...回転ティーポット@ 60fpsのDXデモは、なんと30%を使用しますか?
グラフィックスAPI(などdxdemo
)のデモでは、ハードウェアが適切な例を示すために必要なすべての機能をサポートしていない場合、ソフトウェアレンダラーと呼ばれるものにフォールバックするのが一般的です。これらの機能には、影、反射、レイトレーシング、物理学などが含まれます。
これは、APIのすべての機能を披露するために、存在する可能性が低い、完全にフル機能のハードウェアデバイスの機能を模倣しています。ただし、ハードウェアは実際には存在しないため、代わりにCPUで実行されます。これは、グラフィックスカードに委任するよりもはるかに非効率です-したがって、CPU使用率が高くなります。
忍耐力、技術力、忍耐力。
1つ目のポイントは、DXデモは主に教材であるため、実行速度ではなく明確にするためです。
これはかなり大きな問題ですが、ゲーム開発は主にデータと実行パスをほぼ病理学的程度に理解することです。
3Dゲームはあなたの目をだますのに最適です。たとえば、スクリーンスペースアンビエントオクルージョン(SSAO)と呼ばれる手法があります。これは、表面の不連続部に近いシーンの部分をシャドウイングすることで、よりリアルな感じを与えます。壁のコーナーを見ると、ほとんどの場合、中央よりも少し暗く見えます。
ラジオシティを使用してもまったく同じ効果が得られます。ラジオシティは、かなり正確なシミュレーションに基づいています。ラジオシティはバウンスライトなどの影響も考慮に入れますが、計算コストがかかります。これはレイトレーシングテクニックです。
これはほんの一例です。リアルタイムコンピュータグラフィックスには数百ものアルゴリズムがあり、それらは基本的に適切な近似に基づいており、通常は多くの仮定を行います。たとえば、空間ソートは、速度、カメラの一般的な位置、シーンジオメトリの変更量に応じて、慎重に選択する必要があります。
これらの「最適化」は巨大です -アルゴリズムを効率的に実装して10倍速く実行できますが、同様の結果(「不正」)を生成するスマートアルゴリズムを選択すると、O(N ^ 4)からO( log(N))。
実際の実装を最適化することでゲームがさらに効率的になりますが、これは線形最適化にすぎません。
えーい!
私はこの質問が古いことを知っていますが、誰もVSyncについて言及していないことはエキサイティングです!!! ???
60fpsでのゲームのCPU使用率を60fpsでのティーポットデモのCPU使用率と比較しました。
どちらも(多かれ少なかれ)正確に60fpsで動作しているのは明らかではありませんか?それが答えにつながります...
どちらのアプリもvsyncを有効にして実行します!これは、(ダウンした)レンダリングフレームレートがモニターの「垂直ブランク間隔」にロックされることを意味します。グラフィックハードウェア(および/またはドライバー)は最大でのみレンダリングします。60fps。60fps = 60Hz(Hz =毎秒)リフレッシュレート。したがって、おそらく古い、ちらつきのあるCRTまたは一般的なLCDディスプレイを使用します。100Hzで実行されているCRTでは、おそらく最大100Hzのフレームレートが表示されます。VSyncは、LCDディスプレイにも同様に適用されます(通常、リフレッシュレートは60Hzです)。
したがって、ティーポットのデモは実際にははるかに効率的に実行される可能性があります。CPU時間の30%を使用する場合(GTA IVの50%のCPU時間と比較して)、おそらく、各フレームで使用するCPU時間は少なく、次の垂直ブランク間隔を待つだけです。両方のアプリを比較するには、vsyncを無効にして再度測定する必要があります(両方のアプリのfpsがはるかに高くなります)。
vsyncを無効にしても問題ない場合があります(ほとんどのゲームの設定にはオプションがあります)。vsyncを無効にすると、「ティアリングアーティファクト」が表示されることがあります。
あなたはそれの詳細とウィキペディアでそれが使用される理由を見つけることができます:http : //en.wikipedia.org/wiki/Vsync
ここでの多くの答えは、なぜ私がなぜかというより簡単な質問に答える方法の優れた指標を提供しますが
おそらく、最良の例(確かに最もよく知られているものの1つ)はIdソフトウェアです。彼らは非常に早い時期に、キーン司令官の時代(3Dのかなり前)で、グラフィックスより優れた最新のハードウェア(この場合はEGAグラフィックスカード!)に依存していても、何かを達成するための賢い方法1を考え出したことに気付きました。これはあなたのゲームを際立たせる競争です。これは真実でしたが、彼らはさらに、彼ら自身が新しいゲームやコンテンツを考え出す必要がなく、テクノロジーをライセンスできるので、次世代のエンジンを開発しながら競争を再び飛躍させながら、他の人から収入を得ることができることに気付きました。
これらのプログラマーの能力(ビジネスに精通していることと相まって)は、彼らを豊かにしたものです。
そうは言っても、そのような人々をやる気にさせるのは必ずしもお金ではありません。それは、達成したい、達成したい欲求と同じくらいの可能性があります。彼らが初期の頃に稼いだお金は、彼らが今楽しんでいることに専念する時間があることを意味します。そして、多くの人が外部の興味を持っていますが、ほとんどすべての人はまだプログラミングを行っており、最後の反復よりも優れた方法を模索しています。
簡単に言うと、ティーポットのデモを書いた人は、おそらく次の問題の1つ以上を抱えていました。
最後は厳しい2に聞こえるかもしれませんが、他の人よりも優れている人がいることは明らかです。ベルカーブは極端な場合があり、そのスキルで行われる対応する極端な場合に惹きつけられる傾向があります。
低い目標が実際に主な理由である可能性が高いです。ティーポットデモのターゲットは、まさにそのデモでした。しかし、プログラマーのスキルのデモではありません3。これは、(大きな)OSの1つの小さなファセット(この場合はDXレンダリング)のデモになります。
デモを見ている人にとっては、見栄えが良い限り、必要以上に多くのCPUを使用することはできません。受益者がいない場合、廃棄物を排除するインセンティブはありません。比較すると、ゲームはより良いAI、より良いサウンド、より多くのポリゴン、より多くの効果のために予備のサイクルを持ちたいと思います。
いくつかの理由により
編集:少数の数字を与えるために
2.8 GHz Athlon-64、NV-6800 GPU。結果は次のとおりです。
シーンには、見た目よりも多くのことが起こっている場合があります。たとえば、数千の頂点、環境マッピング、バンプマッピング、その他の複雑なピクセルシェーダーがすべて同時にレンダリングされる回転ティーポットは、大量の処理に相当します。多くの場合、これらのティーポットのデモは、ある種の特殊効果を誇示することのみを目的としています。また、絶対的なパフォーマンスが目標でない場合でも、GPUを最大限に活用できるとは限りません。
ゲームでも同様の効果が見られますが、通常はフレームレートを最大化するために妥協した方法で行われます。これらの最適化は、ゲームに表示されるすべてのものに拡張されます。問題は、「最小の処理能力で、どのようにして最も壮観でリアルなシーンを作成できるか」です。それが、ゲームプログラマーを最高のオプティマイザの1つにしている理由です。
与えられたすべての適格で適切な答えによって、重要な答えはまだありません。WindowsのCPU使用率カウンターは、あまり信頼できません。この単純なティーポットデモは、そのアイドルループでレンダリング関数を呼び出すだけで、バッファースワップでブロックしていると思います。
これで、Windows CPU使用率カウンターは、各プロセス内で費やされたCPU時間だけを確認し、このCPU時間の使用方法は確認しません。追加してみてください
Sleep(0);
レンダリング関数から戻った直後、比較します。
GTA IVのような大きなPCゲームは、CPUの50%を使用して60fpsで実行できますが、回転するティーポット@ 60fpsのDXデモはなんと30%を使用しますか?
GTAはDXデモよりも効率的である可能性が高いですが、この方法でCPU効率を測定することは本質的に失敗します。効率は、たとえば、所定の時間内に行う作業量によって定義できます。単純な反例:論理CPUごとに1つのスレッドを生成し、単純な無限ループを実行します。CPU使用率は100%になりますが、有効な作業が行われないため、効率的ではありません。
これはまた、答えにつながります。ゲームはどのように効率的になりますか?「大規模なゲーム」をプログラミングする場合、ゲームをあらゆる面で最適化するために多大な努力が費やされます(現在、通常はマルチコアの最適化も含まれています)。DXデモに関しては、その要点は高速に実行されているのではなく、概念を実証していることです。
CPUではなくGPUの使用率を確認する必要があると思います...グラフィックカードは、GTA IVではTeapotサンプルよりもはるかにビジーです(実際にはアイドル状態です)。
たぶん、あなたはこのモニターのようなものを使ってそれをチェックすることができます:
http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html
また、フレームレートも考慮する必要があります。ティーポットのサンプルがフルスピード(おそらく1000fps)で実行されており、ほとんどのゲームはモニターのリフレッシュ頻度(約60fps)に制限されています。
vsyncの答えを見てください。これが、同じフレームレートで実行されている理由です。
第二に、CPUはゲームでリードを逃しています。簡単に説明すると、メインゲームループは無限ループにすぎません。
while(1) {
update();
render();
}
ゲーム(またはこの場合はティーポット)があまり機能していない場合でも、ループでCPUを使い果たしています。
GTAの50%cpuは「生産性」が高く、デモでは30%です。しかし、GTAは多くの詳細を更新しています。デモに「Sleep(10)」を追加しても、CPUが1トン低下する可能性があります。
最後に、GPUの使用状況を確認します。デモはおそらく最新のビデオカードで1%未満ですが、GTAはゲームプレイ中に過半数を占めるでしょう。
つまり、ベンチマークと測定値は正確ではありません。
DXティーポットデモは、CPUの30%を使用して有用な作業を行っていません。それは他に何もしないのでそれは忙しい待っています。
私がアンリアルシリーズについて知っていることから、いくつかの規則はカプセル化のように破られています。コードは、ゲームに応じてバイトコードまたは直接マシンコードにコンパイルされます。また、オブジェクトはメッシュの形でレンダリングおよびパッケージ化され、テクスチャ、照明、影などが事前に計算されますが、純粋な3Dアニメーションではこれをリアルタイムで行う必要があります。ゲームが実際に実行されているときは、オブジェクトの可視部分のみをレンダリングし、クローズアップ時にのみテクスチャの詳細を表示するなど、いくつかの最適化もあります。最後に、ビデオゲームは、ある時点でプラットフォームを最大限に活用するように設計されている可能性があります(例:Intelx86 MMX / SSE、DirectXなど)。
ここで欠けている答えの重要な部分があると思います。ほとんどの答えは、「データを知る」ことを示しています。事実は、同じ方法で同じ程度の重要性で、次のことも知っている必要があることです。
しかし、それに加えて、現在の最新のコンピューターでは、実際の1080pビデオを>> 30ftpで再生することはできません(64ビットの単一の1080p画像は15000 Ko / 14.9 MBかかります)。その理由は、サンプリング/精度のためです。ビデオゲームは、ピクセル、画像、データなどに倍精度(64ビット)を使用することはなく、低い精度(約4〜8ビット)を使用し、補間技法で再スケーリングして精度を下げて、妥当な計算を可能にします。時間。
データのクリッピング(OpenGL標準とソフトウェア実装の両方)、データ圧縮などの他の手法もあります。ハードウェアの機能に関して、現在のGPUは現在のCPUよりも300倍以上高速になる可能性があることにも注意してください。ただし、問題が完全に最適化され、完全に並列化可能(特にタスクの並列化可能)でない限り、優れたプログラマーは10〜20倍の係数を得る可能性があります。
経験上、最適化は指数曲線のようなものだと言えます。最適なパフォーマンスを得るには、必要な時間が非常に重要になる場合があります。
したがって、ティーポットに戻るには、ジオメトリがどのように表現され、サンプリングされ、ジオメトリ/テクスチャ、および最も重要な詳細(精度、サンプリングなど)に関してGTA 5でVがどのように見えるかを確認する必要があります。