A Shader Graph node for the editor named "SGE - Scene Normal" in the Universal category. It defines an optional 2D Coordinates input and a Vector3 output that emits shader code calling a helper 'Normals::Sample' with the provided coordinates.
namespace Editor.ShaderGraph.Nodes;
[Title( "SGE - Scene Normal" ), Category( "Shader Graph Extras - Universal" ), Icon( "explore" )]
public sealed class SGESceneNormalNode : ShaderNode
{
[Input( typeof( Vector2 ) )]
[Hide]
public NodeInput Coordinates { get; set; }
[Output( typeof( Vector3 ) )]
[Hide]
public NodeResult.Func Output => ( GraphCompiler compiler ) =>
{
var coordinates = compiler.Result( Coordinates ).Cast( 2 );
return new NodeResult( NodeResultType.Vector3, $"Normals::Sample( {coordinates} )" );
};
}