## ShaderParamDefContainer

Object Hierarchy | Related C++ Class: ShaderParamDefContainer

### Inheritance

###

SIObject

ShaderParamDefContainer

### Introduced

v9.0 (2011)

### Description

This object allows you to manage the list of input and output parameters defined on a shader definition object (ShaderDef). It is kind of like an extra level of abstraction on the ShaderParamDefCollection which allows you to add and remove members but also access the real ShaderParamDefCollection (via the ShaderParamDefContainer.Definitions member) to iterate over the list of parameters.
There are three properties which return a ShaderParamDefContainer: ShaderDef.InputParamDefs, ShaderDef.OutputParamDefs, and ShaderStructParamDef.SubParamDefs.

### Methods

AddArrayParamDef | AddArrayParamDef2 | AddParamDef | AddParamDef2
GetParamDefByName | GetParamDefByName2 | IsClassOf | IsEqualTo

### Properties

Application | Categories | Definitions | FullName
Help | Name | NestedObjects | Origin
OriginPath | Parent | Type |

### Examples

#### 1. Python Example

    #

    # This example demonstrates how to create a dynamic shader definition

    # and then access/populate its input and output parameters via the

    # ShaderParamDefContainer interface.

    #

    from win32com.client import constants as cns

    app = Application

    oShaderDef = XSIFactory.CreateShaderDef("baddog", "mr_piddles", 1, 0)#

    oShaderDef.AddShaderFamily("mrTexture")

    app.LogMessage("Shader definition name: " + oShaderDef.Name)

    # Set up shader parameter definition options to use with new input parameter

    oShaderInParamDefOptions = XSIFactory.CreateShaderParamDefOptions();

    oShaderInParamDefOptions.SetAnimatable(False)

    oShaderInParamDefOptions.SetTexturable(True)

    oShaderInParamDefOptions.SetInspectable(True)

    oShaderInParamDefOptions.SetShortName("Bones-y")

    # Add input parameter to definition

    oInputParams = oShaderDef.InputParamDefs

    oInputParams.AddParamDef2("bonesy", cns.siShaderDataTypeColor4, oShaderInParamDefOptions)

    # Set up shader parameter definition options to use with new output parameter

    oShaderOutParamDefOptions = XSIFactory.CreateShaderParamDefOptions()

    oShaderOutParamDefOptions.SetAnimatable(False)

    oShaderOutParamDefOptions.SetTexturable(True)

    oShaderOutParamDefOptions.SetInspectable(True)

    oShaderOutParamDefOptions.SetShortName("Chew Toys")

    # Add output parameter to definition

    oOutputParams = oShaderDef.OutputParamDefs

    oOutputParams.AddArrayParamDef2("chewtoys", cns.siShaderDataTypeStructure, oShaderOutParamDefOptions)

    # Now print info to see what we have

    for oShaderInParamDef in oShaderDef.InputParamDefs.Definitions :

    	Application.LogMessage("Input parameter name: " + oShaderInParamDef.DisplayName)

    for oShaderOutParamDef in oShaderDef.OutputParamDefs.Definitions :

    	Application.LogMessage("Output parameter name: " + oShaderOutParamDef.DisplayName)

    # Expected results:

    # INFO : Shader definition name: baddog.mr_piddles.1.0

    # INFO : Input parameter name: Bones-y

    # INFO : Output parameter name: Chew Toys

#### 2. JScript Example

    // See the example under the ShaderParamDefContainer.GetParamDefByName method reference page

### See Also

ShaderDef.InputParamDefs ShaderDef.OutputParamDefs ShaderStructParamDef.SubParamDefs ShaderParamDef ShaderDef Shader Parameter Definitions Shader Definition examples installed with Softimage Shader Parser examples installed with Softimage