Object Hierarchy | 関連する C++クラス:ShaderParamDef
ShaderParamDef
v9.0 (2011)
このオブジェクトはShaderParameterの定義を表します。シェーダパラメータ定義は特別なShaderParamDefContainerオブジェクトのShaderDefオブジェクトに保存されます。このオブジェクトを使用して、既存のパラメータ定義にアクセスしたり、新しいパラメータ定義を追加したりできます。ShaderParamDefContainer オブジェクトにアクセスするには、ShaderDef.InputParamDefs または ShaderDef.OutputParamDefs を呼び出します。ShaderParamDefContainer.AddParamDef または ShaderParamDefContainer.AddArrayParamDef を一連の ShaderParamDefOptions とともに呼び出して、ShaderParamDefContainer から新しいパラメータ定義を追加できます。
インスタンス化されたシェーダ定義から特定のシェーダ パラメータ定義にアクセスするには、ShaderParamDefContainer.GetParamDefByName メソッドを使用します。インスタンス化されたシェーダ定義に対して、入力または出力パラメター定義のリスト全体を繰り返し処理するには、ShaderParamDefContainer.Definitionsプロパティを使用します。
ShaderParameterインスタンスから既存のシェーダパラメータ定義にアクセスするには、ShaderParameter.Definitionプロパティを使用します。
配列パラメータ(ShaderArrayParamDef)を追加するには、ShaderParamDefContainer.AddArrayParamDefメソッドを使用します。それ以外のパラメータタイプの場合は、ShaderParamDefContainer.AddParamDefメソッドを使用します。
注:このオブジェクトは汎用インターフェイスです。このオブジェクトには配列および構造のパラメータタイプに専用のアクセス機能が用意されています。これらの専用機能の詳細については、ShaderArrayParamDefおよびShaderStructParamDefのリファレンスページを参照してください。
# # This example demonstrates how to create a dynamic shader definition # with 2 output and 1 input parameters. It also connects the new # shader definition in to a cube and displays it in the render tree # from win32com.client import constants as cns app = Application app.NewScene("", False) oShaderDef = XSIFactory.CreateShaderDef(None, "MySimpleParamDemo", 1, 3) oShaderDef.AddShaderFamily("mrTexture") oShaderDef.DisplayName = "Demo" oShaderDef.Category = "Demo Items" app.LogMessage("Shader definition name: " + oShaderDef.Name) # OUT PARAMETER 1 # Set up shader parameter definition options to use with new parameters oShaderParamDefOptions = XSIFactory.CreateShaderParamDefOptions() oShaderParamDefOptions.SetAnimatable(True) oShaderParamDefOptions.SetTexturable(True) oShaderParamDefOptions.SetInspectable(True) oShaderParamDefOptions.SetShortName("Output") # Add output parameter to definition oOutputParams = oShaderDef.OutputParamDefs oOutputParams.AddParamDef("result", cns.siColorParameterType, oShaderParamDefOptions) oOutputParams.GetParamDefByName("result").DisplayName = "Colour Output" app.LogMessage(oOutputParams.GetParamDefByName("result").DisplayName) # OUT PARAMETER 2 # Change existing shader parameter definition options to use with new output parameter oShaderParamDefOptions.SetShortName("Valid?") # Add 2nd output parameter to definition oOutputParams.AddParamDef("valid", cns.siBooleanParameterType, oShaderParamDefOptions) # IN PARAMETER # More changes to param def options oShaderParamDefOptions.SetSoftLimit(-50, 50) oShaderParamDefOptions.SetHardLimit(-10, 10) oShaderParamDefOptions.SetDefaultValue(5) oShaderParamDefOptions.SetShortName("Vexatious") # Add input parameter (direct access) oShaderDef.InputParamDefs.AddParamDef("vex", cns.siScalarParameterType, oShaderParamDefOptions) # RESULTS # Now print info to see what we have for oShaderOutParamDef in oShaderDef.OutputParamDefs.Definitions : app.LogMessage("Input parameter name: " + oShaderOutParamDef.DisplayName) app.LogMessage("\tClassName: " + app.ClassName(oShaderOutParamDef)) app.LogMessage("\tType: " + str(oShaderOutParamDef.DataType)) # Connect this shader in the RenderTree and pop up the RenderTree view to see it cube = app.ActiveSceneRoot.AddGeometry("Cube", "MeshSurface") app.CreateShaderFromProgID("None.MySimpleParamDemo.1.3", "Sources.Materials.DefaultLib.Scene_Material", "") app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Demo.result", "Sources.Materials.DefaultLib.Scene_Material.Photon", False) app.SelectObj(cube) app.OpenView("Render Tree", False) # INFO : Shader definition name: None.MySimpleParamDemo.1.3 # INFO : Input parameter name: Output # INFO : ClassName: ShaderParamDef # INFO : Type: 4 # INFO : Input parameter name: Valid? # INFO : ClassName: ShaderParamDef # INFO : Type: 1 |