「遅延レンダリング」の版間の差分

提供:MonoBook
編集の要約なし
編集の要約なし
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
|7
|8
|3
|4
|-
|-
|10
|10
|1
|1
|10
|10
|34
|35
|12
|13
|-
|-
|10
|10
|2
|2
|20
|20
|35
|36
|13
|14
|-
|-
|10
|10
|4
|4
|40
|40
|37
|38
|15
|16
|-
|-
|10
|10
|8
|8
|80
|80
|41
|42
|19
|20
|-
|-
|10
|10
|16
|16
|160
|160
|49
|50
|27
|28
|-
|-
|10
|10
|32
|32
|320
|320
|65
|66
|43
|44
|-
|-
|10
|10
|64
|64
|640
|640
|97
|98
|75
|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とライティング結果を合成して最終的な絵が完成する。

関連項目