ShaderArrayParamDef

Object Hierarchy | 関連する C++クラス:ShaderArrayParamDef

継承

SIObject

ShaderParamDef

ShaderArrayParamDef

導入

v9.0 (2011)

詳細

このオブジェクトはShaderArrayParameterインスタンスの定義を表します。このシェーダパラメータに含まれる配列要素を設定および取得できます(ShaderArrayParamDef.ItemInitialValuesが戻すValueMapオブジェクトを使用して設定または取得します)。

ShaderArrayParamDef オブジェクトを作成するには、新しいパラメータ定義をシェーダパラメータ定義コンテナに追加するときにShaderParamDefContainer.AddArrayParamDefメソッドを使用します。

メソッド

IsClassOfオペレータ IsEqualToオペレータ    
       

プロパティ

Application Attributesオペレータ Capabilitiesオペレータ Categories
DataTypeオペレータ DefaultValueオペレータ DisplayNameオペレータ FullNameオペレータ
HasDefaultValueオペレータ Help IsArrayオペレータ IsInputオペレータ
IsOutputオペレータ IsStructureオペレータ ItemDefオペレータ ItemDef2オペレータ
ItemInitialCountオペレータ ItemInitialValuesオペレータ ItemNameオペレータ MainPortオペレータ
MaxValueオペレータ MinValueオペレータ Nameオペレータ NestedObjects
Origin OriginPath Parent StaticArrayオペレータ
SuggestedMaxValueオペレータ SuggestedMinValueオペレータ Texturableオペレータ Typeオペレータ

JScript の例

/* 

	This example demonstrates how to create a dynamic shader definition 

	with an input array parameter and then populate the array using the

	ValueMap object created via the ItemInitialValues property.

*/

app = Application;

app.NewScene("", false);

var oShaderDef = XSIFactory.CreateShaderDef("MyParser", "MyArrayDemo", 1, 0);

oShaderDef.AddShaderFamily(siShaderFamilyTexture);

app.LogMessage("Shader definition name: " + oShaderDef.Name);

// Set up shader parameter definition options to use with new input parameter

oShaderInParamDefOptions = XSIFactory.CreateShaderParamDefOptions();

oShaderInParamDefOptions.SetAnimatable(false);

oShaderInParamDefOptions.SetTexturable(true);

oShaderInParamDefOptions.SetInspectable(true);

oShaderInParamDefOptions.SetShortName("Fluffy Bunnies");

// Add input parameter to definition

oInputParams = oShaderDef.InputParamDefs;

var oArrayParamDef = oInputParams.AddArrayParamDef("flurry", siScalarParameterType, oShaderInParamDefOptions);

// Make it an array of 6 items and populate the array via the ValueMap interface

oArrayParamDef.ItemInitialCount = 6;

var oValueMap = oArrayParamDef.ItemInitialValues;

oValueMap.Set("a", 0);

oValueMap.Set("b", 8);

oValueMap.Set("c", 16);

oValueMap.Set("d", 32);

oValueMap.Set("e", 64);

oValueMap.Set("f", 128);

// Now print info to see what we have

for (var i=0; i<oShaderDef.InputParamDefs.Definitions.Count; i++) {

	LogParamInfo("\t", oShaderDef.InputParamDefs.Definitions.Item(i));

}	

// INFO : Shader definition name: MyParser.MyArrayDemo.1.0

// INFO : 	Parameter name: Fluffy Bunnies

// INFO : 	ClassName: ShaderArrayParamDef

// INFO : 	Family: 65

// INFO : 	Yes, I'm an array!

// INFO : 	I'm an INPUT parameter

// INFO : 		Parameter name: Item

// INFO : 		ClassName: ShaderStructParamDef

// INFO : 		Family: 3

// INFO : 		I'm an INPUT parameter

// INFO : 		ItemName: Item

// INFO : 		ItemInitialCount: 6

// INFO : 		ItemInitialValues: 

// INFO : 			Names: a, b, c, d, e, f

// INFO : 			Values: 0, 8, 16, 32, 64, 128

// Convenience function to log info iteratively

function LogParamInfo( in_indent, in_paramdef )

{

	app.LogMessage(in_indent + "Parameter name: " + in_paramdef.DisplayName);

	app.LogMessage(in_indent + "ClassName: " + app.ClassName(in_paramdef));

	app.LogMessage(in_indent + "Family: " + in_paramdef.DataType);

	if (in_paramdef.IsArray) {

		app.LogMessage(in_indent + "Yes, I'm an array!");

	}

	if (in_paramdef.IsInput) {

		app.LogMessage(in_indent + "I'm an INPUT parameter");

	}

	if (in_paramdef.IsOutput) {

		app.LogMessage(in_indent + "I'm an OUTPUT parameter");

	}

	if (in_paramdef.DataType == siShaderDataTypeArray) {

		LogParamInfo(in_indent + "\t", in_paramdef.ItemDef);

		in_indent += "\t";

		app.LogMessage(in_indent + "ItemName: " + in_paramdef.ItemName);

		if (in_paramdef.StaticArray) {

			app.LogMessage(in_indent + "Is a Static Array");

		}

		app.LogMessage(in_indent + "ItemInitialCount: " + in_paramdef.ItemInitialCount);

		if (in_paramdef.ItemInitialCount) {

			app.LogMessage(in_indent + "ItemInitialValues: ");

			var vbaInitNames = new VBArray(in_paramdef.ItemInitialValues.Names);

			var aInitNames = vbaInitNames.toArray();

			var vbaInitValues = new VBArray(in_paramdef.ItemInitialValues.Values);

			var aInitValues = vbaInitValues.toArray();

			app.LogMessage(in_indent + "\tNames: " + aInitNames.join(", "));

			app.LogMessage(in_indent + "\tValues: " + aInitValues.join(", "));

		}

	}

}

関連項目

ShaderParamDefContainer.AddParamDef ShaderParamDefContainer.AddArrayParamDef ShaderParameter.Definition ShaderParamDefContainer ShaderStructParamDef Shader Definition examples installed with Softimage Shader Parser examples installed with Softimage