/*
This example creates a sample shader tree that uses 3 image clips and shows
how to get to which input parameters thoses image clips are connected. An image clip
can be shared across different materials.
*/
NewScene(null, false);
//Create 4 Image Nodes
SIApplyShaderToCnxPoint("Image", "Sources.Materials.DefaultLib.Scene_Material.Phong.diffuse", null, null);
SIApplyShaderToCnxPoint("Image", "Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", null, null);
SIApplyShaderToCnxPoint("Image", "Sources.Materials.DefaultLib.Scene_Material.Phong.specular", null, null);
SIApplyShaderToCnxPoint("ScalarImage", "Sources.Materials.DefaultLib.Scene_Material.Phong.shiny", null, null);
//Create 3 Image Clips From File
SICreateImageClip("\Pictures\\chrom[1..3].tga", null, null);
SICreateImageClip("\Pictures\\cloud02.pic", null, null);
SICreateImageClip("\Pictures\\refmap2.tga", null, null);
//Connect the first 2 Image Clip to different Shader Input Parameters
SIConnectShaderToCnxPoint("Clips.chrom_1__3__tga", "Sources.Materials.DefaultLib.Scene_Material.Image.tex", false);
SIConnectShaderToCnxPoint("Clips.cloud02_pic", "Sources.Materials.DefaultLib.Scene_Material.Image1.tex", false);
//The last Image Clip is connected to 2 input parameters.
SIConnectShaderToCnxPoint("Clips.refmap2_tga", "Sources.Materials.DefaultLib.Scene_Material.Image2.tex", false);
SIConnectShaderToCnxPoint("Clips.refmap2_tga", "Sources.Materials.DefaultLib.Scene_Material.ScalarImage.tex", false);
//Remove No-Icon from this material
DisconnectAndDeleteOrUnnestShaders("Clips.noIcon_pic", "Sources.Materials.DefaultLib.Scene_Material");
//Now Get the Image Clips and use the GetShaderParameterTarget method to get where they are connected.
var oCloudClip, oChromeClip, oRefMapClip, oNoIconClip;
SICreateImageClip("\Pictures\\refmap2.tga", null, null);
oCloudClip = GetValue("Clips.cloud02_pic");
oChromeClip = GetValue("Clips.chrom_1__3__tga");
oRefMapClip = GetValue("Clips.refmap2_tga");
oNoIconClip = GetValue("Clips.noIcon_pic");
//Cloud and Chrome Should be connected to 1 target.
var oCloudClipTargets, oChromeClipTargets;
oCloudClipTargets = oCloudClip.GetShaderParameterTargets();
oChromeClipTargets = oChromeClip.GetShaderParameterTargets();
LogMessage( "Cloud and Chrome Should be connected to 1 target." );
LogMessage( "Cloud is connected to " + oCloudClipTargets.Count + " Target(s)." );
LogMessage( "Chromeis connected to " + oChromeClipTargets.Count + " Target(s)." );
//RefMap Should be connected to 2 targets.
var oRefMapClipTargets;
oRefMapClipTargets= oRefMapClip.GetShaderParameterTargets();
LogMessage( "RefMap Should be connected to 2 targets." );
LogMessage( "RefMap is connected to " + oRefMapClipTargets.Count + " Target(s)." );
//NoIcon Should be connected to 0 target.
var oNoIconClipTargets;
oNoIconClipTargets= oNoIconClip.GetShaderParameterTargets();
LogMessage( "NoIcon Should be connected to 0 target." );
LogMessage( "NoIcon is connected to " + oNoIconClipTargets.Count + " Target(s)." ); |