Quick answer: A PointLight2D needs a texture to have any shape. Lights add to an already fully lit scene, so add a CanvasModulate to darken the world first. Then check that the sprite's light_mask overlaps the light's Item Cull Mask, the sprite does not use an unshaded material, and both are on the same canvas layer.

2D lights in Godot are cheap and easy, but they have a few requirements that the Inspector does not warn about. Go through these in order and the light will show up.

1. PointLight2D has no texture

In Godot 4, a PointLight2D's shape comes entirely from its Texture. With no texture it lights nothing. Use a soft radial gradient: create a GradientTexture2D, set Fill to Radial, centre the fill from (0.5, 0.5) to (1, 0.5), and fade white to transparent. Adjust Texture Scale for size and Energy for brightness.

DirectionalLight2D does not need a texture.

2. The scene is already at full brightness

By default the 2D canvas is drawn fully lit, and lights use the Add blend mode. Adding light to a bright sprite barely changes it. Add a CanvasModulate node to the scene and set a dark colour (for example #303040); now the light visibly brightens what it touches.

3. Masks do not overlap

Each light has Range > Item Cull Mask; each CanvasItem has Visibility > Light Mask. A sprite is lit only if they share at least one bit. Both default to layer 1, so this only bites after someone edits them.

4. The sprite is unshaded

A CanvasItemMaterial with Light Mode set to Unshaded, or a custom shader with render_mode unshaded, ignores all lights. Also, a shader that writes COLOR in a way that discards the normal lighting path can hide lighting; test with no material first.

5. Different canvas layers or z ranges

Lights only affect items within their Range > Layer Min/Max (canvas layers) and Z Min/Max. A light in the world (layer 0) does not affect sprites inside a CanvasLayer with layer 1, and a sprite with a high z_index can fall outside the light's Z range.

6. Shadows do not appear

Shadows need Shadow > Enabled on the light and a LightOccluder2D (or occlusion polygons painted on TileSet tiles) on the objects that should cast them. The occluder's Occluder Light Mask must also match the light's shadow mask.

Quick test scene

Main (Node2D)
├── CanvasModulate (color: #202028)
├── Sprite2D (any texture)
└── PointLight2D (texture: radial GradientTexture2D, energy: 1.5)

If this works and your scene does not, compare masks, materials and layers one at a time.

Related fixes