Skip to content

taa: a fast tier, the default on Android - #191

Merged
proggeramlug merged 1 commit into
mainfrom
perf/taa-fast
Nov 9, 2026
Merged

proggeramlug merged 1 commit into
mainfrom
perf/taa-fast

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Stacked on #188 (TAA at the render resolution); retarget to main once that lands.

set_taa_fast selects a new entry point in the TAA shader, fs_main_fast. It is the low tier of temporal AA, like Unreal's lowest r.TemporalAA.Quality:

  • the current pixel as rendered;
  • history clamped to the YCoCg variance of the pixel and its 4-neighbour cross (the same clamp form and gamma as the full shader);
  • one bilinear history fetch, reprojected by the closest-depth velocity (the sky by its direction);
  • the same blend weight.

It doesn't run the full shader's Catmull-Rom/Lanczos reconstruction, sharpened history, depth-provenance rejection or detail-lock heuristics. It is meant for TAA resolving at the render resolution (set_temporal_upscale(false)). It writes the same two targets: the provenance keeps the depth key and reports no confidence.

Default on Android, off elsewhere. Desktop is unchanged.

Pixel 4a (Adreno 618), tuichess at 0.5 render scale: TAA 16 → 4 ms. The static image matches the full TAA, and there's no visible ghosting while the camera turns (captured mid-drag). The TAA pipeline descriptor is now one closure shared by both entry points, so mod.rs stays at its line baseline. cargo test --lib passes.

set_taa_fast selects fs_main_fast: the current pixel as rendered, history
clamped to the YCoCg variance of the pixel and its 4-neighbour cross, one
bilinear history fetch reprojected by the closest-depth velocity (the sky by
its direction), the same blend weight. The low tier of temporal AA (Unreal's
lowest r.TemporalAA.Quality), for TAA resolving at the render resolution:
none of the full shader's reconstruction filters or provenance and lock
heuristics. Pixel 4a, 0.5 render scale: TAA 16 -> 4 ms, no visible ghosting
while the camera turns. The TAA pipeline descriptor is shared by both entry
points.
@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 10 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cae00cd2-df69-4b60-925f-8f6a6336a748
Commits

Reviewing files that changed from the base of the PR and between aca019a and 55077ae.

Files selected for processing: 4

  • native/shared/src/renderer/mod.rs
  • native/shared/src/renderer/postfx_chain.rs
  • native/shared/src/renderer/quality_preset.rs
  • native/shared/src/renderer/shaders/post.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@proggeramlug
proggeramlug changed the base branch from perf/mobile-renderer to main November 9, 2026 13:08
@proggeramlug
proggeramlug merged commit 7b0ff09 into main Nov 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant