Nodes/comfyui-hires/GigaHires V1
ComfyUI Node

GigaHires V1

The all-in-one hires node the author moved past

By Enferlain·Created 4 months ago·Updated 4 months ago· 0
GigaHires V1
  • model
  • vae
  • positive
  • negative
  • latent
  • positive_pass2
  • negative_pass2
  • upscale_model
  • pass2_latent
  • pass2_image
  • refined_latent
  • refined_image
  • debug_info
branch_modelatent
latent_modeLatent (antialiased)
sizing_modescale
scale_by2.00
target_width0
target_height0
upscale_model_nameNone
seed0
steps12
cfg7.0
sampler_nameeuler
schedulernormal
denoise0.35
vae_moderegular
vae_tile_size512
vae_overlap64

One node that takes your first-pass latent and runs the entire hires fix: upscale it via the latent path or a learned upscaler, then run a second refinement pass. It's the pack's "most knobs exposed" coordinator - and it's the direction the README has since politely demoted. The recommended workflow in this pack is the helper-node layout, keeping the normal pass, upscale, and refine visibly separate. V1 is the everything-in-one-box version that predates that decision. It works, and it's a good way to see the whole pipeline at a glance; just know what you're trading away.

What it does

Internally it's one function doing three visible stages, and the outputs mirror them:

  1. Branch upscale - branch_mode = latent interpolates the latent up to your target (latent_mode controls the filter); branch_mode = upscale_model decodes, runs a learned upscaler, re-encodes. sizing_mode / scale_by / target_width / target_height work exactly like the helper nodes.
  2. Refine pass - a second KSampler at your denoise (default 0.35) with its own steps (12), cfg (7), sampler_name, scheduler, and the vae_mode / vae_tile_size / vae_overlap trio for big decodes.
  3. Decode - to the refined_image.

That's why there are five outputs and it can feel like a lot: pass2_latent / pass2_image are the state between upscale and refine, and refined_latent / refined_image are the finished thing. Save the refined ones. debug_info is the JSON report - branch used, model name, base vs resolved size, latent shapes, per-stage timings.

The inputs worth knowing about

  • branch_mode - latent is the default and the cheap path; upscale_model is the quality path but requires a model (see the trap below).
  • positive_pass2 / negative_pass2 (both optional) - the one thing the helper nodes don't give you in one box. Wire these to override the conditioning for the second pass, e.g. a detail-focused prompt, while the first pass keeps your main prompt. Leave them empty and pass 2 reuses the first-pass conditioning.
  • sampler_name / scheduler - and here's a genuine quirk: this node defaults to euler + normal, while the pack's own GigaHires Refine Pass defaults to dpmpp_2m + karras, which the author's notes name as the quality baseline. You can change it, and you probably should.

Where people get burned

  • The upscale_model ValueError. Set branch_mode = upscale_model without picking an upscale_model_name or wiring the optional upscale_model input and the run fails on purpose. Pick a model first.
  • Reading the wrong outputs. pass2_* is mid-pipeline; if you're saving pass2_image and wondering why it's rough, that's the not-yet-refined one.
  • Latent branch blockiness. The author's testing found pure latent upscale can stay blocky even after refinement at low denoise. If you hit it, branch_mode = upscale_model or a larger target is the move, not more steps.
  • All-in-one opacity. The real cost of this node is that you can't inspect each stage's debug_info separately - which is exactly why the author built the helper nodes afterward.

Install

Manager → search "comfyui-hires", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Enferlain/comfyui-hires

Restart ComfyUI. No pip dependencies - the pack relies on ComfyUI internals and the native extension API, so keep ComfyUI current or the nodes won't register at all.

Bottom line

V1 is a fine way to wrap your head around what a two-pass hires fix does before you care about the stages individually. Once you do care - and with this pack, that's the intended journey - the helper nodes give you the same pipeline with visibility. V1 is the map; the helpers are the territory.

Categorysampling/upscale

Inputs (24)

NameTypeDefaultDescription
modelMODEL
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
branch_modeCOMBOlatent2 options: latent, upscale_model
latent_modeCOMBOLatent (antialiased)6 options: Latent, Latent (antialiased), Latent (bicubic), Latent (bicubic antialiased), Latent (nearest), Latent (nearest-exact)
sizing_modeCOMBOscale2 options: scale, target
scale_byFLOAT2.000.1–8
target_widthINT00–16384
target_heightINT00–16384
upscale_model_nameCOMBONone1 options: None
seedINT00–18446744073709550000
stepsINT121–10000
cfgFLOAT7.00–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOnormal9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.350–1
vae_modeCOMBOregular2 options: regular, tiled
vae_tile_sizeINT51264–4096
vae_overlapINT640–4096
positive_pass2optCONDITIONING
negative_pass2optCONDITIONING
upscale_modeloptUPSCALE_MODEL

Outputs (5)

NameTypeDescription
pass2_latentLATENT
pass2_imageIMAGE
refined_latentLATENT
refined_imageIMAGE
debug_infoSTRING