# Add and connect nodes in a shader graph

You can add and connect nodes in a shader graph in different ways depending on your current task.

> [!NOTE]
> To add and connect nodes in a shader graph, you need to [create a shader graph asset](create-shader-graph.md) first and open the asset in the [Shader Graph window](Shader-Graph-Window.md).

## Add a node

To add a [node](Node.md) to your shader graph, follow these steps:

1. Open the **Create Node** menu through either of the following:
   
   * Select the [Shader Graph window](Shader-Graph-Window.md)'s workspace and press the **Spacebar**.
   * Right-click in the Shader Graph Window's workspace and select **Create Node**.

1. In the **Create Node** menu, browse or search for the desired node.
   
   The **Create Node** menu lists all nodes that are available in Shader Graph, categorized by their function. User-created [sub graphs](Sub-graph.md) are also available in the **Create Node** menu under **Sub Graph Assets**, or in a custom category that you define in the Sub Graph Asset.

1. Double-click on a node's name to add the corresponding node in the graph.

> [!NOTE]
> Use the **Create Node** menu search box to filter the listed nodes by name parts and synonyms based on industry terms. It provides autocomplete options and highlights matching text in yellow. You can press **Tab** to accept the predictive text.

## Connect node ports

To connect [ports](Port.md) between two existing [nodes](Node.md) or with the [master stack](Master-Stack.md), select and drag the desired port to the target.

The line resulting from that connection is called an [edge](Edge.md).

You can only connect an output port to a input port, or vice-versa, and you can't connect two ports of the same node together.

## Add and connect a node from an existing port

To connect a [port](Port.md) to a [node](Node.md) that doesn't exist yet and create that targeted node in the process, follow these steps:

1. Select and drag the desired port and release it in an empty area of the workspace.

1. In the **Create Node** menu, browse or search for the node you need to connect to the port you dragged out.
   
   The **Create Node** menu displays every node port available according to the [data types](Data-Types.md) compatible with the port you dragged out.

1. Double-click on a node port's name to add the corresponding node in the graph, with the two expected ports already connected­.

## Add a block node in the Master Stack

To add a new [block node](Block-Node.md) to the [master stack](Master-Stack.md), follow these steps:

1. Open the **Create Node** menu for the Master Stack context through either of the following:
   * Select the Master Stack's targeted context (**Vertex** or **Fragment**) and press the **Spacebar**.
   * Right-click in the Master Stack's targeted context area and select **Create Node**.

1. In the **Create Node** menu, browse or search for the desired block node.
   
   The **Create Node** menu displays all available blocks for the master stack based on the render pipelines in your project.
   
1. Double-click on a block node's name to add the corresponding block node in the Master Stack.

> [!NOTE]
> If the block that you add is not compatible with the current [graph settings](Graph-Settings-Tab.md), the block is deactivated until you configure the settings to support it.

## Additional resources

* [Nodes](Node.md)
* [Ports](Port.md)
* [Edges](Edge.md)
* [Master Stack](Master-Stack.md)
* [Block nodes](Block-Node.md)