Rendering: no TAA / FSR temporal accumulation on media textures (MOAP video ghosting) #605

Closed
opened 2026-10-09 22:22:59 +00:00 by sky_line · 1 comment
Owner

Media textures (shared media / MOAP: web pages, video players on prims) go through the temporal resolve like any other surface. Their content changes every frame without any geometric motion, so the motion vectors are zero and TAA / FSR blend the new frame with the history: video ghosts and smears, and scrolling text or fast cuts on a web page leave trails or soften.

Wanted

Media surfaces get no temporal accumulation: they show the current frame, sharp, while the rest of the scene keeps TAA / FSR.

Proposed approach

  • Flag media faces at ingest (the face's texture is a media texture) and carry the flag per pixel (a material / G-buffer flag bit, like the existing avatar mask).
  • TAA: for flagged pixels, reject the history (weight 0 on history, current frame only).
  • FSR (temporal upscaler): write 1.0 into the reactive mask (and/or the transparency-and-composition mask) for flagged pixels, so FSR uses the current frame there.
  • Consider the same treatment for animated textures (llSetTextureAnim, UV scrolling), which have the same zero-motion problem. Could be an option, or a follow-up ticket.
  • Cost: one flag bit plus a mask write; no extra pass.

Test

A YouTube / video MOAP screen and a scrolling web page, with TAA on, FSR on, and both off (unchanged). Check the screen edge stays anti-aliased against the scene, and alpha-blended media.

Media textures (shared media / MOAP: web pages, video players on prims) go through the temporal resolve like any other surface. Their content changes every frame without any geometric motion, so the motion vectors are zero and TAA / FSR blend the new frame with the history: video ghosts and smears, and scrolling text or fast cuts on a web page leave trails or soften. ## Wanted Media surfaces get no temporal accumulation: they show the current frame, sharp, while the rest of the scene keeps TAA / FSR. ## Proposed approach - Flag media faces at ingest (the face's texture is a media texture) and carry the flag per pixel (a material / G-buffer flag bit, like the existing avatar mask). - **TAA:** for flagged pixels, reject the history (weight 0 on history, current frame only). - **FSR (temporal upscaler):** write 1.0 into the reactive mask (and/or the transparency-and-composition mask) for flagged pixels, so FSR uses the current frame there. - Consider the same treatment for animated textures (llSetTextureAnim, UV scrolling), which have the same zero-motion problem. Could be an option, or a follow-up ticket. - Cost: one flag bit plus a mask write; no extra pass. ## Test A YouTube / video MOAP screen and a scrolling web page, with TAA on, FSR on, and both off (unchanged). Check the screen edge stays anti-aliased against the scene, and alpha-blended media.
sky_line added this to the Slipstream project 2026-10-09 22:22:59 +00:00
Author
Owner

Shipped in 1.2.0 Beta 8: TAA and FSR no longer keep history on media (and optionally animated) textures.

Shipped in 1.2.0 Beta 8: TAA and FSR no longer keep history on media (and optionally animated) textures.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#605
No description provided.