Shader.CreateTextureLayer

導入

v4.0

詳細

コンテナ(シェーダ)に属する新しいTextureLayerを作成します。

テクスチャレイヤは、シェーダおよびマテリアルの上のテクスチャエフェクトのレイヤリングを簡略化するためのオブジェクトです。各レイヤごとに、その特性(カラー、ミキシングモード、ウェイトなど)を説明するプロパティのセットがあり、制御するシェーダポートに対する影響の度合いを指定できます。コンテナの下にレイヤが表示される順序はレイヤ化が適用された順序であり、「N 色をミックス」したシェーダ ノードが動作する場合と似ています。 テクスチャレイヤポートのオブジェクト(TextureLayer.AddTextureLayerPort コマンドを参照)はレイヤに所有され、レイヤが影響するシェーダポートを指定するために使用されます。

ヒント:Materialのテクスチャレイヤコンテナもあり、この場合も同じ関連メソッドのセットを持ちます。

C#構文

TextureLayer Shader.CreateTextureLayer( String in_name, Boolean in_bAfter, Object in_varRefLayer );

スクリプト構文

Shader.CreateTextureLayer( [Name], [After], [Reference] );

パラメータ

パラメータ タイプ 説明
Name String 新しいの名前 TextureLayer

デフォルト値:"Layer"

After Boolean True の場合は、新しいテクスチャ レイヤはリファレンス レイヤの後に挿入されます。 False の場合は、リファレンス レイヤの前に挿入されます。 リファレンス レイヤがないときは、True の場合はコンテナのリストの最後に、False の場合はリストの最初に追加されます。

デフォルト値: True

Reference TextureLayerまたはString 新しく追加されたレイヤが配置されるスタック内の位置を示す、リファレンステクスチャレイヤ。レイヤはリファレンス レイヤの前後に挿入されます。 指定しない場合には、新しいレイヤはこの後に続く引数に応じて先頭または末尾に追加されます。

1. JScript の例

/*

	This JScript example shows 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 の例

'

' This VBScript example shows 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"

関連項目

AddTextureLayer Shader.AddSharedTextureLayer Material.CreateTextureLayer Material.AddSharedTextureLayer