Nodes/Difforum/Difforum · Feedback Sampler (Classic+)
ComfyUI Node

Difforum · Feedback Sampler (Classic+)

The heart of Difforum — warp, re-diffuse, colour-match, repeat

By chillithebillis·Created 3 months ago·Updated about a month ago· 7
Difforum · Feedback Sampler (Classic+)
  • model
  • positive
  • negative
  • vae
  • params
  • camera
  • init_image
  • strength_schedule
  • depth
  • cfg_schedule
  • positive_schedule
  • control_net
  • control_image
  • frames
steps20
cfg7.0
sampler_nameeuler
schedulernormal
color_coherence0.80
color_modelab
near1.00
far100.00
invert_depthfalse
translation_scale1.0
control_strength0.60
symmetrynone
symmetry_segments6
borderreflection
sharpen0.20
noise0.020
cadence1
start_frame0
end_frame0
seed_modefixed

This is the node the whole pack is built around. Difforum · Feedback Sampler (Classic+) is Deforum's famous feedback loop, rebuilt for modern models: each frame is born from the last - warp the previous frame along the camera path, re-diffuse it as img2img, match its colour back to the first frame, and repeat. The result is the continuous-morphing, psychedelic, living-image look Deforum was known for, except this version takes a plain ComfyUI MODEL, VAE, and CONDITIONING, so it runs SD1.5, SDXL, Flux, or SD3.5 - no 2023-era lock-in, no Python 3.12 refusal, no auto-queue hacks. If you want one sentence for what makes this pack worth installing, it's "Deforum that still runs on a current ComfyUI."

The required inputs read like a sampler plus a camera: model, positive, negative, vae, the params from Anim Setup, a camera track, an init_image for frame 0, and a strength_schedule (the per-frame denoise curve - lower strength = more stable, higher = more morph). Then the usual steps, cfg, sampler_name, scheduler, plus the two colour-coherence controls: color_mode (default lab - perceptual LAB matching, and yes, lab beats rgb for keeping a clip coherent) and color_coherence (0.7–0.9 is the sweet spot per the README).

The optional inputs are where it gets powerful, and the README's "Quality & coherence" section is basically a tour of them:

  • depth (+ near/far/invert_depth/translation_scale) - unlocks real 3D camera. No depth map, no 3D motion; that's the pack's most common gotcha.
  • positive_schedule - prompt travel, one conditioning per frame; the scene morphs its subject as the camera moves.
  • control_net + control_image + control_strength - structure guidance each frame (keep it ~0.3–0.5 if it feels rigid). Must match your base model family (SD1.5↔SD1.5, SDXL↔SDXL).
  • symmetry + symmetry_segments - fold the frame inside the loop; the diffusion heals the seams, giving the living-kaleidoscope look that the mesh of every frame compounds.
  • sharpen (0.2–0.5) and noise (0.02–0.05) - re-inject detail every frame so the loop resolves it into structure instead of amplifying blur (the anti-mush trick, same as Detail Guard).
  • border (default reflection) - stops black edges creeping in on zoom-out and rotation.
  • cadence (2–3) - only diffuse every Nth frame; the in-between frames ride the camera warp. Roughly N× faster with smoother motion.
  • seed_mode - fixed (default) reuses the same noise each frame, calming texture boil enormously; increment for livelier churn.

Output: a single frames IMAGE batch (frame 0 through max_frames), ready for VHS-style post, Flow Stabilize, or Save Video.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/chillithebillis/Difforum.git difforum

Restart ComfyUI ([Difforum] loaded N nodes in console) or ComfyUI Manager → "Difforum". numpy only; the sampler uses ComfyUI's own common_ksampler underneath, so no extra deps.

Common issues & the fixes that actually work

  • Flicker / texture boiling - lower per-frame strength to ~0.4–0.5, keep seed_mode=fixed, and run the frames through Flow Stabilize (~0.5). Naive frame blending ghosts; flow-aligned blending doesn't.
  • Colour drift - color_mode=lab, color_coherence 0.7–0.9.
  • All-black frames on SD1.5 - a real, pack-documented one: some ComfyUI builds make SD1.5 fp16 NaN. Launch with --force-fp32; it's a base-model precision issue, not Difforum.
  • Mush after many frames - sharpen ~0.3, noise ~0.02–0.05.
  • 3D camera does nothing - you're in 3d mode without a depth input.

This is the node people actually mean when they say "Deforum." It's also the one where the pack's 16 test suites and the difforum_feedback_classic.json template earn their keep - start from the template, swap in a modern checkpoint, and let the loop do its thing.

CategoryDifforum/render

Inputs (33)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
paramsDIFFORUM_PARAMS
cameraDIFFORUM_CAMERA
init_imageIMAGE
strength_scheduleDIFFORUM_SCHEDULE
stepsINT201–200
cfgFLOAT7.00–30
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
color_coherenceFLOAT0.800–1
color_modeCOMBOlab3 options: lab, rgb, none
depthoptIMAGE
cfg_scheduleoptDIFFORUM_SCHEDULE
positive_scheduleoptDIFFORUM_PROMPT
nearoptFLOAT1.000.01–1000
faroptFLOAT100.000.02–10000
invert_depthoptBOOLEANfalse
translation_scaleoptFLOAT1.00–100
control_netoptCONTROL_NET
control_strengthoptFLOAT0.600–3
control_imageoptIMAGE
symmetryoptCOMBOnone5 options: none, mirror_h, mirror_v, mirror_quad, kaleidoscope
symmetry_segmentsoptINT62–64
borderoptCOMBOreflection3 options: reflection, zeros, border
sharpenoptFLOAT0.200–2
noiseoptFLOAT0.0200–0.5
cadenceoptINT11–12
start_frameoptINT00–1000000
end_frameoptINT00–1000000
seed_modeoptCOMBOfixed2 options: fixed, increment

Outputs (1)

NameTypeDescription
framesIMAGE