An editor Shader Graph node that exposes viewport-related variables to shader graphs. It defines outputs for viewport size, inverse size, offset, min Z and max Z, each returning a named global shader variable.
namespace ShaderGraphPlus.Nodes;
/// <summary>
/// Info about the current viewport.
/// </summary>
[Title( "Viewport" ), Category( "Variables" ), Icon( "tv" )]
public sealed class ViewportNode : ShaderNodePlus
{
[JsonIgnore, Hide, Browsable( false )]
public override Color NodeTitleColor => ShaderGraphPlusTheme.NodeHeaderColors.GlobalVariableNode;
[Output( typeof( Vector2 ) ), Title( "Size" )]
[Hide]
public static NodeResult.Func ViewportSize => ( GraphCompiler compiler ) => new( ResultType.Vector2, "g_vViewportSize" );
[Output( typeof( Vector2 ) ), Title( "Inverse Size" )]
[Hide]
public static NodeResult.Func ViewportInverseSize => ( GraphCompiler compiler ) => new( ResultType.Vector2, "g_vInvViewportSize" );
[Output( typeof( Vector2 ) ), Title( "Offset" )]
[Hide]
public static NodeResult.Func ViewportOffset => ( GraphCompiler compiler ) => new( ResultType.Vector2, "g_vViewportOffset" );
[Output( typeof( float ) ), Title( "Min Z" )]
[Hide]
public static NodeResult.Func ViewportMinZ => ( GraphCompiler compiler ) => new( ResultType.Float, "g_flViewportMinZ" );
[Output( typeof( float ) ), Title( "Max Z" )]
[Hide]
public static NodeResult.Func ViewportMaxZ => ( GraphCompiler compiler ) => new( ResultType.Float, "g_flViewportMaxZ" );
}