DLSS / FSR 4 rework: per-object motion vectors from the game

Aperta
#53 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

@jerbanpls ci sta già lavorando.

Dal 8/11/2026.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
15/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
cpp

Direzione di ricerca

Start with runtime/src/gfx/extras/temporal.cpp, which currently builds camera-only motion vectors, then trace the G-buffer vertex uniforms to find where per-object transforms are stored. Check whether the game already exposes a velocity buffer and how the Streamline and FidelityFX integrations consume motion vectors, jitter, and masks. Done means moving objects no longer ghost under DLSS or FSR, related issues #44 and #45 are resolved or explained, and FSR 4 is selectable on supported hardware.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement graphics help wanted planned

Summary

Rework the temporal upscaling path (DLSS / DLAA through Streamline, AMD FidelityFX) and add FSR 4 support. The biggest change is feeding the upscalers real per-object motion vectors pulled from the game, not ones rebuilt from the camera alone.

Current state

runtime/src/gfx/extras/temporal.cpp makes motion vectors in a compute pass using only the depth buffer and the current and previous view-projection. That covers camera motion only. Anything that moves on its own (Pokémon, the player, NPCs, animated or skinned meshes, particles) gets vectors that are wrong. That causes ghosting and smearing behind moving objects, and instability on some surfaces.

Related: #44 (ghosting), #45 (upscaler flicker / odd textures where tiles join).

Goals

  • Per-object motion vectors. Find a way to expose object motion from the game:
    • Find where the game keeps per-draw / per-object transforms (world matrices, skinning palettes) in the G-buffer vertex uniforms
    • Keep the previous frame's transforms per object and match them across frames (stable object identity)
    • Build a velocity pass that renders object motion on top of the camera-only vectors, or check whether the game has a velocity buffer of its own (e.g. for its TAA / motion blur) that we can use instead
    • Handle skinned / animated meshes, or at least mask them reliably
  • FSR 4 backend. Add FSR 4 next to the current FidelityFX path, with a fallback on GPUs that don't support it
  • DLSS rework. Review the Streamline integration with the new inputs (motion vectors, reactive / transparency masks, jitter, reset on camera cuts)
  • Reactive / transparency masks for UI, particles, water and other alpha-blended surfaces so they don't ghost
  • Recheck the jitter setup (temporal_jitter_block, sign conventions) against both SDKs

Done when

  • Moving characters and objects no longer ghost or smear under DLSS / FSR
  • #44 and #45 are fixed or confirmed to have another cause
  • FSR 4 can be picked in the settings on supported hardware
Lingua principale
C++
Stelle
224
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di featureJosh/Recompia

Tutte le issue di featureJosh/Recompia

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.