Orion4D · Unsharp Mask APP
The classic sharpen, done properly
- image
- mask
- image
- mask
Unsharp mask is the oldest sharpen in the book and it's still the most predictable - which is exactly why it's worth having as its own node instead of folding it into a mega-pipeline. Orion4D_FXMax_UnsharpMask (displayed "Orion4D · Unsharp Mask APP") gives you the classic Photoshop-style USM controls in the pack's usual clean wrapper: blur, subtract, add back, with a threshold so flat areas stay untouched.
How it works
The name is a historical artifact - there's nothing "unsharp" about the output. The node blurs a copy of the image, subtracts that blur from the original to get the detail layer, and adds the detail back scaled by an amount. The knob that makes it not-terrible is threshold: only detail whose magnitude clears the threshold gets sharpened. Set it low and everything sharpens (fast, but noisy). Set it sensibly and the smooth areas - sky, skin, background bokeh - stay smooth while edges get crisp. That's the whole art of USM, and it's the thing most one-click sharpeners get wrong.
There's also the Luma mode, which sharpens only the luminance, so you don't get color halos on edges. That plus the threshold is why this node can be subtle when it needs to be.
Inputs and outputs
Standard pack schema:
- image - the IMAGE tensor.
- preset - Natural Unsharp Mask, Fine USM, or Strong USM.
- raw_settings - "Embedded JSON settings used for workflow portability. Managed automatically by the APP." Your amount/radius/threshold live here after you touch the APP.
- mask (optional) - restrict sharpening to a region, handy for faces or product edges.
Outputs: image and mask. It's a pure GPU PyTorch node like the rest of the Sharpness suite, so it's cheap on large images and fine in video loops.
Where it fits
Reach for USM when you want controlled sharpening with no surprises - it's the workhorse for slightly soft renders and for a final crispening pass after an upscale, and it's arguably the most beginner-forgiving node in the pack because the threshold gives you a safe lever. When you need edge-aware noise suppression instead, the pack's Smart Sharpen is the upgrade; when you want tonal punch rather than edge crispness, that's Clarity. USM is the middle ground: everyone understands it, nothing fancy, reliable results.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/Orion4D_FXMax.git
# restart ComfyUI
ComfyUI Manager search "Orion4D_FXMax" works too. No models to download, dependencies are just Pillow (numpy ships with ComfyUI). The Open APP editor gives you the real-time split preview so you can watch the threshold do its job instead of guessing.
Gotchas
The classic USM mistake is cranking amount and leaving threshold at zero - you get a crisp image that vibrates with noise. If the render already has grain, raise the threshold before you lower your expectations. And don't stack USM under the main SharpnessMax node's own unsharp stage; one USM per image is plenty.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| preset | COMBO | 3 options: Natural Unsharp Mask, Fine USM, Strong USM | |
| raw_settings | STRING | Embedded JSON settings used for workflow portability. Managed automatically by the APP. | |
| maskopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |