Nodes/DOGMA Nodes/DOGMA Phase3Render 1.0.22
ComfyUI Node

DOGMA Phase3Render 1.0.22

One masked pass per region, master image preserved

By axior·Created 6 months ago·Updated 2 days ago· 2
DOGMA Phase3Render 1.0.22
  • prepared
  • model
  • clip
  • vae
  • sampler
  • image
  • render_report
◄negative_prompt►
◄steps12►
◄cfg1.0►
◄scheduler▾►
◄seed1976►
◄vae_tile_size1024►
◄vae_overlap128►
◄low_frequency_strength0.15►
◄save_reportstrue►

This is the business end of the DOGMA pipeline. Everything before it - the VLM inventory, the SAM masks, the category chooser, the crop preparation - exists to produce a bundle of jobs. Phase3Render takes that bundle and loops over it: encode the crop's masked latent, sample it, decode it tiled, and composite the result back into the master image. One inference per region, each with its own prompt and denoise.

Why you would reach for this over a stock inpaint graph: it is the automation layer. The KB's description of automatic detailing is exactly the shape of this node - detect, crop, re-render, paste back - and the whole reason that category exists is that doing it by hand across dozens of regions does not scale. What this node adds over the Impact Pack's detailer nodes is the crop-and-stitch discipline: it never re-renders the whole frame to fix a small region, so sampling cost stays proportional to what actually changed.

How it works

The node receives prepared, a bundle containing the source image plus a list of jobs. Each job carries the crop image, an inpaint mask, a blend mask, the geometry metadata needed to put it back, and a denoise value. For every job that is actually renderable - it has a prompt and a denoise above zero - the node:

  1. Builds the sigmas for that denoise from a BasicScheduler, cached per distinct denoise value in the run.
  2. Encodes the positive prompt from the job and the negative prompt once, reusing it across jobs.
  3. Encodes a masked latent via the pack's own masked-denoise encoder, at your vae_tile_size and vae_overlap.
  4. Samples with SamplerCustom, using a per-job seed derived from the base seed plus the job ID.
  5. Decodes tiled, then composites with the pack's soft-stitch routine at low_frequency_strength.

Jobs that are not renderable are reported as preserved with a reason and skipped - no encode, no sampling. If nothing is renderable at all, the node returns your input image, and it says so in the report rather than pretending it did work. The lazy inputs (model, clip, vae, sampler) are only demanded when at least one job will actually run, which is why a bypassed phase 3 does not pull a model into VRAM.

Inputs that matter

prepared (DOGMA_RENDER_JOBS) comes from a phase-3 crop/describe stage. Then the usual suspects: model, clip, vae, and sampler - note that the sampler is a SAMPLER object, so you need a sampler-select node feeding it, not a dropdown name. negative_prompt is empty by default, and for an edit-model style base that is usually correct.

steps (12) and cfg (1.0) default to a distilled-flow setup. scheduler is a standard ComfyUI scheduler list. seed (1976) is the base; each job is offset from it. vae_tile_size (1024) and vae_overlap (128) control the tiled decode - lower tile size when a big crop OOMs. low_frequency_strength (0.15) is the color-protection dial; DOGMAColorProtectionV124 exists to set it in words. save_reports writes a JSON run document into output/DOGMA_PHASE3_RENDER/.

Outputs: image and render_report (STRING), a per-job line of ID, category, status, denoise, and reason.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes

Or Manager → DOGMA Nodes, then restart. scipy>=1.10 is the pack's only pip dependency. Worth knowing before you start: the README on GitHub documents the WAN VACE and sampler nodes, not this pipeline, and the pack's own changelogs admit the phase-3 line has CPU regression tests but no GPU benchmark. Treat it as a power-user tool that you tune yourself.

Also note what the node assumes exists in your ComfyUI: it drives core nodes internally, including the pack's masked-latent and stitch classes. Keep the pack and ComfyUI up to date together - the changelog tells you to update through Manager and restart.

Where people get burned

Wrong generation of nodes. DOGMAPhase3RenderV122 expects a prepared bundle whose schema says so; the node raises "regenerate isolated target jobs" when it sees an older bundle, which is the pack being helpful.

Denoise is per-category, and it comes from the chooser, not from this node. There is no global denoise widget here on purpose. If a region looks untouched, check the report for preserved before you go looking for a sampling bug.

CategoryDOGMA/v1.0.22

Inputs (14)

NameTypeDefaultDescription
preparedDOGMA_RENDER_JOBS—
modelMODEL—
clipCLIP—
vaeVAE—
samplerSAMPLER—
negative_promptSTRING—
stepsINT121–10000—
cfgFLOAT1.00–100—
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
seedINT19760–18446744073709550000—
vae_tile_sizeINT1024512–4096—
vae_overlapINT12864–512—
low_frequency_strengthFLOAT0.150–1—
save_reportsBOOLEANtrue—

Outputs (2)

NameTypeDescription
imageIMAGE—
render_reportSTRING—