Editor/ShaderGraphPlus/Nodes/InstanceIdNode.cs

An editor-only Shader Graph node named 'Instance Id'. It registers a uint instance ID semantic for vertex and pixel inputs and outputs a float result expression referencing i.vInstanceID.

Reflection

namespace ShaderGraphPlus.Nodes;

/// <summary>
/// 
/// </summary>
[Title( "Instance Id" ), Category( "Variables" ), Icon( "123" )]
public sealed class InstanceIdNode : ShaderNodePlus, IPreRegisterNodeData
{
	[JsonIgnore, Hide, Browsable( false )]
	public override Color NodeTitleColor => ShaderGraphPlusTheme.NodeHeaderColors.StageInputNode;

	public void PreRegister( GraphCompiler compiler )
	{
		compiler.RegisterVertexInput( "uint", "vInstanceID", "SV_InstanceID" );
		compiler.RegisterPixelInput( "uint", "vInstanceID", "SV_InstanceID" );
	}

	[Output, Title( "Result" )]
	[Hide]
	public NodeResult.Func Result => ( GraphCompiler compiler ) =>
	{
		return new NodeResult( ResultType.Float, "i.vInstanceID" );
	};
}