Replies: 1 comment 6 replies
-
I've looked at the paper (first link) and there's some very obvious problems with it. Didn't go through the other stuff as I don't have a lot of time right now
|
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Aliasing is a problem resulting from high-frequency signals being discretized with too low sample count. In today's image rendering, for anti-aliasing methods are usually used that query more samples per image area (so higher frequencies can be correctly discretized).
Nevertheless, these methods do not scale well. They only work as long as no higher frequency appears in the signal and require larger sample counts than higher the frequencies are.
There exist different methods that don't have this drawback. For example, in earlier years of OpenGL, GL_POLYGON_SMOOTH allowed rendering edges of triangles fuzzy, which smoothed transitions and thereby reduced frequencies at triangle edges.
The feature, though, was poorly implemented and lacked hardware support. Also, not being customizable, it was rarely used.
Another method is to, instead of sampling single fragments in the scene and aggregating these samples per pixel, average all parts of primitives that are covered by a pixel frustum part to calculate the resulting value.
In modern graphics hardware, this can be done by conservative rasterization. Conservative rasterization allows for every pixel to retrieve all primitives that have parts mapped to that pixel.
Additionally, auxilliar data, like how much of the pixels area is covered by a primitive or which primitive has the lowest/highest depth, can be retrieved using built-in functionality.
As every (visible) fragment in a pixel has an effect on the resulting pixel data and the data is applied to the whole pixel, regardless of the actual position of the fragment within the pixel, frequencies are smoothed out and less or no aliasing occurs.
(Also, the algorithm can be extended beyond a single pixel, further reducing aliasing.)
Alternatively viewed, every primitive extends smoothly beyond their edges, similar to an SDF, so no hard transitions between a primitive's edge and other geometry appear.
Along with anti-aliasing, conservative rasterization also allows for easy computation of other effects, like, e.g. special transparency effects or blurring.
Modern anti-aliasing can also be combined with different kinds of super-sampling methods (like sampling every fragment multiple times or perform modern anti-aliasing per sample instead per pixel).
Examples and Sources:
https://www.cg.tuwien.ac.at/research/publications/2013/Auzinger_2013_NSAA/Auzinger_2013_NSAA-Paper.pdf
https://cwyman.org/papers/i3d15_ftizb.pdf
https://patents.google.com/patent/EP2854108A2/en
Other anti-aliasing approach, but contains much Related Work:
https://dl.acm.org/doi/pdf/10.1145/3452097
Beta Was this translation helpful? Give feedback.
All reactions