bevy
bevy copied to clipboard
TAA followup tracking issue
TAA got merged in https://github.com/bevyengine/bevy/pull/7291, but there's a couple of things we could do better.
Compatibility
- [x] Write motion vectors for skinned meshes correctly
- [x] Write motion vectors for morph targets correctly
- [ ] Write motion vectors for materials with parallax mapping correctly
- [ ] Support jittering orthographic cameras
Quality
- [x] Mip biasing for sharper textures https://github.com/bevyengine/bevy/pull/7614 https://github.com/bevyengine/bevy/issues/7323
- [ ] Investigate FSR techniques and more advanced TAA disocclusion heuristics to replace the rather naive history confidence mechanism we currently have (https://github.com/GPUOpen-Effects/FidelityFX-FSR2#the-technique, plane validation https://diharaw.github.io/post/adventures_in_hybrid_rendering)
- [ ] Extra input filter to improve sharpness (Blackman-Harris or Mitchell-Netravali)
- [ ] Flicker reduction
- [ ] Investigate YCbCr vs YCoCg
- [ ] Investigate whether variance(clipping) is necessary in YCoCg, vs just min/max clamp or clip
- [ ] Consider moving TAA to be after the opaque pass, but before the transparent pass.
Performance
- [ ] Use a uniform buffer for reset instead of shader defs
- [ ] Move TAA to a compute shader instead of a fragment shader (threads can collaborate to load history and other textures into workgroup shared memory)
- [ ] Double buffer mesh/view transform uniforms, rather than writing new buffers for the past-frame's values each frame
- [ ] Figure out COD's 1-tap bicubic filter https://www.activision.com/cdn/research/Dynamic_Temporal_Antialiasing_and_Upsampling_in_Call_of_Duty_v4.pdf#page=64
Relevant:
- https://github.com/bevyengine/bevy/pull/8974
Also worth noting:
- https://github.com/bevyengine/bevy/issues/18903