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