差分

ナビゲーションに移動 検索に移動

定数バッファ

2,020 バイト追加, 2019年11月22日 (金) 02:00
ページの作成:「'''コンスタントバッファ'''(英語:Constant Buffer、通称:cbuffer)とは、CPUで動くプログラム変数群を、GPUで動…」
'''コンスタントバッファ'''([[英語]]:Constant Buffer、通称:cbuffer)とは、[[CPU]]で動く[[プログラム]]の[[変数]]群を、[[GPU]]で動く[[プログラマブルシェーダー]]に[[定数]]群としてドスンと送り込むバッファ、機構をいう。

== 概要 ==
[[CPU]]側で動く[[プログラム]]の[[変数]]を、[[GPU]]側で動く[[プログラマブルシェーダー]]に[[定数]]として送り込むには、
* Direct3D 9ではSetVertexShaderConstantとSetPixelShaderConstantを使って1個1個送り込んでいた。
* Direct3D 10からはコンスタントバッファ(Constant Buffer、cbuffer)を使用してドスンと送信するようになった。

Direct3D 9では[[ドローコール]]の直前で毎回1個1個変数単位で設定していたが、
Direct3D 10からはコンスタントバッファを1個設定するだけでよい。
つまり[[バーテックスバッファ]]や[[インデックスバッファ]]などと同様に再利用できるわけだ。

シェーダー定数には主に[[ディレクショナルライト]]や[[ポイントライト]]の座標や明るさなどを格納していることが多い。これらはゲームシーンの中でそんなに勢いよく変化するものではない。[[ゲーム]]内で時間経過とともに昼から夜に、夜から昼になるものでも[[フレームレート]]単位でみたら変化などないに等しい。何千回、何万回という[[ドローコール]]で1回変化するくらいのものである。
ならば定数はコンスタントバッファとして[[GPU]]内の[[VRAM]]に格納しておいて再利用すれば効率が良くなるということのようだ。

== 関連項目 ==
* [[バーテックスシェーダー]]
* [[バーテックスバッファ]]([[頂点バッファ]])
* [[インデックスバッファ]]
* [[コンスタントバッファ]]
* [[三角形の秘密についてリークする]]

[[category: 3DCG]]

案内メニュー