コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
ドローコール
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
2021年11月16日 (火) 07:58時点における
Administrator
(
トーク
|
投稿記録
)
による版
(
→メッシュベイカー
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''ドローコール'''(英語:draw call)とは、[[CPU]]から[[GPU]]に描画依頼を行うことをいう。 最近は[[GPGPU]]などの登場で「描画を伴わないドローコール」も増えており、どちらかというと「実行依頼」といった方がいい感じになりつつある。 == 概要 == ドローコールはとても重たい処理である。[[シェーダー]]で実行したい[[プログラム]]を設定して、シェーダーに渡すモデルや[[テクスチャマップ]]や変数などを設定して、ドローコールをする。 下手をすると[[GPU]]での「主たる処理」そのものよりも「呼び出し」の方が重いこともあるくらい重たい。 == ドローコールを減らす手法 == 1フレームの描画に必要な「ドローコールの数」は、[[フォワードレンダリング]]ではシーン中にある「モデル」と「ライト」の数の掛け算となる。つまりシーン内のオブジェクト数が増えるに従ってどんどん重くなる。 ドローコールはとても重たい処理である。その数を減らすことができればパフォーマンスが劇的に向上させることができる。涙ぐましい手法が色々と考案されている。 === インスタンシング === 複数の同一モデルを1回のドローコールで描画する手法である。モデルは同一だが、「位置」や「向き」や「大きさ」だけが異なるという場合に使用できる。形状が変化しているものには使用できない。 [[DirectX10]]以降の世代のGPUでは「[[GPUインスタンシング]]」として[[ハードウェア]]実装されているので難しいことを考える必要はない。 一方で[[Android]]などで主流の[[OpenGL ES 2.0]]([[DirectX9]]世代相当)では当然ながら[[GPUインスタンシング]]は使えない。[[ソフトウェア]]で擬似的に[[インスタンシング]]を行うことになる。 === メッシュベイカー === [[メッシュベイカー]]は背景などに使用される複数のモデルを、事前に「1つのモデル」に結合してしまう手法である。建築物のように動かないモデルだと比較的簡単に実装できる。 モデルを一通り読み込んだ後に結合すると利便性がよい。 結合する際には[[ハードウェア]]的に「[[インデックスバッファ]]のサイズは16ビット整数(最大値65535)」と制限されている環境を考慮して65535インデックスの範囲内になるように結合するといい感じである。 === 遅延レンダリング === [[遅延レンダリング]]のように1回(1フレーム)の描画に複数のドローコールを伴う手法もある。 * [[Gバッファ]]の初期化 * 拡散色を計算してGバッファに格納 * 深度を計算してGバッファに格納 * 法線を計算してGバッファに格納 * Gバッファを結合 [[遅延レンダリング]]は、一見するとドローコールが増えて見えるが、「ライトが増えても常に一定数のドローコールに収まる」という特徴がある。 == その他 == 少しでも高速化すべくドローコールを[[キュー]]に積んで実際のドローコールは別[[スレッド]]で行うという「[[GPU]]を休ませない」という手法もある。 これが当たり前となっている[[フレームワーク]]もあり、それを知らずに「ドローコールしたのに結果が返ってこない」とハマるケースもあるので注意しよう。
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化