クラス ShaderProgram

シェーダープログラムを表すクラス [詳細]

ShaderProgramに対する継承グラフ
BasicProgram

すべてのメンバ一覧

Public メソッド

 ShaderProgram (string fileName)
 シェーダープログラムを作成する (ファイルから)
 ShaderProgram (string vpFileName, string fpFileName)
 シェーダープログラムを作成する (ファイルから)
 ShaderProgram (string fileName, ShaderProgramOption option)
 シェーダープログラムを作成する (ファイルから、オプションあり)
 ShaderProgram (string vpFileName, string fpFileName, ShaderProgramOption option)
 シェーダープログラムを作成する (ファイルから、オプションあり)
 ShaderProgram (byte[] fileImage)
 シェーダープログラムを作成する (ファイルイメージから)
 ShaderProgram (byte[] vpFileImage, byte[] fpFileImage)
 シェーダープログラムを作成する (ファイルイメージから)
 ShaderProgram (byte[] fileImage, ShaderProgramOption option)
 シェーダープログラムを作成する (ファイルイメージから、オプションあり)
 ShaderProgram (byte[] vpFileImage, byte[] fpFileImage, ShaderProgramOption option)
 シェーダープログラムを作成する (ファイルイメージから、オプションあり)
virtual Object ShallowClone ()
 シェーダープログラムを複製する
void Dispose ()
 シェーダープログラムのアンマネージドリソースを解放する
int FindUniform (string name)
 ユニフォーム変数を名前で検索する
int FindAttribute (string name)
 アトリビュート変数を名前で検索する
string GetUniformBinding (int index)
 ユニフォーム変数のバインディングを取得する
void SetUniformBinding (int index, string name)
 ユニフォーム変数のバインディングを設定する
string GetAttributeBinding (int index)
 アトリビュート変数のバインディングを取得する
void SetAttributeBinding (int index, string name)
 アトリビュート変数のバインディングを設定する
ShaderUniformType GetUniformType (int index)
 ユニフォーム変数のタイプを取得する
ShaderAttributeType GetAttributeType (int index)
 アトリビュート変数のタイプを取得する
string GetUniformName (int index)
 ユニフォーム変数の名前を取得する
string GetAttributeName (int index)
 アトリビュート変数の名前を取得する
int GetUniformSize (int index)
 ユニフォーム変数の配列サイズを取得する
int GetAttributeSize (int index)
 アトリビュート変数の配列サイズを取得する
void SetUniformValue (int index, ref Matrix4 value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, ref Vector4 value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, ref Vector3 value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, ref Vector2 value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, float value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, int value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, float[] value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, int[] value)
 ユニフォーム変数の値をセットする
void SetUniformValue (int index, int offset, ref Matrix4 value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, ref Vector4 value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, ref Vector3 value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, ref Vector2 value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, float value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, int value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, float[] value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, int offset, int[] value)
 ユニフォーム変数の値をセットする (オフセットあり)
void SetUniformValue (int index, Matrix4[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetUniformValue (int index, Vector4[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetUniformValue (int index, Vector3[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetUniformValue (int index, Vector2[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetUniformValue (int index, float[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetUniformValue (int index, int[] value, int to, int from, int count)
 ユニフォーム変数の値をセットする (配列データ用)
void SetAttributeValue (int index, params float[] value)
 アトリビュート変数のデフォルト値をセットする
int GetUniformTexture (int index)
 ユニフォーム変数のテクスチャ番号を取得する
int GetAttributeStream (int index)
 アトリビュート変数の頂点ストリーム番号を取得する
void SetAttributeStream (int index, int stream)
 アトリビュート変数の頂点ストリーム番号を設定する

Protected メソッド

 ShaderProgram (ShaderProgram program)
 シェーダープログラムを複製する
void SwapShader (ShaderProgram program)
 シェーダーを変更する
virtual internal void UpdateShader ()
 シェーダーの状態を更新する

プロパティ

int UniformCount [get]
 ユニフォーム変数の数
int AttributeCount [get]
 アトリビュート変数の数

説明

シェーダープログラムを表すクラス


コンストラクタとデストラクタ

ShaderProgram ( string  fileName)

シェーダープログラムを作成する (ファイルから)

引数:
fileNameシェーダーのファイル名

指定されたファイルからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( string  vpFileName,
string  fpFileName 
)

シェーダープログラムを作成する (ファイルから)

引数:
vpFileName頂点シェーダーのファイル名
fpFileNameフラグメントシェーダーのファイル名

指定されたファイルからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( string  fileName,
ShaderProgramOption  option 
)

シェーダープログラムを作成する (ファイルから、オプションあり)

引数:
fileNameシェーダーのファイル名
optionシェーダープログラムの作成オプション

指定されたファイルからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( string  vpFileName,
string  fpFileName,
ShaderProgramOption  option 
)

シェーダープログラムを作成する (ファイルから、オプションあり)

引数:
vpFileName頂点シェーダーのファイル名
fpFileNameフラグメントシェーダーのファイル名
optionシェーダープログラムの作成オプション

指定されたファイルからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( byte[]  fileImage)

シェーダープログラムを作成する (ファイルイメージから)

引数:
fileImageシェーダーのファイルイメージ

指定されたファイルイメージからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( byte[]  vpFileImage,
byte[]  fpFileImage 
)

シェーダープログラムを作成する (ファイルイメージから)

引数:
vpFileImage頂点シェーダーのファイルイメージ
fpFileImageフラグメントシェーダーのファイルイメージ

指定されたファイルイメージからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( byte[]  fileImage,
ShaderProgramOption  option 
)

シェーダープログラムを作成する (ファイルイメージから、オプションあり)

引数:
fileImageシェーダーのファイルイメージ

指定されたファイルイメージからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( byte[]  vpFileImage,
byte[]  fpFileImage,
ShaderProgramOption  option 
)

シェーダープログラムを作成する (ファイルイメージから、オプションあり)

引数:
vpFileImage頂点シェーダーのファイルイメージ
fpFileImageフラグメントシェーダーのファイルイメージ

指定されたファイルイメージからシェーダープログラムを作成します。利用可能なファイルフォーマットは CGX です。

ShaderProgram ( ShaderProgram  program) [protected]

シェーダープログラムを複製する

引数:
programシェーダープログラム

シェーダープログラムを複製します。複製されたシェーダープログラムはアンマネージドリソースを共有します。すべての複製に対して Dispose() が呼び出されたとき、共有されたアンマネージドリソースが解放されます。


メソッド

int FindAttribute ( string  name)

アトリビュート変数を名前で検索する

引数:
nameアトリビュート変数の名前
戻り値:
アトリビュート変数の番号 (-1ならば失敗)

アトリビュート変数を名前で検索します。指定した変数が見つからない場合は-1を返します。

int FindUniform ( string  name)

ユニフォーム変数を名前で検索する

引数:
nameユニフォーム変数の名前
戻り値:
ユニフォーム変数の番号 (-1ならば失敗)

ユニフォーム変数を名前で検索します。指定した変数が見つからない場合は-1を返します。

string GetAttributeBinding ( int  index)

アトリビュート変数のバインディングを取得する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
戻り値:
アトリビュート変数の名前 (nullならばデフォルト)
string GetAttributeName ( int  index)

アトリビュート変数の名前を取得する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
戻り値:
アトリビュート変数の名前
int GetAttributeSize ( int  index)

アトリビュート変数の配列サイズを取得する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
戻り値:
アトリビュート変数の配列サイズ
int GetAttributeStream ( int  index)

アトリビュート変数の頂点ストリーム番号を取得する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
戻り値:
頂点ストリーム番号 (-1ならば無効)
ShaderAttributeType GetAttributeType ( int  index)

アトリビュート変数のタイプを取得する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
戻り値:
アトリビュート変数のタイプ
string GetUniformBinding ( int  index)

ユニフォーム変数のバインディングを取得する

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
戻り値:
ユニフォーム変数の名前 (nullならばデフォルト)
string GetUniformName ( int  index)

ユニフォーム変数の名前を取得する

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
戻り値:
ユニフォーム変数の名前
int GetUniformSize ( int  index)

ユニフォーム変数の配列サイズを取得する

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
戻り値:
ユニフォーム変数の配列サイズ
int GetUniformTexture ( int  index)

ユニフォーム変数のテクスチャ番号を取得する

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
戻り値:
ユニフォーム変数のテクスチャ番号 (-1ならば無効)

ユニフォーム変数のテクスチャ番号を取得します。指定した変数がサンプラーでない場合は-1を返します。

ShaderUniformType GetUniformType ( int  index)

ユニフォーム変数のタイプを取得する

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
戻り値:
ユニフォーム変数のタイプ
void SetAttributeBinding ( int  index,
string  name 
)

アトリビュート変数のバインディングを設定する

引数:
indexアトリビュート変数の番号
nameアトリビュート変数の名前 (nullならばデフォルト)

アトリビュート変数を特定の番号に関連づけます。指定された変数の古いバインディングは解除されます。バインディングがない変数はそれぞれ未使用の番号に割り当てられます。

graphics_attribute_binding.png

index には AttributeCount 以上の番号を指定することもできます。その場合は、空の変数が挿入されて AttributeCount の値が増加します。

graphics_attribute_binding2.png
void SetAttributeStream ( int  index,
int  stream 
)

アトリビュート変数の頂点ストリーム番号を設定する

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
stream頂点ストリーム番号 (-1ならば無効)

アトリビュート変数の頂点ストリーム番号を設定します。初期値はアトリビュート変数の番号です。この設定により、指定されたアトリビュート変数に任意の頂点ストリームを転送することができます。さらに、特定の頂点ストリームを無効にしたり、一つの頂点ストリームを複数のアトリビュート変数に転送することもできます。

graphics_attribute_stream.png
void SetAttributeValue ( int  index,
params float[]  value 
)

アトリビュート変数のデフォルト値をセットする

引数:
indexアトリビュート変数の番号 (0~AttributeCount-1)
value配列データ (float)
void SetUniformBinding ( int  index,
string  name 
)

ユニフォーム変数のバインディングを設定する

引数:
indexユニフォーム変数の番号
nameユニフォーム変数の名前 (nullならばデフォルト)

ユニフォーム変数を特定の番号に関連づけます。指定された変数の古いバインディングは解除されます。バインディングがない変数はそれぞれ未使用の番号に割り当てられます。

graphics_uniform_binding.png

index には UniformCount 以上の番号を指定することもできます。その場合は、空の変数が挿入されて UniformCount の値が増加します。

graphics_uniform_binding2.png
void SetUniformValue ( int  index,
int  offset,
float  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
valueスカラ (float)
void SetUniformValue ( int  index,
int  offset,
ref Vector4  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value4次元ベクトル (float)
void SetUniformValue ( int  index,
int  offset,
ref Matrix4  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value4次元行列 (float)
void SetUniformValue ( int  index,
int[]  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value配列データ (int)

ユニフォーム変数の値をセットします。このオーバーロードはintスカラー変数だけでなく、int2,int3,int4...のようなintベクトル変数にも値をセットすることができます。ただし、配列データのサイズはベクトルサイズの倍数である必要があります。

void SetUniformValue ( int  index,
float[]  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value配列データ (float)

ユニフォーム変数の値をセットします。このオーバーロードはfloatスカラー変数だけでなく、float2,float3,float4...のようなfloatベクトルや行列の変数にも値をセットすることができます。ただし、配列データのサイズはベクトルや行列のサイズの倍数である必要があります。

void SetUniformValue ( int  index,
int  offset,
int  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
valueスカラ (int)
void SetUniformValue ( int  index,
ref Matrix4  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value4次元行列 (float)
void SetUniformValue ( int  index,
float[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value配列データ (float)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数

ユニフォーム変数の値をセットします。このオーバーロードはfloatスカラー変数だけでなく、float2,float3,float4...のようなfloatベクトルや行列の変数にも値をセットすることができます。ただし、オフセットとカウント引数はベクトルや行列の単位で数えることに注意してください。

void SetUniformValue ( int  index,
ref Vector3  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value3次元ベクトル (float)
void SetUniformValue ( int  index,
Matrix4[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value4次元行列の配列 (float)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数
void SetUniformValue ( int  index,
ref Vector4  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value4次元ベクトル (float)
void SetUniformValue ( int  index,
int  offset,
float[]  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value配列データ (float)

ユニフォーム変数の値をセットします。このオーバーロードはfloatスカラー変数だけでなく、float2,float3,float4...のようなfloatベクトルや行列の変数にも値をセットすることができます。ただし、配列データのサイズはベクトルや行列のサイズの倍数である必要があります。オフセット引数はベクトルや行列の単位で数えることに注意してください。

void SetUniformValue ( int  index,
Vector3[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value3次元ベクトルの配列 (float)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数
void SetUniformValue ( int  index,
int  offset,
ref Vector3  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value3次元ベクトル (float)
void SetUniformValue ( int  index,
ref Vector2  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value2次元ベクトル (float)
void SetUniformValue ( int  index,
float  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
valueスカラ (float)
void SetUniformValue ( int  index,
int  value 
)

ユニフォーム変数の値をセットする

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
valueスカラ (int)
void SetUniformValue ( int  index,
int  offset,
int[]  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value配列データ (int)

ユニフォーム変数の値をセットします。このオーバーロードはintスカラー変数だけでなく、int2,int3,int4...のようなintベクトル変数にも値をセットすることができます。ただし、配列データのサイズはベクトルサイズの倍数である必要があります。オフセット引数はベクトル単位で数えることに注意してください。

void SetUniformValue ( int  index,
int[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value配列データ (int)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数

ユニフォーム変数の値をセットします。このオーバーロードはintスカラー変数だけでなく、int2,int3,int4...のようなintベクトル変数にも値をセットすることができます。ただし、オフセットとカウント引数はベクトル単位で数えることに注意してください。

void SetUniformValue ( int  index,
Vector4[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value4次元ベクトルの配列 (float)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数
void SetUniformValue ( int  index,
Vector2[]  value,
int  to,
int  from,
int  count 
)

ユニフォーム変数の値をセットする (配列データ用)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
value2次元ベクトルの配列 (float)
to転送先のオフセット
from転送元のオフセット
count転送されるデータ数
void SetUniformValue ( int  index,
int  offset,
ref Vector2  value 
)

ユニフォーム変数の値をセットする (オフセットあり)

引数:
indexユニフォーム変数の番号 (0~UniformCount-1)
offset配列変数のオフセット
value2次元ベクトル (float)
virtual Object ShallowClone ( ) [virtual]

シェーダープログラムを複製する

戻り値:
シェーダープログラムの複製

シェーダープログラムを複製します。複製されたシェーダープログラムはアンマネージドリソースを共有します。すべての複製に対して Dispose() が呼び出されたとき、共有されたアンマネージドリソースが解放されます。

BasicProgramで再定義されています。

void SwapShader ( ShaderProgram  program) [protected]

シェーダーを変更する

引数:
programシェーダープログラム

指定されたシェーダープログラムのシェーダーをこのシェーダープログラムにセットします。この関数は内部的にシェーダーを切り替える場合に使用します。

virtual internal void UpdateShader ( ) [protected, virtual]

シェーダーの状態を更新する

プリミティブ描画前にグラフィックスコンテキストから呼び出される仮想関数です。この関数はクラス内にキャッシュされた状態をシェーダーに反映する場合に使用します。

BasicProgramで再定義されています。