Add an optional CPU preview path that deposits each point-source image as a
supersampled delta and resolves the whole frame with one global Moffat
convolution plus an N x N box average, instead of splatting a per-event PSF.
- optics: FastPsfAccumulator builds the pixel-area-integral kernel of the
target Moffat at the supersampled scale (width N*alpha, same beta). The
1/N^2 box average then reproduces the final pixel-area integral, so the
requested FWHM and beta are preserved without renormalisation. Deposits are
per-cell atomic adds; resolve accumulates into the caller's HDR buffer.
- frame: fast branch in frame_splat_catalog with one shared supersampled
buffer and a single resolve per frame; the accumulator is reused across
movie frames and built from the map dimensions on lens-map import.
- main: --fast-mode, --fast-supersample N (1..8, default 2) and
--fast-deposit nearest|bilinear (default nearest). CPU-only and rejected in
the HIP/dummy backends; --psf-min-y still applies per event while
--max-cache-psf-flux does not.
- The deposition scheme was chosen by scripts/fast_mode_deposit_error.py:
nearest keeps the PSF shape exactly with <= 0.5/N px position quantization;
bilinear keeps the exact centroid but broadens FWHM and beta. Recorded in
benchmarks/fast_mode_deposit_2026-09-18.md.
- tests/test_frame.c covers fast nearest vs the direct evaluator at the snapped
centre, flux conservation, bilinear centroid, min-Y discard, frame plumbing,
and HDR accumulation onto a non-zero background.
- benchmarks/fast_mode_cpu_2026-09-18.md records a ~10x speedup on the 2MASS
galactic-centre field with small tone-mapped differences.