「遅延レンダリング」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 7行目: | 7行目: | ||
ドローコール数 = モデル数 x ライト数 | ドローコール数 = モデル数 x ライト数 | ||
一方、遅延レンダリングでは以下のような感じになる。ちなみに「x3」の部分は[[マルチプルレンダーターゲット]]を利用すれば「x1」にすることができる。 | |||
ドローコール数 = 初期化x3 + モデル数x3 + ライト数 | ドローコール数 = 初期化x3 + モデル数x3 + ライト数 | ||
| 75行目: | 75行目: | ||
===4. Combine=== | ===4. Combine=== | ||
GBufferとライティング結果を合成して最終的な絵が完成する。 | GBufferとライティング結果を合成して最終的な絵が完成する。 | ||
== 関連項目 == | |||
* [[フォワードレンダリン]] | |||
* [[遅延レンダリング]] | |||
* [[ライトプレパス]] | |||
* [[MonoGameで遅延レンダリングをする]] | |||
[[category: 3DCG]] | |||
2020年4月8日 (水) 05:26時点における版
遅延レンダリング(英語:Deferred Rendering)とは、3DCGにおいて、物体の描画とライティングを別々に行う技法である。こいつの登場により従来型のレンダリングは「フォワードレンダリング」と呼ばれるようになった。
概要
遅延レンダリングではシーンの中にポイントライトなどを多数配置してもドローコールが増えないという特徴がある。
フォワードレンダリングでのドローコール数は以下のようなモデルとライトの掛け算である。
ドローコール数 = モデル数 x ライト数
一方、遅延レンダリングでは以下のような感じになる。ちなみに「x3」の部分はマルチプルレンダーターゲットを利用すれば「x1」にすることができる。
ドローコール数 = 初期化x3 + モデル数x3 + ライト数
太陽光など平行光源が1個しかない状況ではフォワードレンダリングの方が有利だが、街灯などのポイントライトが何個もある状況では遅延レンダリングの方が有利である。
| モデル数 | ライト数 | フォワード | デファード |
| 1 | 1 | 1 | 7 |
| 10 | 1 | 10 | 34 |
| 10 | 2 | 20 | 35 |
| 10 | 4 | 40 | 37 |
| 10 | 8 | 80 | 41 |
| 10 | 16 | 160 | 49 |
| 10 | 32 | 320 | 65 |
| 10 | 64 | 640 | 97 |
2000年代中頃あたりに夜中に作戦行動する右下から銃の生えたゲームで大流行した。
手順
1. Clear GBuffer
Color, Normal, Depthなどからなる「GBuffer」を初期化する。
2. Draw GBuffer
GBufferに描画する。この時点ではまだライティングは行わない。描画時にライティングを行わないから「遅延レンダリング」という。
3. Lighting
GBufferと各種ライトを掛け合わせて「ライティング結果」を生成する。
4. Combine
GBufferとライティング結果を合成して最終的な絵が完成する。