定数バッファ

提供: MonoBook
2019年11月22日 (金) 02:00時点におけるAdministrator (トーク | 投稿記録)による版 (ページの作成:「'''コンスタントバッファ'''(英語: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に格納しておいて再利用すれば効率が良くなるということのようだ。

関連項目