Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tw9fjW75aYB8UyVRZo6fCr
31 lines
1.2 KiB
Python
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]
|