Light.GetAllShaders

Introduced

v7.0

Description

Returns all shaders nested under the light, even the ones that are not connected. If no shaders are found, this method returns an empty collection.

C# Syntax

ShaderCollection Light.GetAllShaders();

Scripting Syntax

oReturn = Light.GetAllShaders();

Return Value

ShaderCollection

Examples

JScript Example

// Create a scene with an object lit by a spotlight
var root = Application.ActiveProject.ActiveScene.Root;
var grid = root.AddGeometry( "Grid", "MeshSurface" );
scale( grid, 2, 2, 2, siAbsolute );
var cone = root.AddGeometry( "Cone", "MeshSurface" );
translate(cone, 0, 1.3, 0 );
var light = root.AddLight( "LightSpot", true, "SpotLight" );
ApplyCns( "Position", light.interest, cone );
ApplyCns( "Orientation", light.interest, cone );
translate( light, 4, 6, 4);
var strFileName = Application.InstallationPath( siFactoryPath ) + 
	"\\Data\\XSI_SAMPLES\\Pictures\\xsilogo.jpg";
var imageclip = CreateImageClip( strFileName, "XSILogo" );
// Find the first parameter that is texturable and of type color. 
// This is the shader connection point.
var shader_param = null;
for ( i=0; i < light.parameters.count; i++ )
{
	var param =  light.parameters(i);
	var inputtype =  light.GetShaderInputType(param.scriptname);
	if ((param.capabilities & siTexturable) && (inputtype == siColorParameterType ))
	{
		shader_param = param;
		break;
	}
}
logmessage( "shader connection point = " + shader_param.fullname );
// set up shader tree
if ( shader_param )
{
	var mix2 = shader_param.ConnectFromProgID("Softimage.sib_color_2mix");
	var soft_light = mix2.parameters("base_color").ConnectFromProgID("Softimage.soft_light");
	var fast_light_effect = mix2.parameters("color1").ConnectFromProgID("Softimage.Bionic_Light.lit");
	fast_light_effect.parameters("Projector_Pic").connect(imageclip);
}
// Find the soft_light shader
var shaders = light.GetAllShaders();
var eShaders = new Enumerator(shaders);
// Set up shadows with a softlight.
var soft_light_id = String("Softimage.soft_light.1").toLowerCase();
for ( ; !eShaders.atEnd(); eShaders.moveNext() )
{
	var shader = eShaders.item();
	if (shader.progid.toLowerCase() == soft_light_id)
	{
		// setup shadows
		var soft_light = shader;
		soft_light.parameters("shadow").value = true;
		soft_light.parameters("factor").value = 0.5;
		break;
	}
}
//INFO : shader connection point = SpotLight.light.LightShader

See Also

Light.GetShaderInputType Camera.GetAllShaders Material.GetAllShaders Shader.GetAllShaders