Skip to content

Conversation

pmavridis
Copy link
Contributor

Purpose of this PR

This PR adds an example that shows how to use the existing accumulation API to get high quality anti-aliasing by accumulating multiple frames. This approach does not suffer from the temporal artifacts of TAA, but is only suitable for offline rendering due to the high computational cost.

@github-actions
Copy link

Hi! This comment will help you figure out which jobs to run before merging your PR. The suggestions are dynamic based on what files you have changed.
Link to Yamato: https://yamato.cds.internal.unity3d.com/jobs/902-Graphics
Search for your PR branch using the sidebar on the left, then add the following segment(s) to the end of the URL (you may need multiple tabs depending on how many packages you change)

HDRP
/.yamato%252Fall-hdrp.yml%2523PR_HDRP_2021.2

Depending on the scope of your PR, you may need to run more jobs than what has been suggested. Please speak to your lead or a Graphics SDET (#devs-graphics-automation) if you are unsure.

@sebastienlagarde sebastienlagarde marked this pull request as ready for review September 1, 2021 10:28


## High Quality Anti-aliasing wiht Accumulation
You can also use the accumulation API to get a high quality antialiased frame by jittering the projection matrix of each renderer subframe. This is equivalent to rendering a higher resolution image and then downscaling to the final resolution, a process that is often callen **SuperSampling**. Using the accumulation API is preferable over rendering at higher resolutions, since it is using a much lower memory footprint. The following example shows how to properly setup the accumulation API from a script to perform high quality antialiasing:
Copy link
Contributor

@emilybrown1 emilybrown1 Sep 2, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You can also use the accumulation API to get a high quality antialiased frame by jittering the projection matrix of each renderer subframe. This is equivalent to rendering a higher resolution image and then downscaling to the final resolution, a process that is often callen **SuperSampling**. Using the accumulation API is preferable over rendering at higher resolutions, since it is using a much lower memory footprint. The following example shows how to properly setup the accumulation API from a script to perform high quality antialiasing:
You can also use the accumulation API to get a high quality antialiased frame by jittering the projection matrix of each renderer subframe. This is equivalent to rendering a higher resolution image, then downscaling to the final resolution, a process that is often called **SuperSampling**. The accumulation API uses fewer memory resources in the GPU than rendering at higher resolutions. The following example shows how to perform high quality antialiasing with the accumulation API from a script:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is doing the jittering of the projection matrix?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The jittering is done by the user script. In the example that I have included it's done by the GetJitteredProjectionMatrix() method.

## High Quality Anti-aliasing wiht Accumulation
You can also use the accumulation API to get a high quality antialiased frame by jittering the projection matrix of each renderer subframe. This is equivalent to rendering a higher resolution image and then downscaling to the final resolution, a process that is often callen **SuperSampling**. Using the accumulation API is preferable over rendering at higher resolutions, since it is using a much lower memory footprint. The following example shows how to properly setup the accumulation API from a script to perform high quality antialiasing:

```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
```
```C#

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C# language highlighting might be good



## High Quality Anti-aliasing wiht Accumulation
You can also use the accumulation API to get a high quality antialiased frame by jittering the projection matrix of each renderer subframe. This is equivalent to rendering a higher resolution image and then downscaling to the final resolution, a process that is often callen **SuperSampling**. Using the accumulation API is preferable over rendering at higher resolutions, since it is using a much lower memory footprint. The following example shows how to properly setup the accumulation API from a script to perform high quality antialiasing:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is doing the jittering of the projection matrix?

@sebastienlagarde sebastienlagarde merged commit 3afe9d4 into master Sep 14, 2021
@sebastienlagarde sebastienlagarde deleted the HDRP/accumulation_aa branch September 14, 2021 13:08
sebastienlagarde pushed a commit that referenced this pull request Sep 20, 2021
…tion api (#5459)

* Add high quality antialiasing example using the accumulation api

* Review feedback

* Fix small typo

* Review feedback
Vic-Cooper added a commit that referenced this pull request Sep 23, 2021
Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.
sebastienlagarde pushed a commit that referenced this pull request Sep 27, 2021
Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.
sebastienlagarde pushed a commit that referenced this pull request Sep 27, 2021
Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.
sebastienlagarde added a commit that referenced this pull request Oct 12, 2021
* PR #5459

Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.

* Doc fixes

Fixed typo and changed SuperSampling "effect" to "method"

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>
sebastienlagarde added a commit that referenced this pull request Oct 18, 2021
* PR #5459

Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.

* Doc fixes

Fixed typo and changed SuperSampling "effect" to "method"

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>
sebastienlagarde added a commit that referenced this pull request Oct 18, 2021
* Fixed initial decal position #5889

* Fix APV issue spewing asserts when baking with max subdiv level of 2 (#5888)

* Add override checkbox.

* Fix for problem when max subdiv is smaller than index voxel update size.

* Revert "Merge branch 'HDRP/add-override-checkbox-for-pv' into HDRP/investigate-issue-with-faulty-index"

This reverts commit e33a421, reversing
changes made to 924763f.

* Skip refresh ops if feature is disabled. (#5886)

* Fixed the clouds not taking properly into account the fog when in distant mode and with a close far plane (case 1367993). (#5884)

* Fixed the clouds not taking properly into account the fog when in distant mode and with a close far plane (case 1367993).

* Fix formatting

* Update CHANGELOG.md

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* To info box (#5879)

* Add override checkbox. (#5878)

* corrected links to HDAdditionalLightData and HDLightTypeAndShape (#5861)

* updated link to expert guide (#5857)

* Add comment (#5853)

* [HDRP][Path Tracing] Added selection of light types for Unlit shadow mattes. #5855

* Maintain APV cells loaded if at least one scene still references that cell  (#5900)

* Add override checkbox.

* Fix for problem when max subdiv is smaller than index voxel update size.

* Revert "Merge branch 'HDRP/add-override-checkbox-for-pv' into HDRP/investigate-issue-with-faulty-index"

This reverts commit e33a421, reversing
changes made to 924763f.

* Add a basic APV test to runtime tests (#5952)

* New test

* Tentative ref images

* Change threshold to be non-zero.

* Forgot one threshold...

* Add test filter.

* [HDRP] APV - Fix voxelization issues with planes at the origin (#5897)

* Fix precision issues with the scene voxelization, especially with geometry at the origin.

* Updated changelog

* Fix renderer bounds for the plane case

* disable debug

* rename epsilon

Co-authored-by: JulienIgnace-Unity <julien@unity3d.com>

* Fix another issue with probe volume subdiv multiplier when changing to a lower subdiv level (#5893)

* Add override checkbox.

* Fix for problem when max subdiv is smaller than index voxel update size.

* Revert "Merge branch 'HDRP/add-override-checkbox-for-pv' into HDRP/investigate-issue-with-faulty-index"

This reverts commit e33a421, reversing
changes made to 924763f.

* Fix issue

* Revert "Fix for problem when max subdiv is smaller than index voxel update size."

This reverts commit 03feabd.

* Fixed the volumetric clouds debug view not taking into account the exposure and leading to Nans (case 1365054). (#5940)

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* Change order of fields in the cbuffer. (#5980)

Co-authored-by: FrancescoC-Unity <francescoc@unity3d.com>

* Fixed the dependency between transparent SSR and transparent depth prepass being implicit (case 1365915). (#5898)

* Fixed the dependency between transparent SSR and transparent depth prepass being implicit (case 1365915).

* review corrections

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* Updating docs for merged PRs (#5821)

* PR #5459

Updated the docs changed in "Add high quality antialiasing example using the accumulation api" PR.

* Doc fixes

Fixed typo and changed SuperSampling "effect" to "method"

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* [Fogbugz # 1365687] Fixing depth pyramid with multicamera on hardware drs. #5902

* Fix (#5994)

* release cmd (#5993)

* test linux vulkan and OSX filter out. (#5989)

* Fixed removal of depth buffer binding (#5910)

* Fixed removal of depth buffer binding

* Add object in graphic test

* screenshots

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* [HDRP][Path Tracing] Added orthographic camera support #5944

* Fixed a regression in the transparent SSR color pyramid usage. (#6001)

* Fixed a regression in the transparent SSR color pyramid usage.

* Update CHANGELOG.md

Co-authored-by: sebastienlagarde <sebastien@unity3d.com>

* [HDRP] Reenable crossfade on the HD SpeedTree 8 shader. #5957

* Force scalarization of shadow index data off (#6007)

* Fixes for light anchor #5915

* Minor performance improvements to SSGI (case 1367144). #5921

* Update TestCaseFilters.asset

Co-authored-by: Adrien de Tocqueville <adrien.tocqueville@unity3d.com>
Co-authored-by: FrancescoC-unity <43168857+FrancescoC-unity@users.noreply.github.com>
Co-authored-by: anisunity <42026998+anisunity@users.noreply.github.com>
Co-authored-by: emilybrown1 <88374601+emilybrown1@users.noreply.github.com>
Co-authored-by: Emmanuel Turquin <emmanuel@turquin.org>
Co-authored-by: Antoine Lelievre <antoinel@unity3d.com>
Co-authored-by: JulienIgnace-Unity <julien@unity3d.com>
Co-authored-by: FrancescoC-Unity <francescoc@unity3d.com>
Co-authored-by: Vic Cooper <63712500+Vic-Cooper@users.noreply.github.com>
Co-authored-by: Kleber Garcia <kleber.garcia@unity3d.com>
Co-authored-by: Tianliang Ning <paula.s.ning@gmail.com>
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.

3 participants