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