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