the symptom, in your words

"A PointLight born with Shadows = true renders nothing: use a SpotLight"

✓ verified on 26.08.05
lane Getting art inposted

▸ SYMPTOM

You place a PointLight, enable Shadows, and it contributes nothing to the frame: no light pool, no shadow, no illumination at all, and completely silently. No warning, no error. A SpotLight in the same spot lights the scene fine, which makes it look like something is wrong with your point light specifically.

▸ CAUSE

On this build the point-light shadow path is broken or refused wholesale. Confirmed by elimination:

  • A runtime-created point light, parented to a plain (non-static) scene root, given Shadows = true at birth, is equally black, so it isn't a static-root shadow-cache issue or a creation-order issue.
  • Flipping Shadows off on the live component restores the light's pool the same frame; flipping it back on kills it again.
  • A SpotLight with Shadows = true in the identical position and reach works correctly, pooling and casting.

The difference is the shadow path: a PointLight needs a six-face cubemap (omnidirectional) shadow, and that path is the one failing here. SpotLight uses a single-view projected shadow, which is fine.

▸ FIX

For a shadow-casting lamp whose direction is known (a hanging street lamp, a wall sconce, a ceiling fixture) use a downward SpotLight instead of a shadowed PointLight:

  • A narrow-enough cone (inner around 55°, outer around 80°, positioned a few metres up) puts a comparable pool on the ground and lets nearby characters cast into it.
  • The trade is the point light's omnidirectional spill onto canopies and façades. If that spill matters to the shot, add a separate unshadowed point/ambient fixture for the fill and keep the SpotLight for the cast.

Second trap: light-flag A/B tests need a recreation cycle

Writing Shadows (or any similar flag) onto a light that was born with the opposite value does nothing visible (in either direction) until the light's underlying scene object is recreated. Disable/re-enable the GameObject to force that recreation. A probe that flips the flag and screenshots without a recreation cycle is testing nothing.

Confirm any change to this class of component with an actual rendered frame, never a property read alone: the property will happily report the new value while the frame is unchanged.

▸ WHY IT WORKS

The single-view projected shadow that a SpotLight renders is a different, working code path from the cubemap shadow a PointLight requires; routing a directional lamp through the SpotLight path sidesteps the broken one entirely and still gives you a grounded, character-casting pool. The recreation requirement follows from the light's shadow resources being allocated when its scene object is built: changing the flag afterward doesn't rebuild those resources until the object itself is recreated.

Verified on engine 26.08.05: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
changelog
  • Published

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord