Shader.TextureLayers

Introduced

v4.0

Description

Returns a TextureLayerCollection containing each TextureLayer object owned by the shader.

C# Syntax

// get accessor
TextureLayerCollection rtn = Shader.TextureLayers;

Examples

1. JScript Example

/*
	This JScript example demonstrates creating texture layers on
	a shader, plus enumerating and removing them.
*/
oRoot = ActiveProject.ActiveScene.Root;
oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" );
oMat = oSph.AddMaterial( "Phong" );
oPhong = oMat.Shaders(0);
// Add a layer at the end (since there are no others the "After"
// flag is irrelevant).
oLayers = new Array(3);
oLayers[0] = oPhong.CreateTextureLayer( "B", true );
// Add another layer before the other one.
oLayers[1] = oPhong.CreateTextureLayer( "A", false, oLayers[0] );
// Create a third layer at the very start.
oLayers[2] = oPhong.CreateTextureLayer( "base", false );
Application.LogMessage( "Created " + oPhong.TextureLayers.Count + " layers." );
for ( i = 0; i < oPhong.TextureLayers.count; i++ )
{
	oLayer = oPhong.TextureLayers(i);
	Application.LogMessage( (i+1) + ": " + oLayer );
}
oPhong.RemoveTextureLayer( oLayers[1] );
oPhong.RemoveTextureLayer( oPhong.FullName + "." + oLayers[2].Name );
count = oPhong.TextureLayers.Count;
Application.LogMessage( "Only " + count + " remains after removal." );
for ( i = 0; i < count; i++ )
{
	Application.LogMessage( (i+1) + ": " + oPhong.TextureLayers.Item(i) );
}
// This example should log something like:
//INFO : "Created 3 layers."
//INFO : "1: sphere.Material.Phong.base"
//INFO : "2: sphere.Material.Phong.A"
//INFO : "3: sphere.Material.Phong.B"
//INFO : "Only 1 remains after removal."
//INFO : "1: sphere.Material.Phong.B"

2. VBScript Example

'
' This VBScript example demonstrates creating texture layers on
' a shader, plus enumerating and removing them.
'
set oRoot = ActiveProject.ActiveScene.Root
set oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" )
set oMat = oSph.AddMaterial( "Phong" )
set oPhong = oMat.Shaders(0)
' Add a layer at the end (since there are no others the "After"
' flag is irrelevant).
dim oLayers(2)
set oLayers(0) = oPhong.CreateTextureLayer( "B", True )
' Add another layer before the other one.
set oLayers(1) = oPhong.CreateTextureLayer( "A", False, oLayers(0) )
' Create a third layer at the very start.
set oLayers(2) = oPhong.CreateTextureLayer( "base", False )
LogMessage "Created " & oPhong.TextureLayers.Count & " layers."
i = 1
for each oLayer in oPhong.TextureLayers
	LogMessage i & ": " & oLayer
	i = i + 1
next
oPhong.RemoveTextureLayer oLayers(1)
oPhong.RemoveTextureLayer oPhong.FullName & "." & oLayers(2).Name
count = oPhong.TextureLayers.Count
LogMessage "Only " & count & " remains after removal."
for i = 0 to count - 1
	LogMessage i + 1 & ": " & oPhong.TextureLayers.Item(i)
next
' This example should log something like:
'INFO : "Created 3 layers."
'INFO : "1: sphere.Material.Phong.base"
'INFO : "2: sphere.Material.Phong.A"
'INFO : "3: sphere.Material.Phong.B"
'INFO : "Only 1 remains after removal."
'INFO : "1: sphere.Material.Phong.B"

See Also

Material.TextureLayers Material.CreateTextureLayer Material.AddSharedTextureLayer Shader.CreateTextureLayer Shader.AddSharedTextureLayer