SP_FluxUnsampler_ForwardODESampler
The controlled-forward-ODE settings behind SP-Nodes' unsampling
- flux_unsampler_sampler
This node doesn't sample anything by itself - it produces a flux_unsampler_sampler config object that plugs into the pack's SP_FluxUnsampler node, which does the actual work. What it configures is a specific technique: "unsampling," running a diffusion model's ODE forward instead of backward to push a real image toward noise along a controlled path, so a second, forward pass can regenerate it under a new prompt while keeping the original composition. It's a genuine, community-established Flux technique - people reach for it (and its cousin RF-Inversion) specifically because a plain low-denoise img2img can regenerate the source image but "fails to do anything else" once you push past small changes, where a properly controlled unsampling pass holds prompt adherence while still staying anchored to the source.
The parameter names here - gamma, eta, with tooltips reading "the paper leaves this at 0.5" and "the paper does not decrease this below 0.7" - line up closely with the RF-Inversion paper's controlled forward-ODE formulation, which uses exactly those two terms to interpolate between deterministic and stochastic inversion. That's a reasonable read of where this implementation comes from, though the node itself doesn't cite anything by name - treat the RF-Inversion connection as an informed inference rather than a stated fact.
How it works
gamma and eta control the character of the forward pass - gamma at the paper's suggested 0.5, eta as the strength of the guidance pulling the trajectory back toward controlled behavior rather than pure noise. start_step/end_step restrict that guidance to a window of steps rather than the whole pass (the tooltip is explicit that end_step is not inclusive), and eta_trend lets that guidance strength ramp up, ramp down, or stay flat across the window instead of being a single flat number the whole way through.
Inputs and outputs
gamma(FLOAT, default 0.5, tooltip: "the paper leaves this at 0.5") - leave it alone unless you're deliberately experimenting.eta(FLOAT, default 0.9, tooltip: "the strength of the guidance. The paper does not decrease this below 0.7") - the main knob; the tooltip itself is telling you the safe floor.start_step/end_step(INT, defaults 0 / 9) - the step window guidance applies over; the end is exclusive.eta_trend(enum, required:constant,linear_increase,linear_decrease) - howetachanges across that window.seed(optional, INT, default 0).- Output:
flux_unsampler_sampler- feed this straight into SP_FluxUnsampler's matching input; it has no other use on its own.
Installing it
ComfyUI Manager - search "SP-Nodes", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes
then restart ComfyUI.
Common issues
This node alone does nothing visible. It only produces a config object - you need SP_FluxUnsampler downstream actually consuming flux_unsampler_sampler for any of this to affect an image. If your graph seems to ignore these settings entirely, check that connection first.
Pushing eta below the paper's floor breaks reconstruction. The tooltip's own warning ("the paper does not decrease this below 0.7") is worth respecting - go lower and, per how this class of technique generally behaves, expect the unsampled/resampled result to drift away from the source image rather than staying anchored to it.
Widening start_step/end_step over the whole run changes character, not just strength. Since end_step is exclusive and the trend can ramp, small changes to this window shift where in the sampling process the guidance is strongest - worth adjusting one variable (window vs. eta vs. eta_trend) at a time rather than several together, or it gets hard to tell which change caused which result.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| gamma | FLOAT | 0.500–100 | the paper leaves this at 0.5 |
| eta | FLOAT | 0.900–100 | the strength of the guidance. The paper does not decrease this below 0.7 |
| start_step | INT | 00–1000 | the step that the sampler starts guiding the sampling towards the image in "latent_image" |
| end_step | INT | 90–1000 | the last step for guiding the sampling (not inclusive) |
| eta_trend | COMBO | how the eta should increase/decrease/stay constant between start_step and end_step | |
| seedopt | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| flux_unsampler_sampler | flux_unsampler_sampler | — |