Gradient guidance is back on the render path, alongside multiscale sampling and two
opt-in U-Net speedups.
Gradient guidance
WarpFusion's guidance now steers sampling toward a temporal target, independently of the
img2img init (which stays the warp + consistency composite):
- Pixel guidance —
init_scale(try1000), an LPIPS + MSE loss against the guidance
target in pixel space. - Latent guidance —
init_latent_scale(try100), an MSE loss in latent space. guidance_modepicks the target: previous warped frame, with or without the
consistency mask, the raw init, and so on.clamp_grad/clamp_maxclamp the gradient by RMS so a large scale does not blow
the frame out.guidance_add_noise/guidance_use_start_codenoise the target to the sampler's
current sigma, reusing one noise tensor and preserving the notebook's RNG order.
LPIPS moved out of the optional [sched] extra into the core dependencies — core guidance
needs it now. [sched] still exists so nothing breaks, but it is empty.
Multiscale sampling
sampler_scale_schedule maps a sampling step to a percentage of the final latent
resolution. Early steps can evaluate the whole frame cheaply and later steps run at full
resolution. sampler_scale_min_size sets a pixel floor for the longest side, so coarse
passes stay at or above the model's trained resolution (512 for SD1.5).
Below 100% the U-Net sees the whole downscaled frame and tiling is deliberately disabled;
at 100% the normal tiled path takes over. The sampler latent itself is always full
resolution.
U-Net acceleration (opt-in)
unet_cache offers two strategies, both resetting their state every frame:
- DeepCache — reuses the expensive inner U-Net branch on intermediate denoiser
evaluations, everyunet_cache_intervalsteps. - First Block Cache — reuses a previous output when the first encoder block moves less
thanunet_cache_thresholdrelative to the last one.
compile_unet separately torch.compiles the unified U-Net, the active ControlNets, and
the VAE encode/decode paths. It is opt-in because every new multiscale/tile/VAE shape may
trigger another graph compile; Inductor artifacts persist under .vibewarp_cache.
Per-part pose detection
OpenPose and DWPose now expose pose_include_body, pose_include_hand, and
pose_include_face, controlling which keypoint sets are detected and drawn.
Fixes
- SDXL text encoder on newer
open_clipbuilds whose attention modules are
batch-first — the unconditional NLD→LND permute produced silently wrong conditioning. - IP-Adapter
composition preciseweight type, matching the current ComfyUI
IPAdapter Plus layer map. - The UI launchers (
run-ui.bat/run-ui.sh) now reinstall dependencies when an
existing environment predates a required package, such astorchsdefor the DPM++ SDE
samplers.
As always: parity-validated coverage and what is implemented-but-unverified are tracked in
docs/roadmap.md. The features
in this release are covered by the CPU test suite but have not been through GPU parity
validation against the notebook.
Full changelog: v0.5.0...v0.6.0