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