# Upscale

> 2x (Lanczos; ML when `ml` is on).

| Node | Upscale |
|---|---|
| Menu | Transform › Upscale |
| **Names in each format** | |
| .oink comp (JSON) | `"type": "OC_N_upscale"` |
| .nk script | `Upscale` ([how .nk import works](/docs/nuke-users/nk-import)) |
| Python | `nuke.createNode("Upscale")` |
| Assistant (MCP) | `create_node(type="Upscale")` |
| Tab search | `upscale` |

![Upscale properties](/shots/nodes/upscale@2x.webp)

## Inputs and outputs

| Port | Name | Type |
|---|---|---|
| input 0 | Image | image |
| output 0 | Image | image |

## Knobs

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

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `ml` | ML (AI worker) | bool | `false` |  | `ml` | Run the Real-ESRGAN model (needs the AI worker / GPU lease) |

### 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 |  |  |  |  |
| `model` | Model | enum | `AUTO` | SHOT, REALESRGAN, SEEDVR2, AUTO |  |  |
| `scale` | Scale | enum | `2` | 2, 4 |  |  |
| `tile` | Tile | int | `512` | 0 to 8192 |  | Tile size in input pixels (0 = whole frame) |
| `temporal_window` | Temporal Window | int | `5` | 1 to 21 |  | Frames seen together by video models (4n+1) |
| `detail` | Detail | float | `1` | 0 to 1 |  | 0 = plain Lanczos (fidelity), 1 = full model detail |
| `preserve_highlights` | Preserve Highlights | boolean | `true` |  |  | Model sees 0..1 only; values above 1 and below 0 ride along as a Lanczos residual |
| `encoding` | Encoding | enum | `REINHARD` | REINHARD, LOG, SRGB |  |  |
| `exposure` | Exposure | float | `0` | -6 to 6 |  | Stops before encoding (fixed per shot), removed after |
| `peak` | Peak | float | `16` | 1 to 65504 |  | Top of the encoded range when highlights are not preserved |
| `color_correction` | Color Correction | enum | `LAB` | LAB, WAVELET, NONE |  |  |
| `seed` | Seed | int | `42` | 0 to 2147483647 |  | SeedVR2 noise seed (fixed: the same seed gives the same pixels, S15) |


---
Sources: opencomp_core/nodes/transform/upscale.py, opencomp_electron/src/components/properties/knobSchema.ts, opencomp_core/nk/mapping.py
