Skip to content

Reduction of TAA jitter positions for better motion clarity and reduced ghosting.#114644

Draft
blendegames wants to merge 1 commit intogodotengine:masterfrom
blendegames:master
Draft

Reduction of TAA jitter positions for better motion clarity and reduced ghosting.#114644
blendegames wants to merge 1 commit intogodotengine:masterfrom
blendegames:master

Conversation

@blendegames
Copy link
Copy Markdown

This is a basic 2 jitter position implementation that doesn't do any major changes to the current TAA implementation for now. In the scenes I was able to test, most of the issues present with the current TAA implementation are gone.

Here are some examples:
Videos:
Light ball test (#68343):
Master: https://github.com/user-attachments/assets/5be4bfd3-4d3d-488a-bfe9-fe47f847a7bb
My fork: https://github.com/user-attachments/assets/8d42003e-906f-4c76-80c1-e00f63a5c572
There is an improvement to the artifacting around the movable sphere, but there is an increase in aliasing since there is way less jitter positions.

FSR test (#111631):
Master: https://github.com/user-attachments/assets/4f3d1ca8-d6c6-4e49-bd69-f9508177963e
My fork: https://github.com/user-attachments/assets/dc911f9c-c411-4126-9513-ab0fbc6199f5
Less jitter is noticeable in certain areas of the scene.

Thin geometry test:
Master: https://github.com/user-attachments/assets/23efbdb2-41fb-4cc8-b5ec-3e8e4ad9f4b
My fork: https://github.com/user-attachments/assets/9bb9b66f-30a8-4aec-84cb-a50b828765a2
The thin object is a lot less blurry and ghosting is almost non existent.

Screenshots:
Light ball test (#68343):
Master:
Screenshot 2026-01-06 033003
My fork:
Screenshot 2026-01-06 033131
Even when I'm not moving the ball around the scene, I get an improvement in sharpness.

FSR test (#111631):
Motion is needed to see the difference, no screenshots needed.

Thin geometry test:
Master:
Screenshot 2026-01-06 032722
My fork:
Screenshot 2026-01-06 032757
The ghosting is barely noticeable if not completely gone and the object looks less blurry.

There is a caveat to all of this. There is a loss in anti-aliasing capability, but with the combination of other anti-aliasing techniques such as SMAA or FXAA, that issue can be mitigated. If someone wants to keep the previous TAA implementation, it might be possible to keep it when no other anti-aliasing solutions are turned on.

This is a basic 2 jitter positions implementation that doesn't do any major changes other then the renderer_scene_cull which is now only giving 2 different jitter positions.
@mrjustaguy
Copy link
Copy Markdown
Contributor

the 2nd image should be compared with the stick mirrored as well, as you're flipping between numpad 1 and 9 and there may be visible differences between this diagonal line and it's mirror

@mrjustaguy
Copy link
Copy Markdown
Contributor

Some observations:

  1. The odd Edge issues of Godot's TAA are still surprisingly strong, which is a bit unexpected given the significant speed up in responsiveness, though it isn't going as far out of the edge as it did before, this is likely due to the delta between the two samples being much closer spatially then what the Halton Sequence was capable of producing
  2. The results typically look in the ball park of SMAA, which is not a good start
  3. SMAA doesn't do much with TAA in this form, I haven't Tested FXAA
  4. Ghosting is improved but still there, however seems like the Flicker Reduction is the main culprit of most of the Ghosting I have seen

@blendegames
Copy link
Copy Markdown
Author

Here is the stick mirrored:
Master:
https://github.com/user-attachments/assets/4f8d599f-a289-4846-b28c-733ffb840fb2
Screenshot 2026-01-06 125552

My fork:
https://github.com/user-attachments/assets/d8b6300d-9d61-4d8f-8252-f4d7d48b518d
Screenshot 2026-01-06 125526

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants