AI Image Conflicting Lighting Directions

Subject lit from the left, sun on the right, shadows pointing nowhere consistent. Pin one key light + direction + time of day.

Look at the image: the subject’s face is lit from the left, but the sun in the background is clearly on the right. The shadow under their chin points one direction, the shadow on the wall points another. Your brain reads this as “wrong” even before you can name what’s wrong — humans are extremely sensitive to lighting consistency.

This happens when the prompt names lighting in conflicting ways, when a style LoRA bakes in fixed lighting that fights yours, or when “golden hour + studio lit + dramatic shadows” all get crammed into one sentence.

Common causes

Ordered by hit rate, highest first.

1. Multiple light directions in the same prompt

"portrait lit from the left, golden hour sun behind subject, dramatic side light from right, studio softbox key light"

You’ve just told the model “light comes from 4 directions.” It can’t satisfy all four, so it averages — and the result has light from everywhere.

How to spot it: scan your prompt for words like left, right, behind, front, top, bottom near light-related terms. If you have more than one direction, you have a conflict.

2. Conflicting time-of-day or weather cues

"golden hour, overcast, dramatic sunlight, soft diffused, night neon"

Each of these has implicit light direction and quality. Golden hour = warm low-angle. Overcast = soft no-direction. Night neon = colorful point sources. Mixing them confuses the model.

How to spot it: look for multiple time/weather words in the prompt. Pick one.

3. Style LoRA bakes in lighting that fights your prompt

Many style LoRAs (especially anime, “cinematic,” fashion-editorial) are trained on images with consistent lighting. The LoRA tries to impose its trained lighting; your prompt fights it. Result: half-LoRA, half-prompt.

How to spot it: same prompt with LoRA off looks consistent; with LoRA on it conflicts. The LoRA is the source.

4. Reference image lighting disagrees with prompt

Img2img / IP-Adapter / --cref with a reference image that has different lighting from what you describe in text. The model partially honors both → conflict.

How to spot it: drop the reference, regenerate text-only. If lighting becomes coherent, the reference is the problem.

5. No light source described at all

When you don’t describe lighting, the model picks one — and if your prompt has multiple environments hinted (e.g., cinematic portrait at home, sunset outside the window, lamp on desk), the model invents conflicting sources to “make sense” of all the environments.

How to spot it: prompt has no explicit light direction or quality, AND mentions multiple environment elements.

Shortest path to fix

Step 1: Pin ONE key light using cinematography vocabulary

Replace adjective-soup with a precise cinematography spec: direction + quality + time/source + temperature.

Bad → Good:

Bad (adjective soup)Good (cinematography spec)
golden hour, dramatic, side lit, cinematicrim light from camera left, low-angle golden hour sun (5pm), warm 3200K, soft shadow falloff
studio portrait, beautiful lightingsingle softbox key light at 45° camera right, fill card on left at -1 stop, no rim
moody, cinematic, dramaticsingle hard light from camera left, motivated by window, deep shadow on shadow side, 5600K daylight

Cinematography terms to use:

  • Direction: from camera left, from camera right, from above, from behind, front-lit
  • Quality: hard light, soft diffused, dappled, direct sunlight, bounced fill
  • Source: golden hour sun, window light, softbox, practical lamp, neon signs
  • Temperature: 3200K tungsten warm, 5600K daylight neutral, 2200K candle warm

Step 2: Pick one time of day, then commit

Don’t write golden hour overcast neon dawn — pick one:

  • golden hour → warm + low + directional
  • overcast → soft + no direction + cool
  • midday sun → hard + top + neutral
  • night urban neon → multiple cool point sources
  • studio → controlled, choose softbox or hard

Step 3: Reduce LoRA / style weight when it conflicts

If a style LoRA bakes in fixed lighting:

# A1111 / Forge syntax
<lora:my_style:0.5>   # was 0.9 — drop to 0.5

# ComfyUI
LoRA loader → strength 0.5

0.4–0.6 is usually enough to keep the style flavor without overriding lighting.

Step 4: Negative prompt the conflict (SD-family)

conflicting lighting, mixed shadows, multiple light sources,
inconsistent shadow direction, multiple sun positions,
contradictory lighting, ambiguous light source

Step 5: Use ControlNet Depth/Normal to enforce shadow direction

For high-control work, generate a depth/normal map of the lighting setup you want and use ControlNet to enforce it:

# ComfyUI
- ControlNet Depth or Normal-from-image
- Provide a 3D render or sample photo with the lighting you want
- Strength: 0.5–0.7

Step 6: Inpaint the conflict away

If 90% of the image is fine but one zone has wrong-direction light:

  • Mask the offending zone (e.g., the wall shadow pointing wrong)
  • Inpaint with prompt that explicitly states the correct direction
  • Denoise: 0.5–0.7 to preserve surrounding context

Prevention

  • Always describe one key light first; use fill / rim words only after
  • Use cinematography vocabulary (rim light from camera left, 5600K) instead of adjectives (dramatic lighting)
  • Keep a saved “lighting preset” snippet you can paste in for common moods (golden hour, overcast, studio softbox, night neon)
  • When using a style LoRA, test the LoRA’s default lighting first and write your prompt to match it instead of fight it

Tags: #Image generation #Debug #Troubleshooting