現代のゲームエンジンはどのようにしてリアルタイムレンダリングを実現するのでしょうか?Blenderの「遅い」レンダリングはどうですか?


90

私はgamedevとBlenderの両方に慣れていないので、振ることができないものがあります:

Blenderでは、1つのレンダー(より高度なCyclesレンダラーを使用した場合でも)が私のマシンで最大45秒かかることがあります。しかし、明らかに、ゲームでは素晴らしいグラフィックを使用できるため、レンダリングは1秒間に複数回、リアルタイムで継続的に行われます。

それで、Blenderのレンダリングが「遅い」ように見えるのと、ゲームエンジンがどのようにリアルタイム(またはほぼリアルタイム)のレンダリングを達成するのかについて、切断とは何かも疑問に思っています。


3
リアルタイムレンダリングはそれ自体が大きなトピックです。それについて書かれた本がたくさんあります(「リアルタイムレンダリング」を含む)。また、Cyclesのようなレンダラーは、ゲームエンジンの3Dレンダラーとはまったく異なる動作をします
-UnholySheep

42
@UnholySheepもちろん、それらを比較できます。質問に答えるために、他に誰が違いを説明しますか?
user985366

2
@ 10Repliesしかし、この質問はそのサイトでは話題になりません。
GiantCowFilms

3
@ 10Replies:OPはBlenderについて言及していますが、本質的には、リアルタイムゲームエンジンが3Dシーンをほぼ写真のようにリアルな3Dレンダラー(Blenderだけでなく他の多くのレンダーなど)よりも高速にレンダリングするように見える理由についての質問です。これは、受け入れられた回答によって回答される質問でもあることに注意してください。それを念頭に置いて、質問がBlenderに特に質問されるBlenderではなく、一般的なゲーム開発技術についての質問をすることができるGame Developmentでここでよりトピックになっていることに同意します。
ORマッパー

3
ここでの秘密は、驚くほど正確である必要はないということです。InvSqrt
Dmitry Grigoryev

回答:


115

リアルタイムレンダリングは、現代のリアルタイムレンダリングでさえ、トリック、ショートカット、ハッキング、近似のグラブバッグです。

たとえば影を取ります。

任意の数のライトと任意の複雑なオブジェクトからリアルタイムの影をレンダリングするための完全に正確で堅牢なメカニズムはまだありません。シャドウマッピングテクニックには複数のバリエーションがありますが、それらはすべてシャドウマップでよく知られている問題に悩まされており、これらの「修正」でさえ実際には回避策とトレードオフのコレクションです(経験則として「深さバイアス」または「ポリゴンオフセット」という用語が見られる場合は、堅牢な手法ではありません)。

リアルタイムレンダラーで使用される手法のもう1つの例は、事前計算です。何か(照明など)が遅すぎてリアルタイムで計算できない場合(使用する照明システムに依存する場合があります)、事前に計算して保存し、事前に計算されたデータを実際に使用できます-パフォーマンスの向上のための時間。これは多くの場合、動的な効果を犠牲にします。これは、ストレートメモリとコンピューティングのトレードオフです。メモリは多くの場合安価で豊富であり、コンピューティングはそうでない場合が多いため、コンピューティングの節約と引き換えに余分なメモリを消費します。

一方、オフラインレンダラーとモデリングツールは、正確さと品質に重点を置く傾向があります。また、動的に変化するジオメトリ(構築中のモデルなど)で作業しているため、物事を再計算する必要がありますが、リアルタイムレンダラーは、この要件を持たない最終バージョンで作業します。


14
言及する別の点は、ゲームがエリアのビューをすばやくレンダリングするために必要なすべてのデータを生成するために使用される計算量は、1つのビューをレンダリングするために必要な計算量よりも桁違いに大きい場合があることです。事前計算なしでエリアのビューのレンダリングに1秒かかるが、一部の事前計算されたデータでそれを1/100秒に短縮できる場合、リアルタイムゲームでビューが必要な場合は事前計算に20分を費やすことが役立ちますが、一つはちょうど... 4分を過ごすためにはるかに高速であったであろう10秒24fpsのムービーを望んでいる
supercat

9
... 240の必要なビューを1秒間に1つのレートで生成します。
supercat

@supercatのおかげで、レンダリングには手間がかからず、プロセスを大幅に制御できます。ゲームエンジンを使用してレンダリングすることもできます...機能を犠牲にする準備ができている場合。しかし、あなたが言ったように、その価値はありません。
joojaa

私が思い出すことができるこの印象的な例の1つは、非常に時間のかかる事前計算手法の組み合わせを使用して、非常に限られたマシンで比較的驚mindのリアルタイム3Dグラフィックスを実現できたオリジナルのQuakeエンジン(〜1996)です。BSPツリーと事前レンダリングされた照明効果は事前に生成されました。そのエンジンのレベルの設計には、通常、マップコンパイルツールの終了を何時間も(通常は一晩)待つ必要がありました。トレードオフは、本質的に、オーサリング時間を犠牲にしてレンダリング時間を短縮することでした。
ジェイソンC

(元ドゥームエンジン[1993]同様の前計算していたマラソン。同様に持っているが、私は覚えていません、私はマラソンのレベルを構築覚えているが、私は関与していたものを思い出すことができません。)
ジェイソン・C

109

現在の答えは、関係する一般的な問題を説明するのに非常に良い仕事をしましたが、重要な技術的詳細を見逃していると感じています。Blenderの「Cycles」レンダリングエンジンは、ほとんどのゲームが使用するものとは異なるタイプのエンジンです

通常、ゲームは、シーン内のすべてのポリゴンを反復処理して個別に描画することによりレンダリングされます。これは、平面画像を生成するために、仮想カメラを介してポリゴン座標を「投影」することにより行われます。この手法がゲームに使用される理由は、最新のハードウェアがこの手法に基づいて設計されており、比較的高いレベルの詳細までリアルタイムで実行できるためです。興味深いことに、これは、Blender FoundationがCyclesエンジンを優先して古いエンジンを削除する前に、Blenderの以前のレンダリングエンジンで採用されていた手法でもあります。

ポリゴンレンダリング

一方、サイクルはレイトレーシングエンジンとして知られています。ポリゴンを見て個別にレンダリングする代わりに、仮想光線をシーン(最終画像のピクセルごとに1つ)に投げ出し、その光線を複数のサーフェスで反​​射させ、そのデータを使用してピクセルの色を決定しますあるべきです。レイトレーシングは、非常に計算コストの高い手法であり、リアルタイムレンダリングには実用的ではありませんが、より詳細なレベルとリアリズムを提供するため、画像やビデオのレンダリングに使用されます。

レイトレーシングレンダリング


レイトレーシングとポリゴンレンダリングの簡単な説明は、簡潔にするために大幅に削除されています。テクニックについてもっと知りたい場合は、私が召集できるよりも良い説明を書いた多くの人がいると思うので、詳細なチュートリアルや本を探すことをお勧めします。

また、3Dレンダリングにはさまざまな手法があり、一部のゲームは特定の目的でレイトレーシングのバリエーションを実際に使用していることにも注意してください。


3
非常に良い点で+1。私は意図的にレイトレーシングとラスター化のうさぎの穴を掘り下げなかったので、これを補足として持つのは素晴らしいことです。
マキシマスミニマス

16
この答えは、違いの核心をより深く理解します。ゲームエンジンはラスタライズ(前方または遅延)を実行し、オフラインレンダラー(Blender、Rendermanなど)はレイトレーシングを実行します。画像を描画するための2つの完全に異なるアプローチ。
19:31に販売

4
@ LeComteduMerde-fou gamedevはゲ​​ーム開発者を対象としているため、補足的な技術的な説明は、技術的に傾倒している読者にとって有益であると感じました。
ファラプ

1
@ssell Trueですが、レイトレーシングだけではありません-レイトレーシングがなくても、GPUレンダリングであっても、Blenderのレンダリングは通常、はるかに詳細で遅くなります。これは主に、正確さに焦点を当てていることに関連しています-より良いテクスチャフィルタリングと解像度、アンチエイリアシング、ライティング、シャドウマッピング、Z精度、四角形、双方向サーフェス、多数のポリゴンカウント、高解像度出力、正確なバンプマッピング、事前に計算されたマップの欠如、モーフィング、正確な運動学...これは、ゲームエンジンに欠けている機能や偽造された機能の長いリストです。
ルアーン

1
@ちぃ 私はART VPSを考えていました。それはリアルタイムではなく単なる加速でした。
ジェイソンC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.