An architecture question in this week's community sweep asked how to improve lighting, textures, reflections, planting, shadows, and overall composition while maintaining the design. One practical reply deserves more attention: if an upscale includes another denoise pass, keep the Canny and depth ControlNets in place.
That advice sounds like a minor graph detail. It is the dividing line between resizing an approved image and asking the diffusion model to reinterpret it at a new resolution. Every nonzero denoise pass creates new information. Architectural edges need to remain part of the conditions for that creation.
Why the second pass drifts
A common graph generates a controlled image at a modest resolution, enlarges it, encodes the enlarged result back into latent space, and samples again at lower denoise. The second sampler improves local texture because it can work across more pixels. It also sees ambiguous areas that were compressed in the first image: thin mullions, railings, paving joints, reveals, distant windows, and foliage against edges.
Without renewed structural conditioning, the model resolves those areas according to learned visual probability. A railing becomes thicker because that reads clearly. A repeated window shifts because symmetry is statistically persuasive. A concrete joint turns into a shadow. Each change may look plausible alone, while the set no longer matches the model.
The upscale is not clerical. Once denoise rises above zero, it is another design-risk pass.
Depth and Canny do different jobs
Depth guidance describes broad spatial relationships. It helps retain building mass, recesses, projections, ground plane, and the relative placement of foreground and background. It is forgiving of texture and can support substantial lighting change. It is less reliable for narrow elements that barely affect the estimated depth field.
Canny guidance describes detected image edges. It can hold rooflines, openings, frames, joints, and rails, but it also captures unwanted edges in planting, texture, shadows, and entourage. A noisy edge map can freeze visual clutter or fight a desired lighting adjustment.
Used together, they form a useful division of labor. Depth anchors volume. Canny protects selected linework. Neither understands which edges are contractually important, so preprocessing and weights remain architectural decisions.
Build a clean control pair
Use source-model passes when available
Export depth and a clean line or clay view from Revit, Rhino, SketchUp, Blender, 3ds Max, or the renderer connected to the project. Source-model depth is usually more dependable than depth estimated from a finished image, especially through glazing and around thin elements. A hidden-line export gives Canny a clean input without reflections, planting, people, and material noise.
Match camera, crop, and aspect ratio exactly across the beauty image and control passes. Do not casually resize one input with a different crop rule. A control image shifted by a few pixels can produce double frames and soft edges that look like sampler failure.
When only a flat render exists
Run a depth preprocessor on the flat image and inspect the result before connecting it. Look for inverted recesses, merged foreground objects, and glazing interpreted as open space. For Canny, test thresholds until primary building lines remain while material grain and leaf edges mostly disappear. The objective is not the richest edge drawing. It is the smallest set of edges that defines the project.
Edit control images conventionally when needed. Paint out people, cars, tree branches, text, and temporary construction clutter. Add back a missing parapet or mullion line. A five-minute control cleanup often saves many generations.
A controlled two-pass graph
| Stage | Structural control | Change budget |
|---|---|---|
| Base generation | Depth plus selective Canny | Lighting and broad material character |
| Pixel upscale | None needed | Scale only, no new content |
| Second sampling | Reapply resized depth and Canny | Fine texture and local coherence |
| Masked repair | Control relevant to the mask | One named defect |
| Final resize | None if denoise is zero | Delivery dimensions |
In the first pass, load the source image, encode it, apply depth and Canny conditioning, and sample at a moderate resolution. Keep the prompt literal: material, time of day, weather, and desired photographic behavior. Avoid requests that imply camera or design changes. Save this output and compare it with the source before proceeding.
Upscale the accepted output with a conventional or learned pixel upscaler. If the result is already adequate, stop. A zero-denoise resize cannot invent architectural correction, but it also cannot introduce diffusion drift. Only add the second sampler when the larger image needs newly synthesized texture or cleanup.
For that second sample, resize the depth and Canny inputs to the exact target dimensions and apply them again. Start with lower denoise than the first pass. There is no universal numeric recipe because checkpoints, ControlNet models, image content, and samplers respond differently. Change one variable at a time and save the settings with every accepted output.
Schedule control across the pass
Control strength is not the only setting that matters. Start and end percentages determine when guidance acts. Strong guidance through the entire sample may preserve lines but produce a stiff, traced surface. Guidance that ends too early may hold the initial composition and then allow late-stage edge drift.
Begin with depth acting across most of the pass and Canny acting long enough to establish critical lines. Then inspect texture, edge doubling, and geometry. If the result looks outlined, reduce Canny strength or clean the edge input before shortening its schedule. If mass changes, adjust depth. Diagnose the failed type rather than moving every slider together.
Mask the second pass when possible
A full-frame resample exposes the entire project to change even if only the paving and planting need help. Create masks by material or defect. Protect the facade while improving foreground texture. Protect circulation and building edges while repairing vegetation. Keep a little surrounding context so the new patch blends, but do not reopen approved work.
Thin elements deserve explicit protection. Rails, fins, cables, mullions, and signage may need their own mask, line layer, or conventional composite after sampling. Diffusion is not obligated to preserve a two-pixel member through multiple latent conversions.
Review at three scales
At fit-to-screen, check silhouette, camera, major openings, and overall light. At 100 percent, check mullions, rails, joints, stairs, doors, and material boundaries. As an overlay against the source, use a difference or flicker comparison to expose movement that attractive texture conceals.
Review paired views together. A single plate can pass while adjacent views receive different window rhythms, reflection environments, or material scale. Use consistent control sources and record the model, seed, sampler, scheduler, denoise, control weights, and control schedules for the whole set.
Our take: fewer pixels need permission
Architectural ComfyUI workflows often treat a second pass as a generic quality switch. It is better understood as a controlled change order. State what the second pass may improve, keep guidance attached to everything it may not alter, and reject it if the geometry moves.
Take one approved render, enlarge it, and run a second pass with the controls disconnected. Then repeat with resized depth and a cleaned Canny map. Overlay both against the source. The bent line will make the lesson permanent.
Written from the 31 August 2026 intel sweep, which surfaced community requests for ComfyUI architectural enhancement and advice to retain depth and Canny controls during denoised upscaling. ArchiGen AI carries no sponsored placements.