feat: add Temporal Anti-Aliasing (TAA) support for OpenGL and Vulkan

- Add TAA option to AntiAliasing enum in settings
- Implement TAA shaders for both OpenGL (GLSL) and Vulkan (SPIR-V)
- Add OpenGL TAA class with framebuffer management and temporal blending
- Add Vulkan TAA class following existing AntiAliasPass architecture
- Integrate TAA into OpenGL and Vulkan rendering pipelines
- Add UI translations and Android string resources for TAA option
- Implement Halton sequence jittering for temporal sampling
- Add motion vector validation and neighborhood clamping to reduce ghosting
- Configure aggressive temporal blending to minimize visual artifacts
- Add proper descriptor set management for Vulkan TAA implementation

The TAA implementation provides high-quality anti-aliasing by combining
information from multiple frames with per-pixel jittering, resulting
in smoother edges and reduced aliasing artifacts while maintaining
good performance and temporal stability.

Fixes: Black screen issues with proper descriptor set bindings
Fixes: Ghosting artifacts with improved temporal blending parameters
Fixes: Jitter visibility with reduced jitter intensity (50% scaling)
Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-09-21 10:34:19 +10:00
parent 42bc6b7b6c
commit 19cf31b215
17 changed files with 1130 additions and 2 deletions

View File

@@ -215,12 +215,14 @@
<item>@string/anti_aliasing_none</item>
<item>@string/anti_aliasing_fxaa</item>
<item>@string/anti_aliasing_smaa</item>
<item>@string/anti_aliasing_taa</item>
</string-array>
<integer-array name="rendererAntiAliasingValues">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</integer-array>
<string-array name="cpuBackendArm64Names">

View File

@@ -641,6 +641,7 @@
<string name="anti_aliasing_none">None</string>
<string name="anti_aliasing_fxaa">FXAA</string>
<string name="anti_aliasing_smaa">SMAA</string>
<string name="anti_aliasing_taa">TAA</string>
<!-- Screen Layouts -->
<string name="screen_layout_auto">Auto</string>