「定数バッファ」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | ''' | + | '''コンスタントバッファ'''([[英語]]: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]]に格納しておいて再利用すれば効率が良くなるということのようだ。 | ||
== 関連項目 == | == 関連項目 == | ||
72行目: | 17行目: | ||
* [[バーテックスバッファ]]([[頂点バッファ]]) | * [[バーテックスバッファ]]([[頂点バッファ]]) | ||
* [[インデックスバッファ]] | * [[インデックスバッファ]] | ||
− | * [[コンスタントバッファ]] | + | * [[コンスタントバッファ]] |
* [[三角形の秘密についてリークする]] | * [[三角形の秘密についてリークする]] | ||
[[category: 3DCG]] | [[category: 3DCG]] | ||
− |