Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use dithering when performing SSR roughness to improve quality #97516

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Sep 26, 2024

This works best when TAA or FSR2 is enabled to jitter the result every frame, letting TAA accumulation do its work.

Testing project: https://github.com/Calinou/godot-ssr-test

Preview

TAA is enabled on all screenshots. Images should be compared by opening them in a new tab, so that they can be viewed at 1:1 size.

Before

Low quality Medium quality High quality
ssr_taa_before_low png webp ssr_taa_before_medium png webp ssr_taa_before_high png webp

After

Low and Medium quality settings now resemble High quality more closely, with less visible blockiness.

Low quality Medium quality High quality
ssr_taa_after_low png webp ssr_taa_after_medium png webp ssr_taa_after_high png webp

TODO

  • Use the TAA frame count from camera data, so that the jitter is disabled when TAA is disabled and the TAA frame count varies according to the Halton sequence length.
    • I'm not sure how to pass this from RendererSceneCull to SSEffects.
  • Improve appearance when using FSR2, which has a harder time smoothing out dithering patterns that change over time.

This works best when TAA or FSR2 is enabled to jitter the result every frame,
letting TAA accumulation do its work.
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.

1 participant