シェーダ パラメータ定義

 
 
 

パラメータ定義は、ShaderParamDefContainer または ShaderParamDefContainer として表される特別なコンテナに保存されます。ShaderDef または ShaderDef には、入力パラメータ定義用の ShaderParamDefContainer が 1 つと、出力用にもう 1 つあります。また、構造 タイプのパラメータ定義を作成するときは、そのメンバも 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)
重要:

プラグイン ベースのシェーダ定義はインスタンス化されるときにのみ設定されるため、任意の ShaderParamDefContainers または ShaderParamDefContainers でパラメータ定義のリストを返せるようにするには、先にシェーダをインスタンス化しておく必要があります(たとえば、CreateShaderFromProgID コマンドを使用するスクリプトを介して)。