Quick answer: 2D and 3D have separate MSAA settings. Set msaa_2d on the Viewport (or Project Settings → Rendering → Anti Aliasing → MSAA 2D).
A vector-art game has jagged polygon and line edges. The MSAA setting was raised — but only the 3D one, which does nothing for 2D content.
Two Separate Settings
- msaa_3d — multisampling for 3D geometry. Default target for the “MSAA” people think of.
- msaa_2d — multisampling for 2D primitives (Polygon2D, Line2D, draw_* calls).
They’re independent. A 2D game needs msaa_2d.
Set It
# per-viewport in code
get_viewport().msaa_2d = Viewport.MSAA_4X
# or Project Settings:
# Rendering → Anti Aliasing → Quality → MSAA 2D = 4x
What MSAA 2D Covers
It anti-aliases the edges of 2D geometry — Polygon2D, Line2D, custom draw_* shapes. It does not smooth sprite-texture edges; for crisp scaled sprites, that’s a texture filter / import setting issue instead.
Performance Note
MSAA 2D has a cost proportional to the sample count and resolution. 2x or 4x is usually plenty for vector art; 8x is rarely worth it.
Verifying
Vector shapes and lines render with smooth edges. The 3D MSAA setting is unchanged (and irrelevant for a pure-2D game).
“2D and 3D MSAA are different knobs. A 2D game wants msaa_2d.”
For pixel-art games, leave MSAA off entirely — you want crisp edges, not smoothed ones. MSAA 2D is for vector/geometry art.