Process 1 · TXT2IMG — как из inputs собирается первая управляемая генерация
На 02:40 Hansen возвращается к большому graph и показывает первый основной production process. Учебная задача здесь не запомнить RealVisXL или конкретный sampler, а понять универсальный паттерн: controls + conditioning + structural guidance + latent source → sampler → decoded image.
От loader до preview 409
Названия loader-файлов подтверждены JSON; их фактическое наличие на машине этим архивом не проверяется.
Process 1 — один module с несколькими источниками контроля
Source graph показывает SDXL generation path: model loader 2, prompt conditioning, optional IPAdapter model route, ControlNet stack, latent selector, KSampler 1 и VAE Decode 14.
Current master mode 541=1 соответствует TXT+CNET2IMG. В этом mode latent selector 535 выбирает EmptyLatentImage 3, а denoise route выбирает full generation behavior.
Current generation mode
Node 541 = 1; source notes identify this as TXT+CNET2IMG.
Decode checkpoint
Sampler 1 feeds VAEDecode 14; decoded image then continues into downstream detail/PPL logic.
Универсальный паттерн генерации — модель здесь вторична
Process 1 читаем как пять подсистем, а не как десятки nodes
| Subsystem | Hansen example | Beginner question |
|---|---|---|
| Model source | 2 / 168 / 87 | Какой MODEL реально приходит в sampler? |
| Text conditioning | 5 / 6 | Что модель должна сделать / чего избегать? |
| Structural control | Depth/Canny ControlNet stack | Что удерживает geometry / edges? |
| Runtime controls | 230 / 231 / 541 / 600 | Какие shared values определяют режим? |
| Execution | 535 → 1 → 14 | Откуда latent, где sampling, где image появляется снова? |
Почему внутри generation на время исчезает обычная картинка
Sampler работает не с обычным RGB image, а с latent representation. Поэтому перед sampling route может начинаться с Empty Latent или VAE-encoded image, а после sampling нужен VAE Decode, чтобы снова получить IMAGE.
Это универсальная идея ComfyUI: IMAGE и LATENT — разные типы данных. Link между несовместимыми типами нельзя воспринимать как обычный «провод картинки».
Режим workflow задаётся не одним sampler widget
Hansen выносит sampling config, seed и generation mode в shared controls. Это позволяет нескольким downstream nodes читать одно authoritative value и делает A/B testing воспроизводимым.
Shared sampler config
Node 230 distributes KSampler settings to node 1; node 231 provides GLOBAL Seed and also feeds FLUX noise downstream.
Первый meaningful output — decode 14
До decode 14 мы проверяем inputs/controls/conditioning. После decode 14 уже можно оценивать изображение. Это естественная diagnostic boundary: если проблема видна здесь, PEOPLE, main FLUX и upscale ещё не виноваты.
Если Process 1 дал плохой результат — проверяем сверху вниз
- INPUT: правильный ли base/reference/control source выбран?
- MODE: node 541 действительно указывает нужный generation mode?
- MODEL: какой route выбран node 168 и какие loaders реально активны?
- CONDITIONING: positive / negative и linked text values?
- CONTROL: Depth/Canny sources, strength и active stack?
- LATENT: что выбрал selector 535?
- SAMPLER CONFIG: seed / steps / CFG / sampler / scheduler / denoise?
- DECODE 14: есть ли корректный image checkpoint до downstream modules?
Упражнение: прочитать SDXL branch без запуска
- Найти node 1 KSampler и идти от него только upstream.
- Разделить incoming links на MODEL, CONDITIONING, LATENT и CONFIG.
- Для каждого input найти authoritative source.
- Затем пройти downstream: node 1 → node 14 → следующий module.
- Сформулировать branch одной фразой без названий конкретных моделей.
Process 1 заканчивается IMAGE, пригодным для следующего module
Когда урок 02:40 усвоен
Ты можешь открыть незнакомую generation branch и независимо от названия модели найти model source, conditioning, structural controls, latent/source state, sampler config, sampler, decode и return image.