An architect posts a render and asks how to improve lighting, textures, reflections, planting, shadows, and composition while keeping the design intact. That request appears repeatedly in ComfyUI and Flux communities. It sounds like one enhancement task. It is a queue of dependent tasks.

If a global image-to-image pass changes all six at once, the operator cannot tell which control solved the problem or which one moved the building. A convincing tree may distract from a bent mullion. Better reflections may be painted onto glass whose frame count already drifted. The repair order matters because later pixels depend on earlier geometry.

Photorealism is not one pass. It is the absence of unresolved contradictions in the right order.

Build the queue from facts to effects

PassRepair targetDo not disturb
01Camera and primary geometryCrop, floor count, openings
02Material boundaries and scaleEdges, joints, modules
03Light direction and exposureOpening positions, fixture count
04Glass and reflectionsFrames, interior depth cues
05Planting and entourageCirculation, facade silhouette
06Local defects and finishEverything outside the mask

Save a numbered image after every accepted pass. Keep the workflow JSON, model and version, input, seed, prompt, negative prompt, sampler settings, denoise value, conditioning maps, mask, and output. The queue is not six generations that drift forward blindly. Each accepted image becomes a checkpoint with a reason for approval.

Pass 01: stop if the camera or building is wrong

Compare the source and candidate at half opacity. Check crop, verticals, vanishing behavior, floor lines, roof edge, opening count, balcony depth, and the contact between building and ground. If these fail, return to the base render or strengthen structural conditioning. Do not ask planting or texture to disguise them.

Official ComfyUI documentation describes ControlNet as conditioning generation with inputs such as edge maps and depth maps. The Apply ControlNet node exposes strength plus start and end percentages. Those are controls to test, not magic fidelity guarantees. Use one appropriate map at a time before stacking controls. Save the exact preprocessed map, since different ControlNet types expect different reference images.

Choose five countable anchors before generation. Window bays, columns, floor plates, stairs, and parapets work well. Approve the pass only when those anchors survive. If the source itself contains a projection error or unfinished geometry, fix it upstream. Diffusion should not become an undocumented modeling tool.

Pass 02: repair materials at their boundaries

A material does not look credible because a prompt says “realistic concrete.” It looks credible when scale, joint spacing, edge behavior, roughness cues, repetition, and adjacent materials agree. Begin with the largest surfaces. Check whether masonry courses fit the building, boards meet corners, and cladding changes stop at designed boundaries.

Use a local mask when one zone fails and the rest has passed. Name the requested change narrowly: target surface, material, module, finish, and what must remain. Include enough surrounding pixels for context, but keep unrelated openings and edges out of the editable region. Compare outside the mask as well as inside it.

Do not repair microtexture yet. Large-scale material logic must pass first. A sharp pore pattern on an incorrectly scaled wall only makes the error more legible.

Pass 03: make light obey a single source story

Write the light story in one sentence: time, weather, key direction, interior state, and exposure intent. Then inspect cast-shadow direction, softness, window brightness, contact shadows, sky contribution, and the relative exposure of interior and exterior. If separate objects imply separate suns, the scene is not ready for finish.

Lock the camera and accepted edges while testing light. A lower denoise or stronger structural condition may reduce drift, but the correct value depends on model, input, and target. Change one setting per run. Contact sheets should label the value that changed and hold seed and prompt constant where the workflow permits.

Do not describe an AI relight as daylight analysis. It creates a visual proposal. It does not calculate illuminance, glare, heat gain, or code compliance. Any performance claim needs the project's validated analysis tool.

Pass 04: reflections come after light

Glass depends on geometry, material, camera, and illumination, which is why it sits fourth. Check whether each pane reflects a plausible direction, whether interior content remains at a believable depth, and whether frames continue through the facade. Mark panes that turn into mirrors, holes, or unrelated scenes.

Mask one contiguous glass zone at a time. Include a small transition around the edge but protect mullions and slab lines. The official ComfyUI inpainting guide explains that the VAE Encoder for Inpainting accepts pixels, VAE, and a mask, with a grow-mask control that expands the transition area. That control can help avoid a hard seam. It can also cross into adjacent architecture if expanded carelessly.

Judge the repair at presentation size and at 200 percent. The first view reveals the scene effect. The second catches doubled frames, smeared edges, and reflection discontinuities.

Pass 05: add planting without changing access

Vegetation is visually forgiving and spatially dangerous. A generator can make planting more abundant while blocking a door, narrowing a path, hiding a guard, or growing through a facade. Place it after the building and light have passed so it cannot become the reason an earlier defect escapes review.

Define protected circulation and facade zones before masking. Specify plant type, mature scale, density, season, and maintenance character. Count entrances and check accessible routes after the pass. For people, verify scale, ground contact, direction, repeated identities, cropped anatomy, and whether activity matches the space.

Entourage is not decoration when it communicates use. If a person makes a clear width look wider, or a tree hides the only visible accessible entry, the image tells a false story.

Pass 06: inpaint from a numbered defect list

Now create a defect list with one line per location: bent handrail at upper left, merged chair legs near table three, broken sign edge at entry, doubled downlight above reception. Rank safety and design meaning above cosmetic polish.

ComfyUI's official guide frames inpainting as a way to modify selected parts instead of regenerating the entire image. Its Mask Editor sends the drawn region to the inpainting encoder. Use that locality deliberately. One defect class per pass makes rejection cheap and diagnosis possible.

After every local edit, difference the new output against the accepted checkpoint. Expected change should cluster near the mask. Unexpected change outside it goes back for review. A clean local repair that quietly alters a distant window is not clean.

Use a stop rule, not taste alone

Set the attempt budget before each pass. Three or four controlled candidates may be enough to decide whether the current graph can solve the defect. If every candidate trades one failure for another, stop and change the source, mask, conditioning, or model. More seeds are not a repair strategy.

Record pass, repair, or fail for every queue item. A pass names the checkpoint. A repair names the next bounded action. A fail sends the issue upstream or excludes the image from use. “Looks better” is a comment, not a status.

Our take: photoreal starts with triage

The community request is reasonable. Lighting, texture, glass, plants, and shadow all matter. The useful answer is not a giant prompt or a graph with every control turned on.

Queue the dependencies. Keep the accepted checkpoint. Mask the smallest truthful region. Reject any polish that changes a fact you already approved.

The reflection waits for the wall.


Editorial basis: the 30 September 2026 ArchiGen AI intel sweep, including community requests for architectural-render enhancement, and the official ComfyUI documentation for ControlNet conditioning and inpainting and the Mask Editor. Node inputs and documented controls were checked on 30 September 2026. This article reports no hands-on test. The six-pass order, acceptance checks, and stop rules are editorial recommendations.