bevy/assets/shaders
JMS55 53667dea56
Temporal Antialiasing (TAA) (#7291)
![image](https://user-images.githubusercontent.com/47158642/214374911-412f0986-3927-4f7a-9a6c-413bdee6b389.png)

# Objective

- Implement an alternative antialias technique
- TAA scales based off of view resolution, not geometry complexity
- TAA filters textures, firefly pixels, and other aliasing not covered
by MSAA
- TAA additionally will reduce noise / increase quality in future
stochastic rendering techniques
- Closes https://github.com/bevyengine/bevy/issues/3663

## Solution

- Add a temporal jitter component
- Add a motion vector prepass
- Add a TemporalAntialias component and plugin
- Combine existing MSAA and FXAA examples and add TAA

## Followup Work
- Prepass motion vector support for skinned meshes
- Move uniforms needed for motion vectors into a separate bind group,
instead of using different bind group layouts
- Reuse previous frame's GPU view buffer for motion vectors, instead of
recomputing
- Mip biasing for sharper textures, and or unjitter texture UVs
https://github.com/bevyengine/bevy/issues/7323
- Compute shader for better performance
- Investigate FSR techniques
  - Historical depth based disocclusion tests, for geometry disocclusion
  - Historical luminance/hue based tests, for shading disocclusion
- Pixel "locks" to reduce blending rate / revamp history confidence
mechanism
- Orthographic camera support for TemporalJitter
- Figure out COD's 1-tap bicubic filter

---

## Changelog

- Added MotionVectorPrepass and TemporalJitter
- Added TemporalAntialiasPlugin, TemporalAntialiasBundle, and
TemporalAntialiasSettings

---------

Co-authored-by: IceSentry <c.giguere42@gmail.com>
Co-authored-by: IceSentry <IceSentry@users.noreply.github.com>
Co-authored-by: Robert Swain <robert.swain@gmail.com>
Co-authored-by: Daniel Chia <danstryder@gmail.com>
Co-authored-by: robtfm <50659922+robtfm@users.noreply.github.com>
Co-authored-by: Brandon Dyer <brandondyer64@gmail.com>
Co-authored-by: Edgar Geier <geieredgar@gmail.com>
2023-03-27 22:22:40 +00:00
..
animate_shader.wgsl add globals to mesh view bind group (#5409) 2022-09-28 04:20:27 +00:00
array_texture.wgsl Fix array_texture example (#7543) 2023-02-07 09:14:15 +00:00
cubemap_unlit.wgsl Support array / cubemap / cubemap array textures in KTX2 (#5325) 2022-07-30 07:02:58 +00:00
custom_material.frag Update shader_material_glsl example to include texture sampling (#5215) 2022-07-08 01:14:22 +00:00
custom_material.vert Update shader_material_glsl example to include texture sampling (#5215) 2022-07-08 01:14:22 +00:00
custom_material.wgsl update wgpu to 0.13 (#5168) 2022-07-14 21:17:16 +00:00
custom_material_chromatic_aberration.wgsl Fix post_processing and shader_prepass examples (#7419) 2023-01-30 22:53:08 +00:00
custom_material_screenspace_texture.wgsl adjust cluster index for viewport origin (#5947) 2022-09-15 21:58:14 +00:00
custom_vertex_attribute.wgsl update wgpu to 0.13 (#5168) 2022-07-14 21:17:16 +00:00
game_of_life.wgsl Remove unused code in game of life shader (#5349) 2022-07-17 15:24:24 +00:00
instancing.wgsl update wgpu to 0.13 (#5168) 2022-07-14 21:17:16 +00:00
line_material.wgsl Fix line material shader (#5348) 2022-07-17 15:02:57 +00:00
post_process_pass.wgsl Add low level post process example using a custom render pass (#6909) 2023-03-16 03:22:17 +00:00
shader_defs.wgsl update wgpu to 0.13 (#5168) 2022-07-14 21:17:16 +00:00
show_prepass.wgsl Temporal Antialiasing (TAA) (#7291) 2023-03-27 22:22:40 +00:00
texture_binding_array.wgsl Use only one sampler in the array texture example. (#7405) 2023-01-29 15:08:21 +00:00
tonemapping_test_patterns.wgsl Initial tonemapping options (#7594) 2023-02-19 20:38:13 +00:00