コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
遅延レンダリング
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''遅延レンダリング'''([[英語]]:Deferred Rendering)とは、[[3DCG]]において、物体の描画とライティングを別々に行う技法である。こいつの登場により従来型のレンダリングは「[[フォワードレンダリング]]」と呼ばれるようになった。 == 利点 == === ドローコールの削減 === 遅延レンダリングではシーンの中に[[ポイントライト]]などを多数配置しても[[ドローコール]]があまり増えないという特徴がある。 [[フォワードレンダリング]]での[[ドローコール]]数は以下のようなモデルとライトの掛け算である。 ドローコール数 = モデル数 x ライト数 一方、シンプルな遅延レンダリングでは以下のような感じになる。 ドローコール数 = 初期化x3 + モデル数x3 + ライト数 + 結合処理 ちなみに「x3」の部分は[[マルチプルレンダーターゲット]]を利用すれば「x1」にすることができる。 ドローコール数 = 初期化 + モデル数 + ライト数 + 結合処理 太陽光など[[平行光源]]が1個しかない状況では[[フォワードレンダリング]]の方が圧倒的に有利だが、街灯などの[[ポイントライト]]が何個もある状況では遅延レンダリングの方が有利である。 {| class="wikitable" |+ ! rowspan="2" |モデル数 ! rowspan="2" |ライト数 ! colspan="3" |ドローコール数 ! rowspan="2" |備考 |- !フォワード !デファード !デファード+MRT |- |1 |1 |1 |8 |4 | |- |10 |1 |10 |35 |13 |ライトが少ないときはフォワードレンダリングが有利 |- |10 |2 |20 |36 |14 |MRTありが逆転 |- |10 |4 |40 |38 |16 |MRTなしも逆転 |- |10 |8 |80 |42 |20 | |- |10 |16 |160 |50 |28 | |- |10 |32 |320 |66 |44 | |- |10 |64 |640 |98 |76 | |} この遅延レンダリングの特性から2000年代中頃あたりに「夜中に作戦行動する[[右下から銃の生えたゲーム]]」で大流行した。遅延レンダリングといえばだいたい「夜」である。採用例のほとんどが非常に暗いゲームばかりなので日本では人気がないものばかりです。 == 欠点 == === MSAAが使えない === 遅延レンダリングでのライティング処理は「2D画像処理」であり、その時点で「[[ポリゴン]]のエッジの情報」は喪失している。このため「[[ポリゴン]]のエッジの情報」を用いて[[アンチエイリアシング]]を行う[[MSAA]]は使えない。 [[フォトショップ]]なんかにある「エッジ抽出」をリアルタイムに行い、強引に[[アンチエイリアシング]]するという手法もあるが絶望的に効率が悪い。そのような状況下で少しでも性能を向上させようと、[[MLAA]]、[[FXAA]]、[[TXAA]]、[[SRAA]]、[[DSAA]]、[[ポストMSAA]]など様々な手法が考案されている。 === メモリ使用量が多い === シンプルな遅延レンダリングの実装でもざっくり[[フォワードレンダリング]]の4倍の[[メモリ]]が必要になる。 実装によっても異なるが、だいたい以下のような構成のスクリーンサイズの[[レンダーターゲット]]が必要になる。 * Gバッファ ** Color ** Normal ** Depth * Lighting処理用バッファ 遅延レンダリングが流行りだしたころの[[パソコン]]や[[ゲーム機]]は「[[メインメモリ]]256MBの[[VRAM]]32MB」などであったため結構悩ましい問題であった。最近では[[パソコン]]どころか[[スマホ]]でさえもアホみたいに[[メモリ]]を積んでいるので問題になることはまずない。 === メモリ帯域が必要 === 前述の遅延レンダリングではメモリ使用量が多い問題に関連して、遅延レンダリングではメモリに頻繁に読み書きするためメモリの速度が遅いとかなり残念な結果になります。 とくに[[スマートフォン]]では非常に低速な[[メインメモリ]]の一部を[[VRAM]]として利用するため問題になることが多いです。むしろまともに使える機種は無いと考えた方がいいです。 [[ローエンド]]や[[ミドルレンジ]]の[[スマートフォン]]や[[タブレット]]の[[コストカット]]はだいたい「カタログスペックに現れにくいメモリ帯域周り」と相場が決まっています。素人は「メモリ容量」しかみないからね。 ==手順== ===1. Clear GBuffer=== Color, Normal, Depthなどからなる「GBuffer」を初期化する。 ===2. Draw GBuffer=== GBufferに描画する。この時点ではまだライティングは行わない。描画時にライティングを行わないから「遅延レンダリング」という。 ===3. Lighting=== GBufferと各種ライトを掛け合わせて「ライティング結果」を生成する。 ===4. Combine=== GBufferとライティング結果を合成して最終的な絵が完成する。 ==関連項目== *[[フォワードレンダリン]] *[[遅延レンダリング]] *[[ライトプレパス]] *[[MonoGameで遅延レンダリングをする]] [[category: 3DCG]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化