Material.GetShaderInputType

Introduced

v5.0

Description

Returns the shader input type for the specified parameter. If the parameter cannot be connected to another shader GetShaderInputType returns siUnknownInputType.

C# Syntax

siShaderParameterType Material.GetShaderInputType( String Parametername );

Scripting Syntax

oReturn = Material.GetShaderInputType( ParameterScriptName );

Return Value

siShaderParameterType

Parameters

Parameter Type Description
ParameterScriptName String Script name of the parameter

Examples

JScript Example

NewScene("", 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 the texture shader
var mat = object.Material;
var textureshader = null;
// Different ways to get the texture shader:
// Method 1
textureshader = object.Material.CurrentTexture;
// Method 2
var shaders = mat.FindShaders(siShaderFilter);
textureshader = shaders("Image");
// Method 3
textureshader = mat.Shaders("Phong").Shaders("diffuse_blend").Shaders("Image");
// Set the texturespace parameters
SetInstanceDataValue(null, textureshader+".tspace_id", "TxtProjection");
textureshader.Parameters("tex").Connect(imageclip);
// List the names and input types of all parameters that support shader connections
var eParams = new Enumerator(mat.Parameters);
for ( ; !eParams.atEnd(); eParams.moveNext() )
{
	var param = eParams.item();
	if (param.capabilities & siTexturable)
	{
		var inputtype = mat.GetShaderInputType(param.scriptname);
		// This parameter supports a shader connection
		Application.LogMessage( param.FullName + " has shader inputtype = " + ShaderParameterTypeAsText(type) );
	}		
}
// Expected results:
// INFO : MyModel.sphere.Material.surface has shader inputtype = 4
// INFO : MyModel.sphere.Material.volume has shader inputtype = 4
// INFO : MyModel.sphere.Material.environment has shader inputtype = 4
// INFO : MyModel.sphere.Material.contour has shader inputtype = 4
// INFO : MyModel.sphere.Material.displacement has shader inputtype = 3
// INFO : MyModel.sphere.Material.shadow has shader inputtype = 4
// INFO : MyModel.sphere.Material.Photon has shader inputtype = 4
// INFO : MyModel.sphere.Material.PhotonVolume has shader inputtype = 4
// INFO : MyModel.sphere.Material.normal has shader inputtype = 5
// INFO : MyModel.sphere.Material.Lightmap has shader inputtype = 20
// INFO : MyModel.sphere.Material.RealTime has shader inputtype = 16
// INFO : MyModel.sphere.Material.material has shader inputtype = 12
// Helper functions
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 inputtype;
	}
}

See Also

Shader.OutputType Parameter.ScriptName