## ImportShaderCompound

### Introduced

v7.0

### Description

Imports a shader compound.

### Scripting Syntax

    oReturn = ImportShaderCompound( [Container], Path );

### Return Value

Shader or Texture object.

### Parameters

Parameter | Type | Description
--- | --- | ---
Container | String | Container to hold imported shader compound. Default Value: Current selection
Path | String | Location of shader compound on disk.

### Examples

#### Python Example

    #

    # This example demonstrates how to set up shader compound, export it to disk, and

    # then import and connect it in a fresh scene.

    #

    app = Application

    from win32com.client import constants as xsi

    # For readability, we are always saving to the user's RTCompounds directory

    path = XSIUtils.BuildPath(

    	app.InstallationPath(xsi.siUserPath),

    	"Data", "RTCompounds"

    )

    XSIUtils.EnsureFolderExists(path, 0)

    # Convenience function to create and export a shader compound (innerSC.xsirtcompound)

    # that we will reference/nest in another shader compound.

    def CreateInnerCompound() :

    	app.NewScene( None, 0 )

    	app.CreatePrim( "Torus", "MeshSurface" )

    	app.CreateShaderFromPreset( "Shaders\\Texture\\Gradient.Preset",

    		"Sources.Materials.DefaultLib.Scene_Material" )

    	app.CreateShaderFromPreset( "Shaders\\Texture\\Grid.Preset",

    		"Sources.Materials.DefaultLib.Scene_Material" )

    	app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Grid",

    		"Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", 0 )

    	app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Gradient",

    		"Sources.Materials.DefaultLib.Scene_Material.Grid.line_color", 0 )

    	app.CreateShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.Gradient,"

    		+ "Sources.Materials.DefaultLib.Scene_Material.Grid" )

    	app.ExportShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound",

    		path+"\\innerSC.xsirtcompound" )

    # Create the shader compound to be nested and save it to disk

    CreateInnerCompound()

    # Set up a new scene with a torus again

    app.NewScene( None, 0 )

    app.CreatePrim( "Torus", "MeshSurface" )

    # Import the shader compound previously exported in the CreateInnerCompound() function

    app.ImportShaderCompound( "Sources.Materials.DefaultLib.Scene_Material",

    	path+"\\innerSC.xsirtcompound" )

    # Now connect the newly imported shader compound

    app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound.ambient",

    	"Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", 0 )

    # Add some more shader connections

    app.CreateShaderFromPreset( "Shaders\\Texture\\Fractal.Preset",

    	"Sources.Materials.DefaultLib.Scene_Material" )

    app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Fractal",

    	"Sources.Materials.DefaultLib.Scene_Material.Phong.specular", 0 )

    app.CreateShaderFromPreset( "Shaders\\Texture\\Ripple.Preset",

    	"Sources.Materials.DefaultLib.Scene_Material" )

    app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Ripple",

    	"Sources.Materials.DefaultLib.Scene_Material.Phong.diffuse", 0 )

    # Create a new shader compound which will have shaders and the newly imported shader compound

    app.CreateShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound,"

    	+ "Sources.Materials.DefaultLib.Scene_Material.Fractal,"

    	+ "Sources.Materials.DefaultLib.Scene_Material.Ripple" )

### See Also

CreateShaderFromPreset CreateShadersFromMaterialPreset CreateShaderFromCLSID CreateShaderFromProgID CreateShaderCompound NestShaders UnnestShaders AddShaderCompoundPort RemoveShaderCompoundPort MoveShaderCompoundPort RenameShaderCompoundPort ExportShaderCompound ExplodeShaderCompound SetShaderCompoundPropertiesEx GetShaderCompoundProperties EditShaderCompoundPPGLogic