Quick answer: Configure occluder polygons exactly along tile edges. Set PointLight2D shadow_filter to PCF5, raise filter smoothness to 1.5, and verify occluders aren’t overlapping.
A top-down 2D RPG with PointLight2D casts shadows from wall tiles. Speckled artifacts (acne) appear along wall edges where light should be cleanly blocked.
Occluder Polygons
Each tile’s LightOccluder2D polygon should run exactly along the tile’s outline. Polygons drifting outside the tile create gaps; overlapping polygons cause double-shadowing.
Use the tileset editor’s occlusion mode to draw polygons aligned to cell pixels.
Shadow Filter
PointLight2D.shadow_filter = Light2D.SHADOW_FILTER_PCF5
PointLight2D.shadow_filter_smooth = 1.5
PCF (percentage-closer filter) softens the edge. Smoothness controls penumbra width — hides acne in soft-shadow areas.
Shadow Bias
PointLight2D has no explicit bias, but you can shrink occluder polygons by 1 px inward. The shadow now starts slightly inside the wall — eliminates self-shadow acne on the lit face.
Renderer Mode
Forward Plus renderer handles 2D lights cleanly. Compatibility renderer is faster but has more artifacts. For shadow-heavy 2D, prefer Forward Plus or Mobile.
Verifying
Light an interior scene. Walls cast clean shadows. No speckling on lit faces. Soft edges feel natural at the chosen filter setting.
“Occluder alignment + PCF filtering eliminate the bulk of 2D shadow acne.”
For pixel art games, use nearest neighbor scaling and align lights to whole pixels — subpixel light positions cause shimmer.