メインメニューを開く

差分

遅延レンダリング

2,819 バイト追加, 2023年9月12日 (火) 02:05
'''遅延レンダリング'''([[英語]]:Deferred Rendering)とは、[[3DCG]]において、物体の描画とライティングを別々に行う技法である。こいつの登場により従来型のレンダリングは「[[フォワードレンダリング]]」と呼ばれるようになった。
==概要利点 ===== ドローコールの削減 ===遅延レンダリングではシーンの中に[[ポイントライト]]などを多数配置しても[[ドローコール]]が増えないという特徴がある。があまり増えないという特徴がある。
[[フォワードレンダリング]]での[[ドローコール]]数は以下のようなモデルとライトの掛け算である。
ドローコール数 = モデル数 x ライト数
一方、遅延レンダリングでは以下のような感じになる。ちなみに「x3」の部分は[[マルチプルレンダーターゲット]]を利用すれば「x1」にすることができる。一方、シンプルな遅延レンダリングでは以下のような感じになる。
ドローコール数 = 初期化x3 + モデル数x3 + ライト数 + 結合処理
ちなみに「x3」の部分は[[マルチプルレンダーターゲット]]を利用すれば「x1」にすることができる。 ドローコール数 = 初期化 + モデル数 + ライト数 + 結合処理  太陽光など[[平行光源]]が1個しかない状況では[[フォワードレンダリング]]の方が有利だが、街灯などのの方が圧倒的に有利だが、街灯などの[[ポイントライト]]が何個もある状況では遅延レンダリングの方が有利である。
{| class="wikitable"
|+
! rowspan="2" |ライト数
! colspan="3" |ドローコール数
! rowspan="2" |備考
|-
!フォワード
|8
|4
|
|-
|10
|35
|13
|ライトが少ないときはフォワードレンダリングが有利
|-
|10
|36
|14
|MRTありが逆転
|-
|10
|38
|16
|MRTなしも逆転
|-
|10
|42
|20
|
|-
|10
|50
|28
|
|-
|10
|66
|44
|
|-
|10
|98
|76
|
|}
2000年代中頃あたりに夜中に作戦行動するこの遅延レンダリングの特性から2000年代中頃あたりに「夜中に作戦行動する[[右下から銃の生えたゲーム]]で大流行した。遅延レンダリングといえばだいたい「夜」である。」で大流行した。遅延レンダリングといえばだいたい「夜」である。採用例のほとんどが非常に暗いゲームばかりなので日本では人気がないものばかりです。 == 欠点 == === MSAAが使えない ===遅延レンダリングでのライティング処理は「2D画像処理」であり、その時点で「[[ポリゴン]]のエッジの情報」は喪失している。このため「[[ポリゴン]]のエッジの情報」を用いて[[アンチエイリアシング]]を行う[[MSAA]]は使えない。 [[フォトショップ]]なんかにある「エッジ抽出」をリアルタイムに行い、強引に[[アンチエイリアシング]]するという手法もあるが絶望的に効率が悪い。そのような状況下で少しでも性能を向上させようと、[[MLAA]]、[[FXAA]]、[[TXAA]]、[[SRAA]]、[[DSAA]]、[[ポストMSAA]]など様々な手法が考案されている。 === メモリ使用量が多い ===シンプルな遅延レンダリングの実装でもざっくり[[フォワードレンダリング]]の4倍の[[メモリ]]が必要になる。 実装によっても異なるが、だいたい以下のような構成のスクリーンサイズの[[レンダーターゲット]]が必要になる。* Gバッファ** Color** Normal** Depth* Lighting処理用バッファ 遅延レンダリングが流行りだしたころの[[パソコン]]や[[ゲーム機]]は「[[メインメモリ]]256MBの[[VRAM]]32MB」などであったため結構悩ましい問題であった。最近では[[パソコン]]どころか[[スマホ]]でさえもアホみたいに[[メモリ]]を積んでいるので問題になることはまずない。 === メモリ帯域が必要 ===前述の遅延レンダリングではメモリ使用量が多い問題に関連して、遅延レンダリングではメモリに頻繁に読み書きするためメモリの速度が遅いとかなり残念な結果になります。 とくに[[スマートフォン]]では非常に低速な[[メインメモリ]]の一部を[[VRAM]]として利用するため問題になることが多いです。むしろまともに使える機種は無いと考えた方がいいです。 [[ローエンド]]や[[ミドルレンジ]]の[[スマートフォン]]や[[タブレット]]の[[コストカット]]はだいたい「カタログスペックに現れにくいメモリ帯域周り」と相場が決まっています。素人は「メモリ容量」しかみないからね。
==手順==