Quick answer: Godot Camera2D position_smoothing shaking visibly when combined with pixel snapping? The smoothing produces fractional positions that the snap floors — quantization noise.

Pixel-art game with camera follow shows ugly shimmer on tile edges. Smoothing produces 0.3-0.7 fractional values that round to either 0 or 1 each frame.

Two Settings Fight

Camera2D has position_smoothing_enabled (interpolates) and project-wide snap 2D transforms to pixel. Smoothing wants fractional; snap wants integer. Result: visible quantization.

Lerp Manually Then Floor

func _process(d):
    var tgt = player.position
    camera_smooth_pos = camera_smooth_pos.lerp(tgt, 0.1)
    camera.position = camera_smooth_pos.floor()

The smooth value lives in floats; the rendered value snaps. Smooth motion, integer rendering — no jitter.

Application Surface Scale

For multi-resolution support, render to a fixed-size SubViewport and scale the result. The camera lerps in viewport space; the upscale happens once per frame at integer ratios.

Verifying

Slow walks through pixel-art levels: tiles stay rock-solid. Camera tracks smoothly without per-pixel shimmer.

“Smooth motion, integer position. Lerp in code, floor at the camera.”

If you ship for 4K with integer scaling, render at 480p logical and scale. Every pixel-art camera bug disappears at that resolution.