mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Ocarina's frame has neither the per-object motion pass nor the class buffer the characters' mask reads, so DLSS and FSR 3.1 frame generation moved every pixel with the camera: the character the camera follows dragged a faint copy of itself through DLSS's history and doubled in generated frames. The motion pass (dlaa_mv.comp, vk_dlaa.c mv_pass) now keeps each pixel's view distance for the next frame and checks the camera's vector against it. Where last frame's depth at the place the camera's motion points to disagrees, the surface moved on its own; when last frame's depth at the same pixel agrees, it kept its place on screen and its vector is zero. Such pixels also get the characters' bias mask (dlss_char_mask), so DLSS takes this frame's colour where its history holds something else. The check takes the best of 3x3 pixels, so silhouettes reprojected a pixel off are not taken for motion, and leaves the screen border to DLSS. NX2NAVI_DLAA_ZFIT=0 turns it off; NX2NAVI_DLAA_MASKDEBUG=1 shows the mask. Frame dumps list a border sampler's colour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>