You prompt sunlight from the left, long shadow falling right and the model gives you sunlight from the left but the shadow also runs to the left. Or you ask for one strong key light and get two equally strong rim lights from opposite sides. The eye notices this instantly: the scene feels wrong even if you can’t name why. This happens because the model averages lighting cues across its training data. Many photos use soft, multi-directional studio lighting, so committed single-direction lighting is statistically rare and the model defaults away from it.
Fastest fix: add single light source plus an explicit direction (hard key light from upper-left at 45 degrees) and an explicit shadow direction (shadows fall down and to the right) to your prompt. If the prompt still won’t lock it, anchor with a reference image (Midjourney --sref, or IP-Adapter in SDXL/Flux). If you already have a finished image with the wrong shadows, don’t re-roll the whole prompt: relight it with IC-Light V2, which lets you set the light direction directly (Left / Right / Top / Bottom). The five steps below go from the cheapest fix (prompt edit) to the most controllable (relight pass).
Which bucket are you in
Pick the row that matches what you see, then jump to the fix.
| Symptom | Most likely cause | Go to |
|---|---|---|
| Light is correct, shadow points the wrong way | No explicit shadow direction stated | Step 1 |
| Two equally strong lights from opposite sides | Multiple sources with no hierarchy | Step 1, Step 4 |
| Lighting is flat/frontal no matter what you ask | Vague terms or model default bias | Step 1, Step 2 |
| Prompt is detailed but model ignores it | Conflicting cues fighting each other | Step 4 |
| You already have a finished image you like | Wrong shadows baked in | Step 5 (relight) |
Common causes
Ordered by hit rate, highest first.
1. Light direction described in vague terms
bright lighting, dramatic lighting, cinematic lighting are all directionless. The model has nothing to anchor on, so it averages — and the average is “softbox from the front” or “ambient daylight.”
How to spot it: scan your prompt for direction words. If you don’t see from the left, key light upper right, backlit, etc., the prompt is directionless.
2. Conflicting cues in the prompt
You say sunset lighting from behind, golden hour glow and then add studio lighting, soft fill. These fight. The model resolves the fight by picking the more common one in its training data (usually studio).
How to spot it: search the prompt for two different lighting descriptors. If both sunset and studio appear, you have a conflict.
3. No physical-direction vocabulary
The model responds well to photography vocabulary: Rembrandt lighting, loop lighting, split lighting, rim light from camera left, 45-degree backlight. If you only use everyday English, it cannot place the light source.
How to spot it: prompt lacks any photography-school lighting term.
4. Multiple light sources mentioned without hierarchy
key light, fill light, rim light all listed at equal weight produces three equal lights, which looks unnatural. Real photography has one dominant key and weaker fills.
How to spot it: 2+ light sources in the prompt with no relative intensity stated.
5. The model has a strong default lighting bias
As of June 2026: Flux dev (and FLUX.2) lean toward soft, even front-lighting. SDXL defaults to flat, overcast-style light. Midjourney V7 defaults to a cinematic look that often reads as soft-key plus rim, and shadow geometry frequently warps. None of them commit to a single hard light without explicit pushing.
How to spot it: run the same prompt across two different models. If both produce the same kind of lighting failure, the model defaults are dominating, not your prompt.
Shortest path to fix
Step 1: State direction explicitly with one dominant key
Replace vague lighting language with concrete direction + intensity:
hard key light from upper-left at 45 degrees, single light source,
soft ambient fill 1/4 strength, shadows fall down and to the right,
long cast shadow, dramatic contrast, no rim light
The key phrase is single light source — it tells the model to commit to one dominant direction.
Step 2: Use photography-school lighting names
These are highly trained in the data:
# Specific named patterns
Rembrandt lighting (triangle of light on shadow-side cheek)
loop lighting (small nose shadow, looped toward mouth corner)
split lighting (half face lit, half in shadow)
butterfly lighting (key light directly above camera)
rim lighting from behind, separating subject from background
Drop one of these in instead of trying to describe geometry yourself.
Step 3: Anchor with a reference photo
When text alone leaves doubt, attach a reference:
- Midjourney (V7):
--sref [URL of a photo with the exact lighting you want] --sw 100. The--sw(style weight) value ranges0to1000, default100; raise it toward300-500if the lighting still isn’t carrying over, and--sw 0cancels the reference entirely. You can also use a numeric style code instead of a URL. - SDXL / Flux (ComfyUI): IP-Adapter Plus with the
IPAdapter Advancednode, weight around0.65, andweight_typeset tostyle transfer. - For maximum lighting transfer with minimal subject bleed: use the
IPAdapter Precise Style Transfernode instead. On SDXL, start withstyle_boost: 2and weight~0.7. This keeps the reference’s lighting while letting your prompt own the subject and composition.
Pick a reference where the lighting is obviously single-source, not multi-source. Black-and-white classical portraits are often the cleanest references because the lighting reads cleanly without color noise pulling the adapter off-target.
Step 4: Negative-prompt the fights (SD-family)
If you keep getting double lighting, add to negative:
multiple light sources, two key lights, ring light, softbox lighting,
flat lighting, ambient overhead light, conflicting shadows,
shadows going in different directions
Keep weights normal. Going above 1.3 tends to distort the image rather than fix the lighting.
Step 5: Relight an existing image with IC-Light
If you already have an image you like and only the shadows are wrong, you don’t need to re-roll. IC-Light V2 (by lllyasviel) is a relighting model that takes your finished image and re-lights it with an explicit direction, which is exactly the control the base model wouldn’t give you.
- Load your image into the IC-Light V2 workflow in ComfyUI (or a hosted IC-Light front-end)
- Set the initial light direction preset:
Left,Right,Top, orBottom - Add a text condition describing the source, e.g.
sunshine from window, left sideorwarm key light from upper right - Tune
denoiselow (around0.4-0.5) to relight without redrawing the subject; raise it if you also want the geometry to follow
Because IC-Light decides the lighting separately from the content, the cast shadows line up with the direction you set instead of with the model’s averaged default. This is the most reliable fix when shadow direction has to be exact.
Step 6: Render lighting first, subject second
For commercial work generated from scratch where shadow direction must be exact:
- Generate a simple gray-tone “lighting study” of just the geometry with one hard directional light
- Use that as a ControlNet
depthornormalreference - Regenerate with the actual subject prompt and ControlNet at weight
0.8
This isolates the lighting decision from the subject decision so the model can’t average them together.
Prevention
- Maintain a short list of 5-10 lighting-direction phrases (
Rembrandt,45 degree key, etc.) you know work reliably - Always include
single light sourceordominant key lightwhen you want one direction - Save 2-3 reference photos with clean directional lighting in your IP-Adapter /
--sreflibrary - Render small test thumbnails to check lighting before generating final high-res
- Cross-check shadow direction by squinting at the thumbnail; if shadows visibly disagree with the stated source, fix at prompt level, not in post
How to confirm it’s fixed
Run this 30-second check before you commit to a high-res render:
- Trace one shadow. Pick the most prominent cast shadow and follow it back. It should point directly away from your stated key light. If you said “key from upper-left,” the shadow must fall down-and-right.
- Count the directions. All cast shadows in the scene should run roughly parallel. Shadows pointing two different ways means two competing lights survived your prompt.
- Check the terminator. On a face or sphere, the bright-to-dark transition (the terminator line) should sit on the side opposite the light. A frontal terminator means the model still went flat/front-lit.
- Squint test. At thumbnail size, the lighting should read as obviously coming from one side. If it reads as “evenly lit,” the direction didn’t take and you should escalate to Step 3 (reference) or Step 5 (IC-Light).
FAQ
Why does the light look right but the shadow still goes the wrong way?
The model rendered the highlight direction from your prompt but invented the shadow independently, because you never stated where the shadow should fall. Add an explicit shadow clause: shadows fall down and to the right. That single line fixes most cases.
My prompt is very detailed and the model still ignores it. Why?
You almost certainly have conflicting cues (cause 2). A model can’t satisfy golden hour from behind and studio softbox at once, so it picks the statistically more common one and drops the other. Remove the loser, or negative-prompt it (Step 4).
Can I fix shadow direction after the image is done, without regenerating?
Yes. Use IC-Light V2 (Step 5). It relights an existing image with an explicit Left/Right/Top/Bottom direction and re-derives the cast shadows, so you keep the subject you already like.
What is the single most useful phrase to add?
single light source. It forces the model to commit to one dominant direction instead of averaging several, which is the root cause of opposing shadows and double rim lights.
Does this differ between Midjourney, SDXL, and Flux?
The cause is the same (averaged lighting), but the tooling differs. Midjourney V7 relies on prompt wording plus --sref. SDXL and Flux add IP-Adapter and ControlNet for harder control, and only the SD/Flux side can run IC-Light for a true relight pass.
Related
- AI Image Conflicting Lighting
- AI Image Poor Lighting
- AI Image Photo Grain Missing
- AI Image Skin Tone Unnatural
- AI Image Wrong Perspective
- AI Image Overprocessed CG Look
- AI Image Prompt Bleeding Attributes
External references