Commit Graph

12 Commits

Author SHA1 Message Date
06b42a610b refactor: vectorize gradient loop and fix DD node position
Replace per-pixel Python loop with vectorized torch.arange + slice
operations. Fix DifferentialDiffusion node position to avoid visual
overlap with SplitImageToTileList node 14 on the canvas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:49:17 +01:00
93b0ac22cd docs: document gradient mode and differential diffusion
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:45:50 +01:00
c27bf2e898 feat: add DifferentialDiffusion node to seam fix workflow pass
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:45:01 +01:00
b3cfd507b8 fix: pass mode="binary" explicitly in test_values_are_binary
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:38:30 +01:00
cd00843b2e feat: add gradient mode to GenerateSeamMask for differential diffusion
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:37:17 +01:00
d46192295b test: add gradient mode tests for GenerateSeamMask
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:36:02 +01:00
7533b5a701 docs: add differential diffusion implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:34:20 +01:00
bdf29aafd1 docs: add differential diffusion seam fix design
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:32:46 +01:00
01b4800fce fix: resolve overlapping group bounding boxes and add README
Group 4/5 and Group 1/2 bounding boxes overlapped, causing nodes to
appear in multiple groups. Muting the Seam Fix group would have also
muted Pass 1 output nodes. Repositioned GenerateSeamMask node and
adjusted all group boundaries to eliminate overlaps.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:21:11 +01:00
db82775382 fix: add PreviewImage after Pass 1 for bypass support
SaveImage was only connected to the seam fix output, so muting the
seam fix section produced no output at all. Added PreviewImage after
Pass 1's ImageMergeTileList so the user always sees the tiled redraw
result, even when the seam fix section is bypassed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:10:45 +01:00
65253fd1bc fix: compute seam positions from actual tile grid
Replicate SplitImageToTileList's get_grid_coords logic to find real
overlap regions between adjacent tiles. Fixes three bugs:

1. Bands were at overlap start instead of center (off by overlap/2)
2. Spurious bands generated beyond the actual tile grid
3. Edge tile seams placed at wrong position (ignoring boundary shift)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:05:26 +01:00
2564377aa1 feat: initial ComfyUI_UltimateSGUpscale
Recreates UltimateSDUpscale features using built-in ComfyUI nodes
(SplitImageToTileList, ImageMergeTileList) plus a small GenerateSeamMask
helper node.

- GenerateSeamMask: creates white-band mask at tile seam positions
- Workflow JSON: 22-node tiled upscale pipeline with:
  - Pass 1: model upscale + tiled img2img redraw
  - Pass 2: targeted seam fix using SetLatentNoiseMask
- Unit tests for seam mask generation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:52:32 +01:00