Как работает сглаживание Supersampling?

2399
RJSmith92

Из онлайн-чтения я понимаю основную идею о том, как работает суперсэмплинг-сглаживание: он визуализирует сцену с более высоким разрешением, чем дисплей пользователя, использует дополнительные пиксели для вычисления среднего и затем уменьшает частоту дискретизации.

Я не совсем понимаю, как это работает на практике. Например, если есть красный пиксель стены рядом с синим пикселем неба, когда сцена отображается x2 SSAA, не будет ли один красный пиксель теперь только четырьмя красными пикселями и таким же с пикселем голубого неба, как это помогает при расчете среднего.

Четыре новых красных пикселя перекрываются с исходным изображением, чтобы вы могли получить смесь красных и синих пикселей и вычислить среднее значение, чтобы помочь сгладить переход между стеной и небом?

Любая помощь будет оценена.

0
Ofcourse, if you just scale up and down the result would be the same, but afaik a higher texture is loaded, ie.: the red pixel *actually*, *in high-res* are 4 different colors of red and thus a different result will be achieved. larkey 8 лет назад 0

2 ответа на вопрос

2
David Schwartz

Это очень помогает. В вашем оригинальном примере:

... Красный Красный Красный Синий Синий Синий ...

Граница между красным и синим выглядит как лестничная клетка

В передискретизированном изображении

... Красный Красный Красный Красный Синий Синий Синий ...

Как мы уменьшаем

... красный] [красный красный] [красный синий] [синий синий] [синий ...

Теперь у нас есть один пиксель, который усредняется вместе красным и синим, стирая границу между красной и синей областями.

Если вы представите диагональную границу между двумя областями, красной и синей, передискретизация будет вставлять промежуточные пиксели по краям ступеньки лестницы, так как многие из блоков 2x2 обязательно включают в себя как красные, так и синие пиксели.

enter image description here

Hi @David, thanks for the answer. I must be an idiot 'cos I'm still not quite understanding this. When the pixel is upscaled to four times it size (with 2x SMAA), are the 3 other pixels in the new 2x2 sqaure all the same colour as the original pixel? RJSmith92 8 лет назад 0
@RJSmith92 The pixel isn't upscaled. Only downscaling occurs. Consider a diagonal line, overlay 2x2 boxes, it must be the case that some boxes contain pixels on both sides of the line. David Schwartz 8 лет назад 0
Thanks @David, that makes more sense. When looking online all the explanations say that the image is rendered at a higher resolution, I'm not quite sure how this ties in with the process you described? RJSmith92 8 лет назад 0
Right. The image is rendered at a higher resolution and then downscaled. There's no upscaling. David Schwartz 8 лет назад 0
OK, so a pixel will be represented by four pixels when the image is rendered at a higher resolution (using x2). The average colour of those four pixels calculated and then used for the one pixel when downscaled? RJSmith92 8 лет назад 0
Yes. That's it. David Schwartz 8 лет назад 0
2
Psycogeek

Хорошо, я попытаюсь объяснить это, потому что я применял методы, подобные этим, когда работал с фотографиями, чтобы применить некоторые из алгоритмов «сглаживания» к фотографиям или фотографиям с низким разрешением, не получая очень глубокое глубокое сглаживание.

Это выглядит примерно так.

Вот ваши пиксели в обычном разрешении, в котором вы бы просматривали. В острой необходимости сглаживания или сглаживания неровностей.
aliased

С одной стороны, мы увеличили изображение до 4X, затем применили тот же алгоритм сглаживания. high and low

Важно отметить, что, как глупый компьютер, я не могу просто согнуть черное в белое (изменяя степень белизны), но также должен согнуть белое в черное (балансируя уравнение :-). Я слепо применяю математическую матрицу там, где мне сказали ее применять. Хотя алгоритмы видеокарты очень сложные и на самом деле они не так слепы, как эта.

Наблюдаемый пример баланса в играх: вы не хотите, чтобы ваш забор исчезал в небе, и вы не хотите, чтобы ваш забор становился забором, поэтому любые корректировки должны применяться как к пикселям неба, так и к пикселям забора более равномерно. Также пример того, как видеокарты и игровые движки нарушают этот баланс, чтобы получить лучшую картинку, сохраняя при этом такие сложные детали.

В какой-то момент все это должно вернуться к разрешению экрана, где оно будет иметь более низкое разрешение, и после того, как у вас будет широкий диапазон элементов для настройки, этот дополнительный набор пикселей теперь будет идеально смешиваться с меньшим количеством пикселей.
(ну, это был не идеальный цвет для этой смеси, но я не занимался математикой) Back to low res И, как вы можете видеть, он снова выглядит ужасно на дисплее Res.

Со стороны низкого разрешения мы имеем эту обширную область влияния / изменения, когда мы сгибаем все эти пиксели навстречу друг другу (как черный, так и белый) и имеем огромное количество сглаживаний, потому что мы работали только с низким разрешением.

С нашей стороны высокого разрешения вместо этого мы получили идеальный балансный набор пикселей, смешивающих 4х пикселей, что делает область сглаживания меньше. таким образом, сторона с высоким разрешением находит пиксели, которые сгладят все это очень красиво, но не оставляют большого размытого беспорядка.

Потому что (опять же) нам нужно согнуть намного больше пикселей, чтобы сохранить баланс смешения одного с другим. Если мы сначала увеличим масштаб, мы сможем создать это смешение с меньшим масштабом, сохраняя баланс сгибания одного к другому. и конечный результат - менее затронутые пиксели, такие же прячутся.

Когда вы сравниваете два метода бок о бок с использованием игр, разница, которая достигается с тем, что кажется большим количеством дополнительной работы, не так уж велика. То же самое, когда я обрабатываю фотографии, которые будут использоваться в более низком разрешении, это потребует дополнительных усилий для меня и машины, и результаты будут чуть лучше.