# Sub-graph

## Description

A **Sub-graph** is a special type of Shader Graph. It is used to create graphs that can be referenced inside other graphs. This is useful when you wish to perform the same operations multiple times in one graph or across multiple graphs. A **Sub-graph** differs from a Shader Graph in 3 main ways:

- Properties in the Blackboard of a
**Sub-graph**define the input Ports of a Sub-graph Node when the**Sub-graph**is referenced in another graph. - A
**Sub-graph**has its own asset type. For more information, including how to make a new**Sub-graph**, see Sub-graph Asset. - A
**Sub-graph**does not have a Master Node. Instead it has a Node called**SubGraphOutputs**. For more information see below.

For components of a **Sub-graph** see:

## SubGraphOutputs

The **SubGraphOutputs** Node defines the output Ports of a Sub-graph Node when the **Sub-graph** is referenced in another graph. You can add and remove Ports using the **Add Slot** and **Remove Slot** buttons.

## Sub-graphs and Shader Stages

If a Node within a **Sub-graph** specifies a shader stage, such as how Sample Texture 2D Node specifies the **fragment** shader stage, then that entire **Sub-graph** is now locked to that stage. No Nodes that specify a different shader stage will be able to be connected to the **Sub-graph Output Node** and any Sub-graph Nodes that reference the graph will also be locked to that shader stage.