「定数バッファ」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''コンスタントバッファ'''(英語:Constant Buffer、通称:cbuffer)とは、CPUで動くプログラム変数群を、GPUで動…」)
 
1行目: 1行目:
 
'''コンスタントバッファ'''([[英語]]:Constant Buffer、通称:cbuffer)とは、[[CPU]]で動く[[プログラム]]の[[変数]]群を、[[GPU]]で動く[[プログラマブルシェーダー]]に[[定数]]群としてドスンと送り込むバッファ、機構をいう。
 
'''コンスタントバッファ'''([[英語]]:Constant Buffer、通称:cbuffer)とは、[[CPU]]で動く[[プログラム]]の[[変数]]群を、[[GPU]]で動く[[プログラマブルシェーダー]]に[[定数]]群としてドスンと送り込むバッファ、機構をいう。
 +
 +
[[OpenGL]]界隈では「[[Uniform Buffer Object]]」という方言が使われている。意味はほぼ同じである。
  
 
== 概要 ==
 
== 概要 ==

2020年3月10日 (火) 07:06時点における版

コンスタントバッファ英語:Constant Buffer、通称:cbuffer)とは、CPUで動くプログラム変数群を、GPUで動くプログラマブルシェーダー定数群としてドスンと送り込むバッファ、機構をいう。

OpenGL界隈では「Uniform Buffer Object」という方言が使われている。意味はほぼ同じである。

概要

CPU側で動くプログラム変数を、GPU側で動くプログラマブルシェーダー定数として送り込むには、

  • Direct3D 9ではSetVertexShaderConstantとSetPixelShaderConstantを使って1個1個送り込んでいた。
  • Direct3D 10からはコンスタントバッファ(Constant Buffer、cbuffer)を使用してドスンと送信するようになった。

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

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

関連項目