シェーダ パラメータ定義

 
 
 

パラメータ定義は、ShaderParamDefContainer または ShaderParamDefContainer として表される特別なコンテナに保存されます。ShaderDef または ShaderDef には、入力パラメータ定義用と出力用にそれぞれ 1 つの ShaderParamDefContainer があります。 さらに、structure 型のパラメータ定義を作成すると、 そのメンバも同様に ShaderParamDefContainer に格納されます。

ShaderParamDefContainer を取得する対象

... 使用するアクセス メンバ

入力パラメータ

ShaderDef.InputParamDefs または ShaderDef::GetInputParamDefs

出力パラメータ

ShaderDef.OutputParamDefs または ShaderDef::GetOutputParamDefs

構造パラメータのメンバ

StructParamDef.SubParamDefs または StructParamDef::GetSubParamDefs

インスタンス化したシェーダの ShaderParamDefContainer から、そのパラメータ定義のコレクションに ShaderParamDefContainer.Definitions または ShaderParamDefContainer::GetDefinitions メンバを介して、または特定のメンバに ShaderParamDefContainer.GetParamDefByName または ShaderParamDefContainer::GetParamDefByName メソッドを介してアクセスできます。

# Iterating over all input parameter definitions to find a struct containing a 
# member parameter definition called "mute"
oInputParamsContainer = oShaderDef.InputParamDefs
for oParamDef in oInputParamsContainer.Definitions :
	if (oParamDef.IsStructure) :
		oStructSubParamDefs = oParamDef.SubParamDefs
		oMuteParamDef = oStructSubParamDefs.GetParamDefByName("mute")
		Application.LogMessage("Found struct member paramdef called %s" % oMuteParamDef.DisplayName)
重要:

プラグイン ベースのシェーダ定義は、インスタン化されるときにのみ設定されるため、(CreateShaderFromProgID コマンドを使用したスクリプトを介した方法などで)ShaderParamDefContainers または ShaderParamDefContainers がパラメータ定義のリストを返す前に、シェーダをインスタンス化する必要があります。