「Indirect Drawing」の版間の差分

ページの作成:「Indirect Drawing (間接描画)とは、GPUでの画像描画の高速化の手法のひとつで、1回の描画で複数のシェーダーにまたがる場合に…」
 
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
Indirect Drawing (間接描画)とは、GPUでの画像描画の高速化の手法のひとつで、1回の描画で複数のシェーダーにまたがる場合に、いちいちメインメモリにデータを戻さない方法を指します。
'''Indirect Drawing''' (間接描画)とは、[[GPU]]での画像描画の高速化の手法のひとつで、1回の描画で複数の[[シェーダー]]を段々に呼び出す必要がある場合に、いちいち[[VRAM]]から[[メインメモリ]]に[[データ]]を戻さない方法を指します。


この機能を利用するにはGPUが対応している必要があります。
この機能を利用するにはGPUが対応している必要があります。
11行目: 11行目:
# CPUはVRAMからメインメモリにデータ転送
# CPUはVRAMからメインメモリにデータ転送


1回の描画で複数のシェーダーにまたがる場合は上記が何度も繰り返されます。とくにデータ転送は無駄です。VRAMからメインメモリに転送して、すぐにメインメモリからVRAMに転送するだけ。無駄ですね。
1回の描画で複数のシェーダーにまたがる場合は上記が何度も繰り返されます。とくにデータ転送は無駄です。VRAMからメインメモリに転送して、またすぐにメインメモリからVRAMに転送するだけ。無駄ですね。


その解決策として一部のGPUに「VRAM上のデータを再利用して描画」というDrawIndirectコマンドが追加されました。2ステージ目以降の「CPUがGPUに描画指示」をDrawIndirectコマンドで行えば無駄なデータ転送がなくなります。めでたしめでたし。
その解決策として一部のGPUに「VRAM上のデータを再利用して描画」というDrawIndirectコマンドが追加されました。2ステージ目以降の「CPUがGPUに描画指示」をDrawIndirectコマンドで行えば無駄なデータ転送がなくなります。めでたしめでたし。


<br />
<br />