Files

31 lines
1.2 KiB
Python

"""Second pass: the between-passes latent operation. A node-only module.
v4 built the second pass INTO its chain sampler: a toggle, a second schedule, a
second sampler, an operation. In v5 a second pass is just graph: sampler ->
FunUI Latent Resample -> a second FunUI Sampler with denoise below 1 (which
re-noises the finished clip to where its schedule starts). Nothing here samples.
What this module adds is the part the graph could not already do:
* **Loading an upscaler ComfyUI does not know.** Model modules announce
`latent_upscaler` (state dict -> upscaler or None); H3's is the reason.
* **Resampling a video latent between passes**, sharpen (up then back down --
pass 2 re-denoises the added detail) or upscale (kept larger, pass 2 runs at
the new size).
* **Keeping the conditioning valid after an upscale.** Model modules announce
`rescale_conditioning`; H3 packs its anchor pin as rows sized to the grid, so
without this pass 2 refuses the anchor outright.
v4's user verdict: the H3 second pass WORKS (2026-09-20).
"""
from .nodes import FunUILatentResample, FunUILatentUpscalerLoader
ID = "latent_second_pass"
TITLE = "Second pass"
STAGE = "latent"
CATEGORY = "sampling"
STATUS = "proven"
NODES = [FunUILatentUpscalerLoader, FunUILatentResample]