h4 - Pixel Press
The anti-aliasing cheat that actually works
- image
- upscale_model
- pressed_image
Aliasing is the enemy of clean pixels. Those jagged edges, that moiré in fine patterns - they happen because your image has fewer samples than the detail it's trying to represent. The classic fix is supersampling: render bigger, then shrink. The h4 - Pixel Press automates exactly that pipeline in one node: upscale your image, enhance it while it's big, then downscale to your target size. It's ComfyUI's closest thing to an SSAA (super-sampling anti-aliasing) node, and it sits in h4_Live's image family as "the sharpener."
How it works
The pipeline is upscale → enhance → downscale. First it supersamples the image by supersample_scale (2x, 3x, or 4x). Then it applies the enhancement stack while the image is at full size - that's where enable_hdr, sharpening, contrast, and color enhancement do their work, with tiled_processing splitting large images into tiles so the HDR pass doesn't blow up your VRAM. Finally it downsizes to your real target, set by upscale_by (a multiplier of the original, so 1.0 returns you to the source resolution - just with cleaner edges).
That last detail is the heart of it. If you just wanted a bigger image you'd use an upscaler; Pixel Press is about making the same size image look better. upscale_by below 1.0 even works as a downscaler, which is handy for squashing a 2x render down to a web-friendly size without introducing new aliasing.
The inputs that matter
supersample_scale- how big to go internally. 2x is the sweet spot for most work; 4x is slower and hungrier for marginal gains.upscale_by- final output multiplier. 1.0 = same size, cleaner. Above 1.0 you're also upscaling.enable_hdr+tile_size- HDR tone mapping adds pop; if you hit out-of-memory, droptile_size(default 512) before anything else.upscale_model- optional. Plug in a proper model-based upscaler (like an ESRGAN) for the supersample stage instead of pure interpolation. That turns it from "sharper same-size" into "details rebuilt," at the cost of speed.upscale_method- interpolation method: lanczos is the sharp general-purpose pick.
One output: pressed_image.
Installing it
Part of h4_Live:
cd ComfyUI/custom_nodes
git clone https://github.com/m3rr/h4_Live
# restart ComfyUI
or ComfyUI Manager → search "h4_Live." No extra dependencies.
Where it can bite you
Supersampling is honest work but it's not magic: it can't add detail that isn't in the source, it just preserves more of what's there. If your image is soft, you'll get a soft image with fewer jaggies - for actual new detail you want the upscale_model route or a generative upscale pass entirely. Watch the HDR too; hdr_intensity above 1.0 on a high-key image will bleach highlights, so start low. And tiled processing has a small quality cost at tile boundaries on very fine detail - drop tile_size for VRAM, but know that's the trade. For the common case - "make my 1024 render look less crunchy at the same size" - it's the right tool, and the one h4_Live node you'd reach for without a second thought.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| supersample_scale | COMBO | 2x | 3 options: 2x, 3x, 4x |
| upscale_by | FLOAT | 1.000.1–8 | Final output multiplier. |
| upscale_method | COMBO | lanczos | 5 options: lanczos, nearest-exact, bilinear, area, bicubic |
| sharpness | FLOAT | 0.30–2 | — |
| enable_hdr | BOOLEAN | false | — |
| tiled_processing | BOOLEAN | true | — |
| hdr_intensity | FLOAT | 0.50–5 | — |
| shadow_intensity | FLOAT | 0.250–1 | — |
| highlight_intensity | FLOAT | 0.750–1 | — |
| gamma_intensity | FLOAT | 0.000–1 | — |
| contrast | FLOAT | 0.100–1 | — |
| enhance_color | FLOAT | 0.250–1 | — |
| upscale_modelopt | UPSCALE_MODEL | — | |
| tile_sizeopt | INT | 512256–2048 | Tile size for HDR processing. Lower if OOM. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pressed_image | IMAGE | — |