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

Abierto
#53 1 comentario 0 reacciones 1 asignado Ver en GitHub

@jerbanpls ya está trabajando en esto.

Desde el 8/11/2026.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
15/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
cpp

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
Lenguaje dominante
C++
Estrellas
224
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de featureJosh/Recompia

Todos los issues de featureJosh/Recompia

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.