## 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