Nodes/ComfyUI-Photoshoot/Photoshoot Licht
ComfyUI Node

Photoshoot Licht

30 curated setups, and one seed to roll them

By ralksta·Created 9 days ago·Updated 2 days ago· 70
Photoshoot Licht
    • licht
    seed0

    Lighting is the fastest way to tell a fake photo apart from a real one. Flat light, shadows pointing every which way, catchlights in the eyes that don't match any actual source - those are the tells people keep catching, and they survived four generations of models. Photoshoot Lighting is ralksta/ComfyUI-Photoshoot's answer: a node that hands you a real lighting setup as a finished prompt phrase, curated so the physics of the light is described, not just a mood word.

    It's the flagship of the pack's 2.2.0 release, sitting next to the person, pose and expression builders. You pick a setup, a direction, an atmosphere - or let the node roll dice for you - and it outputs one STRING that plugs into the pack's Photoshoot Build Prompt node and lands in your prompt at {lighting} or {licht}.

    How it works

    Three dropdowns, each mapping a label to a specific, physical prompt phrase:

    • Setup - 30 curated looks in three families: 10 studio (softbox, Rembrandt with its triangle shadow, beauty dish with "crisp catchlights in the eyes", 90s direct flash, split lighting, butterfly, high-key, low-key, ring light, overhead top light), 8 natural (golden hour, blue hour, window light, overcast, harsh noon sun, sunset, dappled leaf light, dawn), and 12 creative/mood (neon rim, venetian-blind gobo, laser grid, firelight, candlelight, siren strobes, water caustics, god rays, chiaroscuro, moonlight, prism, film noir).
    • Direction - 6 options: 45° key, rim, backlight, side raking, soft fill, top light.
    • Atmosphere - 5 options: volumetric haze, crystal-clear air, warm film glow, cool grade, dreamy bokeh.

    There's also a free-text details field, and a family chip (All / Studio / Natural / Mood) that filters the setup list. Everything gets joined into one comma-separated string, appended to the detail text if you wrote any.

    Here's the trick worth knowing: the only input the node's schema exposes is seed. Everything else - the dropdown values, which dice are on, the group, your details - lives in a hidden LightingState JSON that's persisted right in the workflow. So when you drag the node onto the canvas it looks bare until you open it; the whole panel is the JS front-end.

    The dice are the fun part. Each category has one, and rolling doesn't use the sampler seed - it's a deterministic draw from this node's seed: random.Random(f"{seed}-{category}"). Same seed, same setup, forever. That's deliberate: roll a series seed once, and every photo in a 40-shot series gets consistent lighting without you hand-picking each one. Switch the seed's "control after generate" off and it stays fixed while you iterate on everything else.

    Why you'd reach for it

    Because "moody lighting" is a lie and "low-key studio lighting with deep rich blacks, 45-degree key light, cool cinematic color grading" is not. The community's best prompting advice keeps landing on the same note: name a physical piece of equipment and let the model do the rest. These presets are exactly that - specific lights and their observable behavior, not adjectives. It also pairs with the pack's whole thesis: the person stays constant across a series, the light is what gives each shot its life.

    The composed string runs a few hundred characters, which is why this works best on models with a T5 or LLM text encoder - Flux, SD 3.5, Qwen-Image, Krea 2 (the pack's example workflow targets Krea 2 with the Qwen3-VL encoder). On CLIP-only SD 1.5/SDXL the prompt gets chunked at 77 tokens and the lighting near the end loses weight; it still works, just softer.

    Installing it and gotchas

    Manager search Photoshoot, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ralksta/ComfyUI-Photoshoot
    

    Restart. No dependencies, no downloads, no model files - it only emits text.

    Two things trip people up. First, the UI is German if ComfyUI or your browser is set to German - labels read "Softbox diffuses Licht" instead of "Softbox diffused light". The composed prompt is always English either way. Second, if the dropdowns look missing or the node renders as a bare seed widget, that's the hidden-state design, not a broken install; the controls appear in the node's own panel. And if you save the output into the pack's lighting store, remember new names only appear in the loader after a refresh (R).

    CategoryPhotoshoot

    Inputs (1)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    lichtSTRING