# Merge (over)

> Composites A over B using the A alpha.

| Node | Merge |
|---|---|
| Menu | not in the node menu (created by import, scripts or other nodes) |
| **Names in each format** | |
| .oink comp (JSON) | `"type": "OC_N_over"` |
| .nk script | `Merge2` ([how .nk import works](/docs/nuke-users/nk-import)) |
| Python | `nuke.createNode("OC_N_over")` |
| Assistant (MCP) | `create_node(type="OC_N_over")` |
| Tab search | `merge` |

## Inputs and outputs

| Port | Name | Type |
|---|---|---|
| input 0 | B | image |
| input 1 | A | image |
| input 2 | mask | image |
| output 0 | Image | image |

## Knobs

Panel tab **Over**, in panel order.

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `operation` | operation | menu | `over` | atop, average, color-burn, color-dodge, conjoint-over, copy, difference, disjoint-over, divide, exclusion, from, geometric, hard-light, hypot, in, mask, matte, max, min, minus, multiply, out, over, overlay, plus, screen, soft-light, sten... | `operation` |  |
| `sRGB` | Video colorspace | bool | `false` |  |  | Merge in sRGB (the 8-bit colorspace), then back to linear |
| `alpha_masking` | alpha masking | bool | `false` |  |  |  |
| `bbox` | set bbox to | menu | `union` | union, intersection, A, B | `bbox` |  |
| `metadata_from` | metadata from | menu | `B` | B, A, All |  |  |
| `range_from` | range from | menu | `B` | B, A, All |  |  |
| `a_channels` | A channels | text | `rgba` |  | `Achannels` | Layer taken from A ('none' = black); its alpha is a |
| `b_channels` | B channels | text | `rgba` |  | `Bchannels` | Layer taken from B ('none' = black); its alpha is b |
| `output` | output | text | `rgba` |  | `output` | Layer written: rgba, rgb, alpha or any layer name |
| `also_merge` | also merge | text | `none` |  | `also_merge` | Extra layer merged with the same operation |
| `mask_channel` | mask | menu | `none` | none, rgba.alpha, rgba.red, rgba.green, rgba.blue |  | Mask channel, e.g. rgba.alpha (none = no mask; a linked mask input then uses rgba.alpha) |
| `invert_mask` | invert | bool | `false` |  | `invert_mask` |  |
| `mix` | mix | float | `1` | 0 to 1 | `mix` |  |

### Other knobs (Python, .nk and the assistant; not on the panel)

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `gl_color` | Viewer Controls Color | float ×3 | `0, 0, 0` | 0 to 1 |  |  |
| `postage_stamp_frame` | Static Frame | int | `1` | -2147483648 to 2147483647 |  |  |
| `lifetimeStart` | Lifetime Start | int | `0` | -2147483648 to 2147483647 |  |  |
| `lifetimeEnd` | Lifetime End | int | `100` | -2147483648 to 2147483647 |  |  |
| `useLifetime` | Use Lifetime | boolean | `false` |  |  |  |
| `cached` | Cached | boolean | `false` |  |  |  |
| `bookmark` | Bookmark | boolean | `false` |  |  |  |
| `dope_sheet` | Dope Sheet | boolean | `false` |  |  |  |
| `clone_group` | Clone Group | string |  |  |  |  |
| `link_source` | Link Source | string |  |  |  |  |
| `link_overrides` | Link Overrides | string |  |  |  |  |
| `split_views` | Split Views | string |  |  |  |  |
| `mode` | Mode | enum | `NONE` | NONE, PLUS, MULTIPLY, SCREEN |  |  |

## Knob names in .nk scripts

| .nk knob | Knob here |
|---|---|
| `Achannels` | `a_channels` |
| `Bchannels` | `b_channels` |

Other .nk knobs use the same name here. See [.nk import](/docs/nuke-users/nk-import).


---
Sources: opencomp_core/nodes/merge/over.py, opencomp_electron/src/components/properties/knobSchema.ts, opencomp_core/nodes/help/over.md, opencomp_core/nk/mapping.py
