You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/Atom/Feature/Common/Code/Source/PostProcessing
Ken Pruiksma 9df995dd26
Temporal anti-aliasing and constrast adaptive sharpening (#1161)
First version of temporal antialiasing and contrast adaptive sharpening for GA. Works well in most cases but still has a few issues that will need additional time. This is only the passes and shaders with no exposure to the editor. TAA and CAS can be turned on by enabling their respective passes in the pipeline.

All of the code has been previously reviewed in smaller PRs into the taa_staging branch:
aws-lumberyard-dev#29
aws-lumberyard-dev#53
aws-lumberyard-dev#73
aws-lumberyard-dev#79
aws-lumberyard-dev#84

Main issues:

- Bloom doesn't play nice with TAA and seems to greatly amplify any flickering
- AuxGeom jitters with the camera, so TAA doesn't currently work well in editor
- Transparencies don't have correct motion vectors. History rectification keeps this from looking too bad, but could still be improved
- There is still more that could be done to inhibit flickering, usually from specular aliasing
- Motion vectors aren't correct on POM unless PDO is turned on, which can result in some blurring during motion.
- SSAO can contribute to flickering in its default half res configuration. Changing this to full res mitigates the problem.

Squashed merge of the following:

* [ATOM-13987] Initial checkin of Taa pass.

* TAA pass setup WIP. (does not work yet due to pass configuration issues).

* Taa WIP - Camera motion vectors fixed and hooked up. TAA does simple reprojection and rejection based on depth.

* Small update to use lerp and add some comments.

* Fix issue with attachments not being set up on bindings at initialization. Fixing issue with half-pixel offsets in TAA shader

* - Motion vector passes now use the same output with mesh motion vectors overwriting camera motion vectors.
- Taa pass now works with multiple pipelines.
- Cleaned up TAA shader a bit.

* Fixes from PR review.

* Adding check for multiple attachments of the same name with different resources in Pass::ImportAttachments().

* Adding camera jitter with configurable position count. Updated TAA to blend in tonemapped space.

* Fixes from PR review. Fixing camera motion vectors for background (infinite distance)

* Updates to taa shader from PR review

* Adding a rcp input color size.

* Fix comment on PassAttachment::Update()

* Updates for PR review.

* Fixing missing const on the FrameAttachment* in Pass's call to FindAttachment()

* Taa WIP - Adding filtering to both the current pixel and history. Adding rectification based on variance clipping. Adding some basic anti-flickering. Removing rejection based on depth.

* Updates from PR code review. Mostly better commenting and naming.

* Adding contrast adaptive sharpening based on AMD FidelityFX CAS to help with the softness added by TAA.

* Changing to using luminance for sharpening instead of just green. Added some comments.

* Moving Taa's NaN check to a better location. Disabling TAA and sharpening in prep for check in.

* Updates from PR feedback.
5 years ago
..
BlendColorGradingLutsPass.cpp ATOM-15252 [Atom 0.8.5] Track View capture crashes when scene contains certain postfx 5 years ago
BlendColorGradingLutsPass.h Integrating up through commit 90f050496 5 years ago
BloomBlurPass.cpp Integrating github/staging through commit ab87ed9 5 years ago
BloomBlurPass.h Integrating up through commit 90f050496 5 years ago
BloomCompositePass.cpp Integrating up through commit 90f050496 5 years ago
BloomCompositePass.h Integrating up through commit 90f050496 5 years ago
BloomDownsamplePass.cpp Integrating github/staging through commit ab87ed9 5 years ago
BloomDownsamplePass.h Integrating up through commit 90f050496 5 years ago
BloomParentPass.cpp Initial commit 5 years ago
BloomParentPass.h Initial commit 5 years ago
DepthOfFieldBokehBlurPass.cpp Removed unneeded comments (#673) 5 years ago
DepthOfFieldBokehBlurPass.h Integrating up through commit 90f050496 5 years ago
DepthOfFieldCompositePass.cpp Integrating up through commit 90f050496 5 years ago
DepthOfFieldCompositePass.h Integrating up through commit 90f050496 5 years ago
DepthOfFieldCopyFocusDepthToCpuPass.cpp Initial commit 5 years ago
DepthOfFieldCopyFocusDepthToCpuPass.h Initial commit 5 years ago
DepthOfFieldMaskPass.cpp Integrating up through commit 90f050496 5 years ago
DepthOfFieldMaskPass.h Integrating up through commit 90f050496 5 years ago
DepthOfFieldParentPass.cpp Initial commit 5 years ago
DepthOfFieldParentPass.h Initial commit 5 years ago
DepthOfFieldPencilMap.h Removed unneeded comments (#673) 5 years ago
DepthOfFieldReadBackFocusDepthPass.cpp ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name (#1133) 5 years ago
DepthOfFieldReadBackFocusDepthPass.h Initial commit 5 years ago
DepthOfFieldWriteFocusDepthFromGpuPass.cpp Integrating up through commit 90f050496 5 years ago
DepthOfFieldWriteFocusDepthFromGpuPass.h Integrating up through commit 90f050496 5 years ago
DepthUpsamplePass.cpp Integrating up through commit 90f050496 5 years ago
DepthUpsamplePass.h Integrating up through commit 90f050496 5 years ago
ExposureControlRenderProxy.cpp ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name (#1133) 5 years ago
EyeAdaptationPass.cpp ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name (#1133) 5 years ago
EyeAdaptationPass.h Fixed ImGui Pass as well as how exposure pass enables itself 5 years ago
FastDepthAwareBlurPasses.cpp Integrating up through commit 90f050496 5 years ago
FastDepthAwareBlurPasses.h Integrating up through commit 90f050496 5 years ago
LookModificationCompositePass.cpp Integrating up through commit 90f050496 5 years ago
LookModificationCompositePass.h Integrating up through commit 90f050496 5 years ago
LookModificationTransformPass.cpp Integrating latest 47acbe8 5 years ago
LookModificationTransformPass.h Integrating up through commit 90f050496 5 years ago
LuminanceHistogramGeneratorPass.cpp ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name (#1133) 5 years ago
LuminanceHistogramGeneratorPass.h Integrating latest 47acbe8 5 years ago
PostProcessingShaderOptionBase.cpp Integrating latest 47acbe8 5 years ago
PostProcessingShaderOptionBase.h Initial commit 5 years ago
SMAABasePass.cpp Integrating latest 47acbe8 5 years ago
SMAABasePass.h Integrating latest 47acbe8 5 years ago
SMAABlendingWeightCalculationPass.cpp Integrating up through commit 90f050496 5 years ago
SMAABlendingWeightCalculationPass.h Integrating up through commit 90f050496 5 years ago
SMAACommon.h Initial commit 5 years ago
SMAAConfigurationDescriptor.cpp Initial commit 5 years ago
SMAAConfigurationDescriptor.h Initial commit 5 years ago
SMAAEdgeDetectionPass.cpp Integrating up through commit 90f050496 5 years ago
SMAAEdgeDetectionPass.h Integrating up through commit 90f050496 5 years ago
SMAAFeatureProcessor.cpp Initial commit 5 years ago
SMAAFeatureProcessor.h Initial commit 5 years ago
SMAANeighborhoodBlendingPass.cpp Integrating up through commit 90f050496 5 years ago
SMAANeighborhoodBlendingPass.h Integrating up through commit 90f050496 5 years ago
SsaoPasses.cpp Integrating up through commit 90f050496 5 years ago
SsaoPasses.h Integrating up through commit 90f050496 5 years ago
SubsurfaceScatteringPass.cpp Integrating up through commit 90f050496 5 years ago
SubsurfaceScatteringPass.h Integrating up through commit 90f050496 5 years ago
TaaPass.cpp Temporal anti-aliasing and constrast adaptive sharpening (#1161) 5 years ago
TaaPass.h Temporal anti-aliasing and constrast adaptive sharpening (#1161) 5 years ago