Shader.GetShaderInputType

導入

v5.0

詳細

パラメータからシェーダ入力タイプを戻します。そのパラメータがシェーダに接続できない場合は、GetShaderInputType を SiUnknownParameterType に戻します。

C#構文

siShaderParameterType Shader.GetShaderInputType( String in_Param );

スクリプト構文

oReturn = Shader.GetShaderInputType( ParameterScriptName );

戻り値

siShaderParameterType

パラメータ

パラメータ タイプ 説明
ParameterScriptName String パラメータのスクリプト名

JScript の例

/*

	This example shows how to traverse a shader tree and list the

	available shader inputs and their input types.

*/

NewScene(null,false);

// Create an object with a texture shader

var root = Application.ActiveProject.ActiveScene.Root;

var model = root.AddModel();

model.name = "MyModel";

var object = model.AddGeometry( "Sphere", "MeshSurface" );

BlendInPresets( "Image", object, 1, false );

CreateProjection( object, siTxtSpherical, siTxtDefaultSpherical, "TxtSupport", "TxtProjection" );

var filename = Application.InstallationPath( siFactoryPath ) + 

	"\\Data\\XSI_SAMPLES\\Pictures\\xsilogo.jpg";

var imageclip = CreateImageClip( filename, "XSILogo" );

// Set up the texture space on texture shader

var mat = object.Material;

var textureshader = object.Material.CurrentTexture;

// Set the texturespace parameter

SetInstanceDataValue(null, textureshader+".tspace_id", "TxtProjection");

textureshader.parameters("tex").Connect(imageclip);

// Select the texture shader

SelectObj("MyModel.sphere.Material.Image");

// Get an object from the selection list

var obj = selection(0);

// Object is a shader

if ( obj.isclassof( siShaderID ) )

{

	// Get the material from shader

	var mat = obj.Root;

	traverse_shadernode(mat);

}

// Expected results:

// INFO : Sources.Materials.DefaultLib.Material.ambient_blend.base_color is free to be connected to a shader that will match input type siColorParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.repeats is free to be connected to a shader that will match input type siVectorParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.alt_x is free to be connected to a shader that will match input type siBooleanParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.alt_y is free to be connected to a shader that will match input type siBooleanParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.alt_z is free to be connected to a shader that will match input type siBooleanParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.min is free to be connected to a shader that will match input type siVectorParameterType

// INFO : Sources.Materials.DefaultLib.Material.Image.max is free to be connected to a shader that will match input type siVectorParameterType

// etc.

// Helper functions

function traverse_shadernode( shadernode )

{

	if ( ! shadernode ) { return; }

	if (! ( shadernode.isclassof( siShaderID ) ||

		 shadernode.isclassof( siMaterialID ) || 

		 shadernode.isclassof( siLightID ) || 

		 shadernode.isclassof( siCameraID )) ) 

		{ return; }

	// Traverse the occupied shader inputs

	var eParam = new Enumerator(shadernode.parameters);

	for ( ;!eParam.atEnd(); eParam.moveNext() )

	{

		var param = eParam.item();

		if (param.capabilities & siTexturable)

		{	

			var nextnode = param.source;

			// parameter connected to shader node

			if ( nextnode != null )

				traverse_shadernode( nextnode );

			else // parameter free

			{

				var inputtype = shadernode.GetShaderInputType(param.scriptname);

				LogMessage( param.fullname + " is free to be connected to a shader that will match input type " 

					+ ShaderParameterTypeAsText(inputtype));

			}

		}		

	}

}

function ShaderParameterTypeAsText(type)

{

	switch (type)

	{

		case siUnknownParameterType : return "siUnknownParameterType";			

		case siBooleanParameterType : return "siBooleanParameterType";			

		case siColorParameterType : return "siColorParameterType";			

		case siDataParameterType : return "siDataParameterType";			

		case siIntegerParameterType : return "siIntegerParameterType";			

		case siLensParameterType : return "siLensParameterType";			

		case siLightParameterType : return "siLightParameterType";			

		case siMaterialParameterType : return "siMaterialParameterType";			

		case siMatrixParameterType : return "siMatrixParameterType";			

		case siModelParameterType : return "siModelParameterType";			

		case siRealTimeParameterType : return "siRealTimeParameterType";			

		case siReferenceParameterType : return "siReferenceParameterType";			

		case siScalarParameterType : return "siScalarParameterType";			

		case siShaderParameterType : return "siShaderParameterType";			

		case siStringParameterType : return "siStringParameterType";			

		case siStructParameterType : return "siStructParameterType";			

		case siTextureParameterType : return "siTextureParameterType";			

		case siTextureSpaceParameterType : return "siTextureSpaceParameterType";			

		case siVectorParameterType : return "siVectorParameterType";			

		default: return type;

	}

}

関連項目

Shader.GetShaderParameterTargets Shader.GetShaderParameterType Shader.OutputType Parameter.HasInstanceValue Parameter.SetInstanceValue Parameter.GetInstanceValue Parameter.ScriptName