arkennemasis fal · Flux Control LoRA Depth · $0.04/MP
Hold the room, change everything in it
- control_lora_image
- image
- images
- image_paths
- has_nsfw_concepts
- timings
- seed
- prompt
- info
Canny holds edges. Depth holds space - how far away everything is - and that turns out to be the more forgiving condition for most subjects. A depth map doesn't care if your lighting changes, if the surfaces change material, or if the whole scene is rebuilt in a different palette. It only cares that the wall is still behind the person and the table is still in front of the chair.
That's the trade. Depth gives the model more freedom than Canny and asks you to accept a looser composition. For interior restaging, relighting, and anything where you want the same room in a different mood, it's the better tool.
The one setting you should think about
preprocess_depth defaults to true, and its tooltip is the author's own description: when on, the input image is preprocessed to extract depth information. So on the default setting you hand this node an ordinary photograph and it works out the geometry itself.
Turn it off when you're supplying a depth map you already made - a gradient-less render out of Depth Anything or similar. Leave it on and you'll be estimating the depth of a depth map, which is a strange thing to ask a model to do and produces mush.
That single boolean is the difference between two completely different workflows, and it's the field people miss.
The rest of the inputs
prompt- what fills the space. Write sentences; this is an LLM-encoded architecture where(word:1.4)andBREAKare literally passed through as punctuation.control_lora_image- required. The photo, or your depth map.control_lora_strength- defaults to 1.0. The community baseline for Flux ControlNets is nearer 0.6, and the published comparisons found details degrading quickly above 0.7. Depth is more tolerant than Canny, so 1.0 usually reads fine, but if the output has that flat "re-lit photograph" look, this is the dial.image(optional) - a colour/initial reference for image-to-image behaviour. The dedicated version of that is the sibling node in this pack with its ownstrength.loras- JSON for extra LoRA URLs to merge in. Empty in normal use.- The Flux standards:
image_size(landscape_4_3default,customfor exact width/height),num_inference_steps28,seed-1,guidance_scale3.5 (Flux guidance, not CFG),num_images,enable_safety_checker,output_formatdefaulting tojpeg.
Outputs
images and image_paths, with files written to output/fal/fal-ai_flux-control-lora-depth/, plus has_nsfw_concepts, timings, seed, prompt, and info - the request id, cost estimate, saved files and fal's full answer in one JSON string.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Then restart ComfyUI. Or ComfyUI-Manager → Install via Git URL. requirements.txt names one dependency, httpx, and it exists for the pack's Codex nodes; the fal nodes speak HTTP with the standard library. Nothing downloads to your disk and your GPU never gets warm.
FAL_KEY=your-key-from-fal.ai/dashboard/keys
goes in the .env next to run_nvidia_gpu.bat (portable build) or in the ComfyUI folder. Every fal node in this pack reads the key from there and nowhere else - a key can never end up inside a workflow file.
Price
$0.04 per megapixel: a square megapixel is about 4¢, a 1920×1080 is ~8¢. The price badge on the node updates with image_size and num_images, and max_cost_usd (default $20; 0 removes it) stops the run before upload if the estimate is over.
reuse_identical_run (default on) means an unchanged graph returns the file you already paid for rather than generating and billing again - which is what you want, since depth is deterministic. Turn it off when you want a different sample from the same settings.
Troubleshooting, realistically
The result looks like a flat re-render rather than a new scene. Depth conditions layout, not material or edge detail, so a strong depth map plus a vague prompt gives you the same picture with a new coat of paint. Say what the surfaces are, not just the mood.
Nothing resembles my reference. Check preprocess_depth. If you fed a precomputed depth map with preprocessing still on, the geometry got estimated from a greyscale hill and the layout is gone.
Faces and full-body results degrade. That's not this node - Flux editing at 1024×1024 with a full body in frame gets heads and hair artifacts, and it's a known ceiling of the family rather than a setting you can fix.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | landscape_4_3 | The size of the generated image. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| num_inference_steps | INT | 281–50 | The number of inference steps to perform. |
| seed | INT | -1-1–2147483647 | The same seed and the same prompt given to the same version of the model will output the same image every time. -1 leaves it to the model. |
| loras | STRING | The LoRAs to use for the image generation. You can use any number of LoRAs and they will be merged together to generate the final image. JSON. Empty leaves it out. | |
| guidance_scale | FLOAT | 3.500–35 | The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you. |
| num_images | INT | 11–4 | The number of images to generate. |
| enable_safety_checker | BOOLEAN | true | If set to true, the safety checker will be enabled. Disabling it requires account authorization; unauthorized requests are always checked, and images flagged as unsafe are returned as black images. |
| output_format | COMBO | jpeg | The format of the generated image. |
| control_lora_image | IMAGE | The image to use for control lora. This is used to control the style of the generated image. | |
| control_lora_strength | FLOAT | 1.000–2 | The strength of the control lora. |
| preprocess_depth | BOOLEAN | true | If set to true, the input image will be preprocessed to extract depth information. This is useful for generating depth maps from images. |
| imageopt | IMAGE | URL of image to use for image-to-image generation. | |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| has_nsfw_concepts | STRING | — |
| timings | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |