パラメータ定義は、ShaderParamDefContainer または ShaderParamDefContainer として表される特別なコンテナに保存されます。ShaderDef または ShaderDef には、入力パラメータ定義用と出力用にそれぞれ 1 つの ShaderParamDefContainer があります。 さらに、structure 型のパラメータ定義を作成すると、 そのメンバも同様に ShaderParamDefContainer に格納されます。
ShaderParamDefContainer を取得する対象 |
... 使用するアクセス メンバ |
---|---|
入力パラメータ |
|
出力パラメータ |
|
構造パラメータのメンバ |
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 がパラメータ定義のリストを返す前に、シェーダをインスタンス化する必要があります。