# Branch Node

## Description

Provides a dynamic branch to the shader. If input **Predicate** is true, this node returns input **True**, otherwise it returns input **False**. The **Branch Node** evaluates the **Predicate** per vertex or per pixel depending on shader stage. Both sides of the branch are evaluated in the shader, and the branch not used is discarded.

## Ports

| Name      | Direction | Type           | Binding | Description |
|:----------|:----------|:---------------|:--------|:------------|
| Predicate | Input     | Boolean        | None    | Determines which input to return. |
| True      | Input     | Dynamic Vector | None    | Returned if **Predicate** is true. |
| False     | Input     | Dynamic Vector | None    | Returned if **Predicate** is false. |
| Out       | Output    | Dynamic Vector | None    | Output value |

## Generated Code Example

The following example code represents one possible outcome of this node.

```
void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
{
    Out = Predicate ? True : False;
}
```