Мультисэмпловое сглаживание - Multisample anti-aliasing
Эта статья ведущий раздел не адекватно подвести итог ключевые моменты его содержания. Пожалуйста, подумайте о расширении интереса до предоставить доступный обзор обо всех важных аспектах статьи. (Июнь 2017 г.) |
Мультисэмпловое сглаживание (MSAA) является разновидностью пространственное сглаживание, техника, используемая в компьютерная графика удалять неровности.
Определение
Этот термин обычно относится к частному случаю суперсэмплинг. Первоначальные реализации полноэкранного сглаживания (FSAA ) работал концептуально, просто визуализируя сцену с более высоким разрешением, а затем понижая дискретизацию до вывода с более низким разрешением. Самый современный GPU могут использовать эту форму сглаживания, но она сильно нагружает такие ресурсы, как текстура, пропускная способность и наполняемость. (Если программа сильно TCL -связанный или ЦПУ может использоваться суперсэмплинг без особого ущерба для производительности.)
Согласно OpenGL GL_ARB_multisample спецификация,[1] «мультисэмплинг» относится к конкретной оптимизации суперсэмплинга. Спецификация требует, чтобы средство визуализации оценивало программу фрагмента один раз на пиксель, и только "истинно" суперсэмплировало глубина и трафарет значения. (Это не то же самое, что суперсэмплинг, но, согласно спецификации OpenGL 1.5,[2] определение было обновлено и теперь включает в себя реализации с полной суперсэмплингом.)
В графической литературе в целом, «мультисэмплинг» относится к любому частному случаю суперсэмплинга, когда некоторые компоненты конечного изображения не полностью суперсэмплированы. Приведенные ниже списки относятся к определению ARB_multisample.
Описание
При сглаживании суперсэмплов в каждом пикселе производится выборка из нескольких местоположений, и каждая из этих выборок[3] полностью визуализируется и комбинируется с другими для создания пикселя, который в конечном итоге отображается. Это затратно с точки зрения вычислений, потому что весь процесс рендеринга должен повторяться для каждого местоположения образца. Кроме того, это неэффективно, поскольку сглаживание обычно наблюдается только в немного части изображения, такие как края, тогда как суперсэмплинг выполняется для каждого пикселя.
При сглаживании с несколькими выборками, если какое-либо из местоположений с несколькими выборками в пикселе покрывается визуализируемым треугольником, для этого треугольника необходимо выполнить вычисление затенения. Однако этот расчет необходимо выполнить только однажды для всего пикселя независимо от того, сколько позиций сэмпла покрыто; результат расчета штриховки просто применяется к все соответствующих мест с несколькими пробами.
В случае, когда только один треугольник покрывает каждое местоположение с несколькими выборками в пикселе, выполняется только одно вычисление затенения, и эти пиксели немного дороже (и результат не отличается), чем в изображении без сглаживания. Это верно для середины треугольников, где сглаживание не является проблемой. (Обнаружение края может еще больше уменьшить это, явно ограничив вычисление MSAA пикселями, образцы которых включают несколько треугольников или треугольники на разной глубине.) В крайнем случае, когда каждое из местоположений нескольких образцов покрывается другим треугольником, будет выполнено другое вычисление затенения для каждого местоположения и результаты затем объединяются, чтобы дать окончательный пиксель, а результат и вычислительные затраты такие же, как в эквивалентном сверхдискретизированном изображении.
Расчет затенения - не единственная операция, которая должна выполняться с данным пикселем; Реализации мультисэмплинга могут по-разному выбирать другие операции, такие как видимость, на разных уровнях выборки.
Преимущества
- В пиксельный шейдер обычно нужно оценивать только один раз на пиксель.
- Края многоугольников (наиболее очевидный источник сглаживание в 3D-графике) сглаживаются.
- Поскольку дискретизируется несколько субпикселей на пиксель, многоугольные детали размером менее одного пикселя, которые могли быть пропущены без MSAA, могут быть захвачены и сделаны частью окончательного визуализированного изображения, если будет взято достаточно образцов.
Недостатки
Альфа-тестирование
Альфа-тестирование - это метод, общий для старых видеоигр, используемый для рендеринга полупрозрачных объектов путем отказа от записи пикселей в буфер кадра.[4]Если значение альфа-канала полупрозрачного фрагмента выходит за пределы указанного диапазона, оно будет отброшено после альфа-тестирования. Поскольку это выполняется попиксельно, изображение не получает преимуществ множественной выборки (все мультисэмплы в пикселе отбрасываются на основе альфа-теста) для этих пикселей. Результирующее изображение может содержать наложения по краям прозрачных объектов или краев в текстурах, хотя качество изображения будет не хуже, чем было бы без сглаживания.[5]Полупрозрачные объекты, моделируемые с использованием текстур альфа-теста, также будут иметь псевдонимы из-за альфа-тестирования. Этот эффект можно минимизировать путем многократного рендеринга объектов с прозрачными текстурами, хотя это приведет к значительному снижению производительности для сцен, содержащих много прозрачных объектов.[6]
Сглаживание
Поскольку множественная выборка вычисляет внутренние фрагменты многоугольника только один раз на пиксель, сглаживание и другие артефакты по-прежнему будут видны внутри визуализированных многоугольников, где выходные данные шейдера фрагментов содержат высокочастотные компоненты.
Спектакль
Хотя он менее требователен к производительности, чем SSAA (суперсэмплинг), в определенных сценариях (сцены с большим количеством сложных фрагментов) MSAA может быть в несколько раз более интенсивным для данного кадра, чем методы постобработки сглаживания, такие как FXAA, SMAA и MLAA. Ранние методы в этой категории имеют тенденцию к меньшему влиянию на производительность, но страдают от проблем с точностью.[7] В более поздних методах сглаживания на основе постобработки, таких как временное сглаживание (TAA), которое уменьшает наложение спектров путем объединения данных из ранее визуализированных кадров, эта тенденция изменилась, поскольку пост-обработка AA становится более универсальной и более дороже, чем MSAA, который не может сглаживать только весь кадр.
Методы отбора проб
Точечный отбор проб
В точечной маске бит покрытия для каждого мультисэмпла устанавливается только в том случае, если мультисэмпл находится внутри визуализированного примитива. Образцы никогда не берутся извне визуализированного примитива, поэтому изображения, созданные с использованием точечной выборки, будут геометрически правильными, но качество фильтрации может быть низким, поскольку доля битов, установленных в маске покрытия пикселя, может не быть равной доле пикселя, который фактически покрывается рассматриваемым фрагментом.
Выборка площади
Качество фильтрации можно улучшить, используя маски с выборкой областей. В этом методе количество битов, установленных в маске покрытия для пикселя, должно быть пропорционально фактическому охвату области фрагмента. Это приведет к тому, что некоторые биты покрытия будут установлены для мультисэмплов, которые на самом деле не расположены внутри визуализированного примитива, и могут вызвать наложение и другие артефакты.
Образцы шаблонов
Обычная сетка
Шаблон регулярной сетки, в котором местоположения множества выборок образуют равномерно распределенную сетку по всему пикселю, легко реализовать и упрощает оценку атрибутов (т. Е. Установку масок субпикселей, цвета и глубины выборки). Этот метод требует больших вычислительных ресурсов из-за большого количества выборок. Оптимизация краев для выровненных по экрану краев оставляет желать лучшего, но качество изображения хорошее при большом количестве мультисэмплов.
Редкая регулярная сетка
Образец образца разреженной регулярной сетки - это подмножество образцов, которые выбираются из образца образца регулярной сетки. Как и в случае с обычной сеткой, оценка атрибутов упрощается благодаря регулярному интервалу. Этот метод менее затратен в вычислительном отношении из-за меньшего количества образцов. Оптимизация краев хороша для выравнивания краев экрана, а качество изображения хорошее для среднего количества мультисэмплов.
Стохастические образцы образцов
Шаблон стохастической выборки - это случайное распределение мультивыборок по пикселю. Неравномерный интервал между выборками затрудняет оценку атрибутов. Этот метод экономичен из-за малого количества выборок (по сравнению с обычными сетками). Оптимизация краев с помощью этого метода, хотя и не оптимальна для краев, выровненных по экрану. Качество изображения отличное для умеренного количества образцов.
Качественный
По сравнению с суперсэмплингом, сглаживание мультисэмплов может обеспечить аналогичное качество при более высокой производительности или лучшее качество при той же производительности. Дальнейшее улучшение результатов может быть достигнуто за счет использования субпиксельных масок с повернутой сеткой. Дополнительная полоса пропускания, необходимая для множественной выборки, является достаточно низкой, если доступны Z и сжатие цвета.[8]
Самый современный GPU поддержка 2 ×, 4 × и 8 × образцов MSAA. Чем выше значение, тем лучше качество, но медленнее.
Смотрите также
Рекомендации
- ^ «Дополнения к главе 3 спецификации 1.2.1».
- ^ «Спецификация OpenGL 1.5» (PDF).
- ^ "Значение сглаживания: для чего оно используется?". ОРВИ VR. 2018-09-14. Получено 2018-09-14.
- ^ «Синтаксис ShaderLab: альфа-тестирование». Unity3d.com. 2008-04-27. Получено 2012-07-31.
- ^ "Сглаживание множественной выборки: вид крупным планом". Alt.3dcenter.org. Получено 2012-07-31.
- ^ «Визуальное сравнение различных режимов сглаживания». Nhancer.com. Архивировано из оригинал на 28 января 2013 г.
- ^ Мэтт Петтинео (2012-10-25). «Краткий обзор MSAA». Получено 2016-11-24.
- ^ "Сглаживание множественной выборки: вид крупным планом". Alt.3dcenter.org. Получено 2012-07-31.