Softimage SDK Programmer's Guide > Customizing Softimage using the SDK > Custom Shaders > Shader Parameter Definitions > Refining UI Controls for Parameter Definitions >

# VBScript Example: Grouping Ports in the Render Tree

This example produces the following UI:

    function XSILoadPlugin( in_reg )
    	in_reg.Author = "SDK Documentation"
    	in_reg.Name = "LayoutTests"
    	in_reg.Major = 1
    	in_reg.Minor = 0
    	in_reg.RegisterShader "RTLayoutEx", 1, 0 			' group 2 out of the 5 parameters in the RTLayout

    	XSILoadPlugin = true
    end function

    function LayoutTests_RTLayoutEx_1_0_DefineInfo( in_ctxt )
    	in_ctxt.SetAttribute "Category", "Test Shaders/Layout@700"
    	LayoutTests_RTLayoutEx_1_0_DefineInfo = true
    end function

    function LayoutTests_RTLayoutEx_1_0_Define( in_ctxt )
    	set oShaderDef = in_ctxt.GetAttribute("Definition")
    	oShaderDef.AddShaderFamily siShaderFamilyTexture

    	' Add 3 input parameters as connectable ports
    	set oInputParamsContainer = oShaderDef.InputParamDefs
    	set oPDefOptions = XSIFactory.CreateShaderParamDefOptions
    	oPDefOptions.SetTexturable true
    	oPDefOptions.SetInspectable false
    	oInputParamsContainer.AddParamDef "port1", siShaderDataTypeColor4, oPDefOptions
    	oInputParamsContainer.AddParamDef "port2", siShaderDataTypeInteger, oPDefOptions
    	oInputParamsContainer.AddParamDef "port3", siShaderDataTypeScalar, oPDefOptions

    	' Add 2 input parameters on property page
    	oPDefOptions.SetTexturable false
    	oPDefOptions.SetInspectable true
    	oInputParamsContainer.AddParamDef "param1", siShaderDataTypeString, oPDefOptions
    	oInputParamsContainer.AddParamDef "param2", siShaderDataTypeBoolean, oPDefOptions

    	' Add the output color
    	set oOutputParamsContainer = oShaderDef.OutputParamDefs
    	oPDefOptions.SetInspectable false
    	oOutputParamsContainer.AddParamDef "out", siShaderDataTypeColor4, oPDefOptions

    	' Fix the RTLayout
    	set RTLayout = oShaderDef.RenderTreeLayout
    	RTLayout.AddGroup "Solo"
    		RTLayout.AddItem "port1"
    	RTLayout.EndGroup
    	RTLayout.AddGroup "Duo"
    		RTLayout.AddItem "port2"
    		RTLayout.AddItem "port3"
    	RTLayout.EndGroup

    	' Add renderer info

    	LayoutTests_RTLayoutEx_1_0_Define = true
    end function