Nodes/Pixel Anchored Remaster/Pixel Anchored Remaster
ComfyUI Node

Pixel Anchored Remaster

The cleanup-and-rebuild pass for your 2x hires-fix output

By NotProniss·Created 3 months ago·Updated 2 months ago· 4
Pixel Anchored Remaster
  • image
  • model
  • vae
  • positive
  • negative
  • image
  • latent
seed1
tile_size_vae512
overlap64
interpolationlanczos
upscale_methodbislerp
remaster_steps16
remaster_cfg4.0
sampler_namedpmpp_3m_sde_gpu
schedulerkarras
remaster_denoise0.55

The name says "remaster," and that's the part everyone skips. This is not another upscaler you throw at an image when you want more pixels. It's a cleanup-and-rebuild pass for an image that has already been upscaled - and it assumes you know that. Feed it a raw base-resolution render and you'll be confused by the results, because it isn't designed to add resolution at all.

The pitch, in the author's own words: it takes an image that's been through HiRes Fix (or another high-res stage), strips out the upscale artifacts, and rebuilds the detail with a fresh KSampler pass. Minor drift from the source is fine - the goal is a better image, not a pixel-perfect clone. If you need perfect fidelity, reach for a plain ESRGAN upscale instead and don't look back.

What it actually does

This is a one-node version of a workflow you'd otherwise build from five or six stock ComfyUI nodes, and the order of operations is the clever part:

  1. Pixel-space downscale. The input is shrunk to 75% of its size (rounded to a multiple of 8) using ResizeAndPadImage, with white padding and your chosen interpolation (default lanczos). Aggressive upscaling leaves harsh, noisy texture behind; shrinking first gives the next stage something cleaner to work with.
  2. VAE-encode, then latent upscale. The downscaled image is encoded to latent space with tiled VAE support, then upscaled back to the original input size in latent space (default bislerp). That gives the sampler room to work without losing the working resolution.
  3. KSampler rebuild. A standard sampling pass - dpmpp_3m_sde_gpu / karras, 16 steps, CFG 4, denoise 0.55 - reinterprets the latent and puts structure back where the first pass left things soft or fake-looking. Then it's decoded, tiled again to keep VRAM in check.

In plain English: pixel downscaling cleans the image up, latent upscaling gives the model room, and the sampler ties both together into one remaster pass. It's essentially the hi-res-fix img2img idea (generate at native, second pass at low denoise) applied after an upscale instead of during one.

The inputs that matter

The full wiring list is long, but only a few are things you'll actually touch:

  • image - your already-2x-hires-fixed image. This is the one input that's easy to get wrong.
  • model, vae, positive, negative - the checkpoint and conditioning for the remaster pass. Same model that made the image works fine.
  • seed - for reproducible remasters.
  • remaster_denoise (default 0.55) - the big one. Too high and the composition drifts into a different picture; too low and it's just an expensive blur. The default is the author's tested sweet spot.
  • tile_size_vae (512) and overlap (64) - tiled VAE encode/decode settings. Drop the tile size if you're hitting VRAM limits.
  • interpolation (lanczos), upscale_method (bislerp), sampler_name / scheduler, remaster_steps / remaster_cfg - the plumbing. Defaults are the author's tested ones; leave them alone until you have a reason not to.

It outputs two things: image (the remastered result, wire it to a preview or Save Image) and latent (the sampled latent before decode, handy if you want to chain another latent-space step onto it).

Install

Tiny pack, no model downloads, no requirements.txt to fight with - the whole node is built from ComfyUI's own built-ins, so there's nothing extra to pull down. The easy route:

  • ComfyUI Manager → Install Custom Nodes → search "PixelAnchoredRemaster", install, restart.
  • Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/NotProniss/PixelAnchoredRemaster

…then restart ComfyUI. That's it.

Where people get burned

  • Wrong input. It's built for 2x upscale workflows only. The author is blunt that 4x "starts going off the rails." Feed it a 4x upscale and expect ugly.
  • Wrong model family. It's tuned for SDXL / Pony / Illustrious-style latent spaces. The README warns it performs poorly with Anima and likely other divergent latent spaces like Chroma, where the remaster step gets ugly. Stick to the SDXL family and it behaves.
  • Square-only on Anima. Even where Anima sort of works, the author found it reliable only with square images - portrait inputs come out blurry, for reasons not yet pinned down.
  • Expecting fidelity. This is a generative re-pass. It will reinterpret small details. If "different but better" isn't what you want, this is the wrong tool - and that's by design, not a bug.
CategoryImage/Upscaling

Inputs (15)

NameTypeDefaultDescription
imageIMAGE
modelMODEL
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
seedINT10–18446744073709550000
tile_size_vaeINT51264–4096
overlapINT640–512
interpolationCOMBOlanczos5 options: area, bicubic, nearest-exact, bilinear, lanczos
upscale_methodCOMBObislerp5 options: nearest-exact, bilinear, area, bicubic, bislerp
remaster_stepsINT161–1000
remaster_cfgFLOAT4.00–100
sampler_nameCOMBOdpmpp_3m_sde_gpu44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOkarras9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
remaster_denoiseFLOAT0.550–1

Outputs (2)

NameTypeDescription
imageIMAGE
latentLATENT