Nodes/Artha-Gemini/πŸ”± Gemini Light
ComfyUI Node

πŸ”± Gemini Light

Stop describing lighting from memory β€” pick it from a menu

By CyrostarΒ·Created about a year agoΒ·Updated about a year agoΒ· 1
πŸ”± Gemini Light
    • light
    • markdown
    β—„sourceNONEβ–Ί
    β—„qualityNONEβ–Ί
    β—„directionNONEβ–Ί
    β—„timeofdayNONEβ–Ί
    β—„phenomenaNONEβ–Ί
    β—„api_keyβ–Ί
    β—„modelgemini-2.5-flashβ–Ί
    β—„max_tokens5000β–Ί
    β—„temperature0.7β–Ί
    β—„randomizefalseβ–Ί
    β—„use_imagefalseβ–Ί
    β—„imageβ–Ύβ–Ί

    Gemini Light is the lighting node in the Artha-Gemini pack, and its whole trick is making good lighting language a choice instead of a memory. Instead of staring at the prompt box trying to recall how to describe golden-hour glow, you pick Sunset Light from a dropdown and get a precisely-worded lighting description back - formatted for an image or video prompt.

    It's part of the pack's character/scene assembly system. The πŸ”± Gemini nodes form a pipeline: Subject, Scenery, Camera, Light, and Style each produce a typed output (here, the ARTHALIGHT type), and Gemini Compose combines them into a full composition prompt. Light is the one that handles the mood.

    How it works

    The node ships with a bundled lighting reference (a JSON file of options). You get five dropdowns:

    • source - where the light comes from: daylight, moonlight, overcast, sunset, artificial, practical, and more.
    • quality - hard vs. soft, contrast and shadow character.
    • direction - where it's coming from relative to the subject.
    • timeofday - dawn, noon, dusk, night.
    • phenomena - the showboat options: lens flare, god rays, bokeh, haze.

    Every dropdown has a NONE default, so you can set only what matters and leave the rest for the model to infer.

    Two toggles change the behavior. randomize picks a random lighting profile for you - genuinely handy for iterating on concept art when you're stuck in a rut. And use_image is the party piece: flip it on, and instead of assembling from your dropdowns, the node uploads your reference image to Gemini and asks the model to describe the light in the picture. You turn a photo into a reusable lighting prompt that you can then apply to a completely different scene.

    The node returns two outputs: light (the ARTHALIGHT description, wired into Compose) and markdown - a rendered reference sheet of every lighting option, meant for the pack's Gemini Markdown display node.

    The input worth knowing

    Honestly, only use_image matters on day one. Randomize is fun. The dropdowns are self-explanatory. But the image-driven mode is what separates this from just having a list of lighting words in your back pocket: it captures observed lighting, which is far more specific than what you'll type unprompted.

    Note that when use_image is on, the node makes a real API call and needs the shared API block filled in (api_key, model, max_tokens, temperature). When it's off and you're just picking from menus, the node assembles the output locally - no API key, no cost, instant.

    Installing it

    Via ComfyUI Manager (search Artha-Gemini) or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Cyrostar/ComfyUI-Artha-Gemini
    cd ComfyUI-Artha-Gemini
    pip install -r requirements.txt
    

    No model downloads; dependencies are just google-genai, Pillow, numpy, torch, and soundfile. Get an API key from Google AI Studio if you plan to use the image-reading mode.

    Where people get burned

    The classic trap is thinking every dropdown needs a value. It doesn't - NONE is a valid, useful state, and over-specifying lighting is how you get a prompt that contradicts itself. Pick the one or two things you care about.

    The use_image path costs API money and depends on a valid key, so don't flip it on expecting a free local analysis. And as with every pack node, keep your key out of the workflow: api.json (gemini_api_key) or GEMINI_API_KEY env var, never the plain-text field. The output is an LLM's reading of your image, so it's a starting point - treat the light description as strong guidance, not gospel, when you feed it to Compose.

    CategoryArtha/LLM/GEMINI

    Inputs (12)

    NameTypeDefaultDescription
    sourceCOMBONONE14 options: NONE, DAYLIGHT, SUNNY LIGHT, MOON LIGHT, OVERCAST LIGHT, SUNRISE LIGHT, +8
    qualityCOMBONONE5 options: NONE, SOFT LIGHT, HARD LIGHT, LOW CONTRAST LIGHT, HIGH CONTRAST LIGHT
    directionCOMBONONE7 options: NONE, TOP LIGHT, SIDE LIGHT, BACK LIGHT, RIM LIGHT, BOTTOM LIGHT, +1
    timeofdayCOMBONONE7 options: NONE, DAYTIME LIGHT, NIGHT LIGHT, DAWN LIGHT, SUNRISE LIGHT, DUSK LIGHT, +1
    phenomenaCOMBONONE17 options: NONE, LENS FLARE, GOD RAYS, VOLUMETRIC LIGHT, CAUSTICS, REFLECTION, +11
    api_keySTRINGAPI key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder.
    modelCOMBOgemini-2.5-flash5 options: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite
    max_tokensINT50001–8192For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60-80 English words.
    temperatureFLOAT0.70–2A temperature of 0 means only the most likely tokens are selected, and there's no randomness. Conversely, a high temperature injects a high degree of randomness into the tokens selected by the model, leading to more unexpected, surprising model responses.
    randomizeBOOLEANfalseβ€”
    use_imageBOOLEANfalseβ€”
    imageCOMBO1 options: example.png

    Outputs (2)

    NameTypeDescription
    lightARTHALIGHTβ€”
    markdownSTRINGβ€”