Quick answer: Godot 4 canvas item shader in light_mode = light only running for the first light? Canvas shaders iterate lights once per shader pass - explicitly handle multiple lights in the LIGHT function.

Two lights on a sprite. Only one contributes; the second is ignored.

Use LIGHT_ENERGY accumulation

The LIGHT function is called per-light; accumulate into LIGHT_OUTPUT. The shader runs once per light automatically; your accumulator runs N times.

Verify with light_mode unshaded

Switch to unshaded; confirm sprite renders. If unshaded works and shaded doesn't, the LIGHT function is the issue.

Check light enabled flags

Each Light2D has an Enabled flag. Disabled lights are skipped entirely.

“Canvas lights are multi-pass. The shader has to know.”

Test multi-light scenes early. Single-light authoring hides the bug; players will encounter multi-light situations.

Related reading