Трилинейная фильтрация или анизотропная что лучше - TurboComputer.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

Трилинейная фильтрация или анизотропная что лучше

Фильтрация анизотропная: для чего нужна, на что влияет, практическое использование

Технологии отображения 3D-объектов на экране мониторов персональных компьютеров развиваются вместе с выпуском современных графических адаптеров. Получение идеальной картинки в трёхмерных приложениях, максимально приближённой к реальному видео, является основной задачей разработчиков железа и главной целью для ценителей компьютерных игр. Помочь в этом призвана технология, реализованная в видеокартах последних поколений — анизотропная фильтрация в играх.

Что это такое?

Каждому компьютерному игроку хочется, чтобы на экране разворачивалась красочная картина виртуального мира, чтобы, взобравшись на вершину горы, можно было обозревать живописные окрестности, чтобы, нажимая до отказа кнопку ускорения на клавиатуре, до самого горизонта можно было увидеть не только прямую трассу гоночного трека, а и полноценное окружение в виде городских пейзажей. Объекты, отображаемые на экране монитора, только в идеале стоят прямо перед пользователем в самом удобном масштабе, на самом деле подавляющее большинство трёхмерных объектов находится под углом к линии зрения. Более того, различное виртуальное расстояние текстур до точки взгляда также вносит коррективы в размеры объекта и его текстур. Расчётами отображения трёхмерного мира на двумерный экран и заняты различные 3D-технологии, призванные улучшить зрительное восприятие, в числе которых не последнее место занимает текстурная фильтрация (анизотропная или трилинейная). Фильтрация такого плана относится к числу лучших разработок в этой области.

На пальцах

Чтобы понять, что даёт анизотропная фильтрация, нужно понимать основные принципы алгоритмов текстурирования. Все объёкты трёхмерного мира состоят из «каркаса» (трехмерной объёмной модели предмета) и поверхности (текстуры) — двумерной картинки, «натянутой» поверх каркаса. Малейшая часть текстуры — цветной тексель, это как пиксели на экране, в зависимости от «плотности» текстуры, тексели могут быть разных размеров. Из разноцветных текселей состоит полная картина любого объекта в трёхмерном мире.

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

Ближний цвет

Самым простым алгоритмом фильтрации является отображение цвета ближайшего к точке зрения каждого пискеля (Point Sampling). Всё просто: луч зрения определённой точки на экране падает на поверхность трёхмерного объекта, и текстура изображений возвращает цвет ближайшего к точке падения текселя, отфильтровывая все остальные. Идеально подходит для однотонных по цвету поверхностей. При небольших перепадах цвета тоже даёт вполне качественную картинку, но довольно унылую, так как где вы видели трёхмерные объекты одного цвета? Одни только шейдеры освещения, теней, отражений и другие готовы раскрасить любой объект в играх как новогоднюю ёлку, что же говорить о самих текстурах, которые порою представляют собой произведения изобразительного искусства. Даже серая бездушная бетонная стена в современных играх — это вам не просто прямоугольник невзрачного цвета, это испещрённая шероховатостями, порою трещинами и царапинами и другими художественными элементами поверхность, максимально приближающая вид виртуальной стены к реальным или выдуманным фантазией разработчиков стенам. В общем, ближний цвет мог быть использован в первых трёхмерных играх, сейчас же игроки стали гораздо требовательнее к графике. Что немаловажно: фильтрация ближнего цвета практически не требует вычислений, то есть очень экономична в плане ресурсов компьютера.

Линейная фильтрация

Отличия линейного алгоритма не слишком существенны, вместо ближайшей точки-текселя линейная фильтрация использует сразу 4 и рассчитывает средний цвет между ними. Единственная проблема, что на поверхностях, расположенных под углом к экрану, луч зрения образует как бы эллипс на текстуре, тогда как линейная фильтрация использует идеальный круг для подбора ближайших текселей независимо от угла обзора. Использование четырёх текселей вместо одного позволяет значительное улучшить прорисовку удалённых от точки обзора текстур, но всё равно недостаточно, чтобы корректно отразить картинку.

Mip-mapping

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

Билинейная фильтрация

Используя вместе линейную фильтрацию и MIP-текстурирование, получаем билинейный алгоритм, который позволяет ещё лучше отображать удалённые объекты и поверхности. Однако всё те же 4 текселя не дают технологии достаточной гибкости, к тому же билинейная фильтрация не маскирует переходы на следующий уровень масштабирования, работая с каждой частью текстуры по отдельности, и их границы могут быть видны. Таким образом, на большом удалении или под большим углом текстуры сильно размываются, делая картинку неестественной, как будто для людей с близорукостью, плюс для текстур со сложными рисунками заметны линии стыка текстур разного разрешения. Но мы же за экраном монитора, не нужна нам близорукость и разные непонятные линии!

Трилинейная фильтрация

Эта технология призвана исправить прорисовку на линиях смены масштаба текстур. Тогда как билинейный алгоритм работает с каждым уровнем mip-mapping по отдельности, трилинейная фильтрация дополнительно просчитывает границы уровней детализации. При всём этом растут требования к оперативной памяти, а улучшение картинки на удалённых объектах при этом не слишком ощутимо. Само собой, границы между ближними уровнями масштабирования получают лучшую обработку, нежели при билинейной, и более гармонично смотрятся без резких переходов, что сказывается на общем впечатлении.

Анизотропная фильтрация

Если просчитывать проекцию луча зрения каждого экранного пикселя на текстуре согласно углу обзора, получатся неправильные фигуры — трапеции. Вкупе с использованием большего количества текселей для расчётов итогового цвета это может дать гораздо лучший результат. Что даёт анизотропная фильтрация? Учитывая, что пределов количества используемых текселей в теории нет, такой алгоритм способен отображать компьютерную графику неограниченного качества на любом удалении от точки обзора и под любым углом, в идеале сравнимую с реальным видео. Фильтрация анизотропная по своим возможностям упирается лишь в технические характеристики графических адаптеров персональных компьютеров, на которые и рассчитаны современные видеоигры.

Подходящие видеокарты

Режим анизотропной фильтрации был возможен на пользовательских видеоадаптерах уже с 1999 года, начиная с известных карт Riva TNT и Voodoo. Топовые комплектации этих карт вполне справлялись с просчётом трилинейной графики и даже выдавали сносные показатели FPS с использованием анизотропной фильтрации х2. Последняя цифра указывает на качество фильтрации, которое, в свою очередь, зависит от количества текселей, занятых в расчёте итогового цвета пикселя на экране, в данном случае их используется целых 8. Плюс ко всему, при расчётах используется соответствующая углу зрения область захвата этих текселей, а не круг, как в линейных алгоритмах ранее. Современные видеокарты способны обрабатывать фильтрацию анизотропным алгоритмом на уровне х16, что означает использование 128 текселей для расчётов итогового цвета пикселя. Это сулит значительное улучшение отображения удалённых от точки обзора текстур, а также и серьёзную нагрузку, но графические адаптеры последних поколений снабжены достаточным количеством оперативной памяти и многоядерными процессорами, чтобы справляться с этой задачей.

Влияние на FPS

Преимущества понятны, но как дорого обойдётся игрокам анизотропная фильтрация? Влияние на производительность игровых видеоадаптеров с серьёзной начинкой, выпущенных не позднее 2010 года, очень незначительно, что подтверждают тесты независимых экспертов в ряде популярных игр. Фильтрация текстур анизотропная в качестве х16 на бюджетных картах показывает снижение общего показателя FPS на 5-10%, и то за счёт менее производительных компонентов графического адаптера. Такая лояльность современного железа к ресурсоёмким вычислениям говорит о непрестанной заботе производителей о нас, скромных геймерах. Вполне возможно, что не за горами переход на следующие уровни качества анизотропии, лишь бы игроделы не подкачали.

Конечно, в улучшении качества картинки участвует далеко не одна только анизотропная фильтрация. Включать или нет ее, решать игроку, но счастливым обладателям последних моделей от Nvidia или AMD (ATI) не стоит даже задумываться над этим вопросом — настройка анизотропной фильтрации на максимальный уровень не повлияет на производительность и добавит реалистичности пейзажам и обширным локациям. Немногим сложнее ситуация у хозяев встроенных графических решений от компании Intel, так как в этом случае многое зависит от качеств оперативной памяти компьютера, её тактовой частоты и объёма.

Опции и оптимизация

Управление типом и качеством фильтрации доступно благодаря специальному ПО, регулирующему драйвера графических адаптеров. Также расширенная настройка анизотропной фильтрации доступна в игровых меню. Реализация больших разрешений и использование нескольких мониторов в играх заставили производителей задуматься об ускорении работы своих изделий, в том числе за счёт оптимизации анизотропных алгоритмов. Производители карт в последних версиях драйверов представили новую технологию под названием адаптивная анизотропная фильтрация. Что это значит? Эта функция, представленная AMD и частично реализованная в последних продуктах Nv >

На что влияет анизотропная фильтрация? Задействование вычислительных мощностей видеоадаптеров, по сравнению с другими технологиями фильтрации, намного выше, что сказывается на производительности. Впрочем, проблема быстродействия при использовании этого алгоритма давно решена в современных графических чипах. Вместе с остальными трёхмерными технологиями анизотропная фильтрация в играх (что это такое мы уже представляем) влияет на общее впечатление о целостности картинки, особенно при отображении удалённых объектов и текстур, расположенных под углом к экрану. Это, очевидно, главное, что требуется игрокам.

Взгляд в будущее

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

Графические настройки в компьютерных играх — подробный разбор

На сайте PC Gamer появился интересный разбор графических настроек в компьютерных играх, где подробно рассказано обо всех популярных инструментах, фильтрах и механизмах обработки изображения. Мы перевели его на русский язык, чтобы вы могли сами настраивать свои игры, избавляться от лагов и любоваться красивой графикой.

Итак, сегодня мы с вами разберемся, что означают те или иные графические настройки в компьютерных играх.

У Nvidia и AMD есть программное обеспечение для автоматической настройки графики согласно техническим характеристикам вашего компьютера. Со своей задачей программы справляются неплохо, но часто ручная настройка приносит куда больше пользы. Все-таки, мы ПК-бояре, у нас должна быть свобода выбора!

Если вы новичок в области игровой графики, это руководство создано специально для вас. Мы расшифруем основные пункты любого меню «Настройки графики» в ваших играх и объясним, на что они влияют. Эта информация поможет вам избавиться от лагов и фризов в любимой игре, не лишаясь красивой картинки. А владельцы мощных компьютеров поймут, как настроить самую сочную и привлекательную графику, чтобы записывать крутые видео и делать зрелищные скриншоты.

Читайте также:  Что значит ваше соединение не защищено Firefox

Начнем с фундаментальных понятий, а затем пройдемся по тонким настройкам в рамках нескольких разделов, посвященных анизотропной фильтрации, сглаживанию и постобработке. Для написания этого гайда мы пользовались информацией, полученной от профессионалов: Алекса Остина, дизайнера и программиста Cryptic Sea, Николаса Вайнинга, технического директора и ведущего программиста Gaslamp Games и от представителей Nvidia. Сразу отметим, что статью мы пишем простыми словами, опуская подробные технические детали, чтобы вам было легче понять механизмы работы разных технологий.

Содержание

ОСНОВЫ

Разрешение

Пиксель — основная единица цифрового изображения. Это цветовая точка, а разрешение — количество столбцов и рядов точек на вашем мониторе. Самые распространенные разрешения на сегодня: 1280×720 (720p), 1920×1080 (1080p), 2560×1440 (1440p) и 3840 x 2160 (4K или «Ultra-HD»). Но это для дисплеев формата 16:9. Если у вас соотношение сторон 16:10, разрешения будут слегка отличаться: 1920×1200, 2560×1600 и т.д. У ультрашироких мониторов разрешение тоже другое: 2560×1080, 3440×1440 и т.д.

Кадры в секунду (frames per second, FPS)

Если представить, что игра — это анимационный ролик, то FPS будет числом изображений, показанных за секунду. Это не то же самое, что частота обновления дисплея, измеряемая в герцах. Но эти два параметра легко сравнивать, ведь как монитор на 60 Гц обновляется 60 раз за секунду, так и игра при 60 FPS выдает именно столько кадров за тот же отрезок времени.

Чем сильнее вы загрузите видеокарту обработкой красивых, наполненных деталями игровых сцен, тем ниже будет ваш FPS. Если частота кадров окажется низкой, они будут повторяться и получится эффект подтормаживания и подвисания. Киберспортсмены охотятся за максимальном возможными показателями FPS, особенно в шутерах. А обычные пользователи зачастую довольствуются играбельными показателями — это где-то 60 кадров в секунду. Однако, мониторы на 120-144 Гц становятся более доступными, поэтому потребность в FPS тоже растет. Нет смысла играть на 120 герцах, если система тянет всего 60-70 кадров.

Так как в большинстве игр нет встроенного бенчмарка, для измерения кадров в секунду используется стороннее программное обеспечение, например, ShadowPlay или FRAPS. Однако, некоторые новые игры с DX12 и Vulkan могут некорректно работать с этими программами, чего не наблюдалось со старыми играми на DX11.

Апскейлинг и даунсэмплинг

В некоторых играх есть настройка «разрешение рендеринга» или «rendering resolution» — этот параметр позволяет поддерживать постоянное разрешение экрана, при этом настраивая разрешение, при котором воспроизводится игра. Если разрешение рендеринга игры ниже разрешения экрана, оно будет увеличено до масштабов разрешения экрана (апскейлинг). При этом картинка получится ужасной, ведь она растянется в несколько раз. С другой стороны, если визуализировать игру с большим разрешением экрана (такая опция есть, например, в Shadow of Mordor), она будет выглядеть намного лучше, но производительность станет заметно ниже (даунсэмплинг).

Производительность

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

Мы использовали наш Large Pixel Collider (суперкомпьютер от сайта PC Gamer), включив две из четырех доступных видеокарт GTX Titan, чтобы продемонстрировать, как сильно разрешение влияет на производительность.

Тесты проводились в бенчмарке Shadow of Mordor:

1980х720 (½ родного разрешения)

2560х1440 (родное разрешение)

5120х2880 (x2 родного разрешения)

Вертикальная синхронизация и разрывы кадров

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

Одним из решений этой проблемы стала вертикальная синхронизация, которая почти всегда присутствует в настройках графики. Она не позволяет игре показывать кадр, пока дисплей не завершит цикл обновления. Это вызывает другую проблему — задержка вывода кадров, когда игра способна показать большее количество FPS, но ограничена герцовкой монитора (например, вы могли бы иметь 80 или даже 100 кадров, но монитор позволит показывать только 60).

Адаптивная вертикальная синхронизация

Бывает и так, что частота кадров игры падает ниже частоты обновления монитора. Если частота кадров игры превышена, вертикальная синхронизация привязывает ее к частоте обновления монитора и она, например, на дисплее с 60 Гц не превысит 60 кадров. А вот когда частота кадров падает ниже частоты обновления монитора, вертикальная синхронизация привязывает ее к другому синхронизированному значению, например, 30 FPS. Если частота кадров постоянно колеблется выше и ниже частоты обновления, появляются подтормаживания.

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

Технологии G-sync и FreeSync

Новые технологии помогают разобраться со многими проблемами, которые зачастую основаны на том, что у дисплеев фиксированная частота обновления. Но если частоту дисплея можно было бы изменять в зависимости от FPS, пропали бы разрывы кадров и подтормаживания. Такие технологии уже есть, но для них нужны совместимые видеокарта и дисплей. У Nvidia есть технология G-sync, а у AMD — FreeSync. Если ваш монитор поддерживает одну из них и она подходит к установленной видеокарте, проблемы решены.

Сглаживание (Anti-aliasing, антиалиасинг)

Инструментов для этого достаточно, но легче объяснить на примере суперсэмплинга (SSAA). Эта технология отрисовывает кадры с более высоким разрешением, чем у экрана, а затем сжимает их обратно до его размера. На предыдущей странице вы могли видеть эффект от сглаживания при уменьшении частоты в Shadow of Mordor с 5120х2880 до 1440p.

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

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

Мультисэмплинг (MSAA): Эффективнее суперсэмплинга, но все еще прожорлив. В старых играх он был стандартом, а его суть объясняется в видео, которое вы увидите ниже.

Усовершенствованный мультисэмплинг (CSAA): более эффективная версия MSAA от Nvidia для ее видеокарт.

Усовершенствованный мультисэмплинг (CFAA): тоже апгрейд MSAA, только от компании AMD для ее карточек.

Метод быстрого приближения (FXAA): вместо анализа каждого отдельного пикселя, FXAA накладывается в качестве фильтра постобработки на всю сцену целиком после ее рендеринга. FXAA также захватывает места, которые пропускаются при включении MSAA. Хотя сам метод быстрого приближения тоже пропускает много неровностей.

Морфологический метод (MLAA): он свойственен видеокартам AMD и тоже пропускает этап рендеринга. MLAA обрабатывает кадр, выискивая алиасинг и сглаживая его. Как нам объяснил Николас Вайнинг: «Морфологическое сглаживание работает с морфологией (паттернами) неровностей на краях моделей; оно вычисляет оптимальный способ удаления лесенок для каждого вида неровностей путем разбиения краев и зубцов на небольшие наборы морфологических операторов. А затем использует специальные типы смешивания для каждого отдельного набора». Включить MLAA можно в панели управления Catalyst.

Улучшенное субпиксельное морфологическое сглаживание (SMAA): еще один вид постобработки, в котором сочетаются детали MLAA, MSAA и SSAA. Такой метод можно совмещать со SweetFX, а многие современные игры поддерживают его изначально.

Временное сглаживание (TAA или TXAA): TXAA изначально разрабатывалась для графических процессоров Nvidia уровня Kepler и более поздних. Но затем появились не настолько специфические формы временного сглаживания, которые обычно обозначаются, как TAA. При таком способе следующий кадр сравнивается с предыдущим, после чего обнаруживаются и устраняются неровности. Происходит это при поддержке разных фильтров, которые уменьшают «ползающую лесенку» в движении.

Николас Вайнинг объясняет: «Идея TAA заключается в ожидании того, что два идущих друг за другом кадра будут очень похожи, ведь пользователь в игре двигается не настолько быстро. Поэтому раз объекты на экране переместились несильно, мы можем получить данные из предыдущего кадра, чтобы дополнить участки, нуждающиеся в сглаживании».

Многокадровое сглаживание (MFAA): появилось с релизом графических процессоров Maxwell от Nvidia. Тогда как MSAA работает с устойчивыми шаблонами, MFAA позволяет их программировать. Представители Nvidia подробно объясняют технологию в видео ниже (о нем мы уже говорили раньше и очень скоро вы его увидите).

Суперсэмплинг с глубоким обучением (DLSS): новейшая технология Nvidia, доступная лишь в некоторых играх и с видеокартами GeForce RTX. По словам компании: «DLSS использует нейронную сеть для определения многомерных особенностей визуализированной сцены и интеллектуального объединения деталей из нескольких кадров для создания высококачественного финального изображения. DLSS использует меньше сэмплов, чем TAA, при этом избегая алгоритмических трудностей с прозрачностями и другими сложными элементами сцен».

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

Производительность

Мы использовали бенчмарк Batman: Arkham City, чтобы протестировать несколько старых методов сглаживания: MSAA, FXAA и TXAA. Результаты, как и ожидалось, показывают, что FXAA требует меньше всего ресурсов, в то время как MSAA и TXAA сильно влияют на среднюю частоту кадров.

Результаты тестирования сглаживания в Batman: Arkham City (на двух Nvidia GTX Titan SLI):

Современные технологии улучшения качества 3D-изображений

Фильтрация текстур

Текстурирование является важнейшим элементом сегодняшних 3D приложений, без него многие трехмерные модели теряют значительную часть своей визуальной привлекательности. Однако процесс нанесения текстур на поверхности не обходится без артефактов и соответствующих методов их подавления. В мире трехмерных игр то и дело встречаются специализированные термины типа «мип-мэппинг», «трилинейная фильтрация» и т.п., которые как раз и относятся к этим методам.

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

Читайте также:  Грузится оперативная память что делать

Представьте себе черно-белую шахматную доску большого, практически бесконечного размера. Допустим, мы рисуем эту доску на экране и смотрим на нее под небольшим углом. Для достаточно удаленных участков доски размеры клеток неизбежно начнут уменьшаться до размера одного пикселя и меньше. Это так называемое оптическое уменьшение текстуры (minification). Между пикселями текстуры начнется «борьба» за обладание пикселями экрана, что приведет к неприятному мельтешению, что является одной из разновидностей эффекта ступенчатости. Увеличение экранного разрешения (реального или эффективного) помогает только немного, потому что для достаточно удаленных объектов детали текстур все равно становятся меньше пикселей.

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

Это текстура шахматной доскиПлоскость с наложенной текстурой. Обратите внимание на искажения, возникающие при уменьшении клеток
Рисунок 6.

Для решения проблем текстурирования применяется так называемая фильтрация текстур. Если разобраться в процессе рисования трехмерного объекта с наложенной текстурой, можно увидеть, что вычисление цвета пикселя идет как бы «наоборот», — сначала находится пиксель экрана, куда будет спроецирована некоторая точка объекта, а затем для этой точки находятся все пиксели текстуры, попадающие в нее. Выбор пикселей текстуры и их комбинация (усреднение) для получения финального цвета пикселя экрана и называется фильтрацией текстуры.

Рисунок 7. Область экрана и ее образ в текстуре

В процессе текстурирования каждому пикселю экрана ставится в соответствие координата внутри текстуры, причем эта координата не обязательно целочисленная. Более того, пикселю соответствует некоторая область в изображении текстуры, в которую могут попадать несколько пикселей из текстуры. Будем называть эту область образом пикселя в текстуре. Для ближних частей нашей доски пиксель экрана становится значительно меньше пикселя текстуры и как бы находится внутри него (образ содержится внутри пикселя текстуры). Для удаленных, наоборот, в каждый пиксель попадает большое количество точек текстуры (образ содержит в себе несколько точек текстуры). Образ пикселя может иметь различную форму и в общем случае представляет собой произвольный четырехугольник.

Рассмотрим различные методы фильтрации текстур и их вариации.

Ближайший сосед (nearest neighbor)

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

Фильтрация методом ближайшего соседаБилинейная фильтрация
Рисунок 8.

Билинейная фильтрация (bilinear)

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

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

Если рассмотреть, как описывалось выше, «образ» пикселя экрана в текстуре, то для случая сильного уменьшения он будет включать в себя очень много пикселей текстуры (вплоть до всех пикселей!). Кроме того, если мы смотрим на текстуру под углом, этот образ будет сильно вытянут. В обоих случаях описанные методы будут работать плохо, поскольку фильтр не будет «захватывать» соответствующие пиксели текстуры.

Для решения этих проблем применяют так называемый мип-мэппинг и анизотропную фильтрацию.

Мип-мэппинг

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

Термин mipmap произошел от латинского multum in parvo — многое в малом. При использовании этой технологии в памяти графического ускорителя в дополнение к изображению текстуры хранится набор ее уменьшенных копий, причем каждая новая ровно в два раза меньше предыдущей. Т.е. для текстуры размером 256×256 дополнительно хранятся изображения 128×128, 64×64 и т.д, вплоть до 1×1.

Далее для каждого пикселя выбирается подходящий уровень мипмапа (чем больше размер «образа» пикселя в текстуре, тем меньший мипмап берется). Далее значения в мипмапе могут усредняться билинейно или методом ближайшего соседа (как описано выше) и дополнительно происходит фильтрация между соседними уровнями мипмапа. Такая фильтрация называется трилинейной. Она дает весьма качественные результаты и широко используется на практике.

Рисунок 9. Уровни мипмапа

Однако проблема с «вытянутым» образом пикселя в текстуре остается. Как раз по этой причине наша доска на большом расстоянии выглядит очень нечеткой.

Анизотропная фильтрация

Анизотропная фильтрация — это процесс фильтрации текстуры, специально учитывающий случай вытянутого образа пикселя в текстуре. Фактически, вместо квадратного фильтра (как в билинейной фильтрации), используется вытянутый, что позволяет более качественно выбрать нужный цвет для экранного пикселя. Такая фильтрация используется вместе с мипмэппингом и дает весьма качественные результаты. Однако, существуют и недостатки: реализация анизотропной фильтрации достаточно сложна и при ее включении скорость рисования значительно падает. Анизотропная фильтрация поддерживается последними поколениями графических процессоров NVidia и ATI. Причем с различным уровнем анизотропии — чем больше этот уровень, чем более «вытянутые» образы пикселей можно корректно обрабатывать и тем лучше качество.

Сравнение фильтраций

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

Ближайший соседБилинейная
ТрилинейнаяАнизотропная
Рисунок 10.

Бамп-мэппинг (Bump mapping)

Бамп-мэппинг (bump mapping) — это тип графических спецэффектов, который призван создавать впечатление «шершавых» или бугристых поверхностей. В последнее время использование бамп-мэппинга стало чуть ли не стандартом игровых приложений.

Основная идея бамп-мэппинга — использование текстур для управления взаимодействием света с поверхностью объекта. Это позволяет добавлять мелкие детали без увеличения количества треугольников. В природе мы различаем мелкие неровности поверхностей по теням: любой бугорок будет с одной стороны светлым, а с другой — темным. Фактически, глаз может и не различать изменения в форме поверхности. Этот эффект и используется в технологии бамп-мэппинга. Одна или несколько дополнительных текстур накладываются на поверхность объекта и используются для вычисления освещенности точек объекта. Т.е. поверхность объекта не меняется вовсе, только создается иллюзия неровностей.

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

Карта нормалей. В этом случае каждый пиксель дополнительной текстуры хранит вектор, перпендикулярный поверхности (нормаль), закодированный в виде цвета. Нормали используются для вычисления освещенности.

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

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

Препроцессированный бамп-мэппинг (Pre-calculated bump mapping)

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

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

Бамп-мэппинг с помощью тиснения (Emboss bump mapping)

Эта технология применялась на первых графических процессорах (NVidia TNT, TNT2, GeForce). Для объекта создается карта смещений. Рисование происходит в два этапа. На первом этапе карта смещений попиксельно складывается сама с собой. При этом вторая копия сдвигается на небольшое расстояние в направлении источника света. При этом получается следующий эффект: положительные значения разницы определяют освещенные пиксели, отрицательные — пиксели в тени. Эта информация используется для соответствующего изменения цвета пикселей основной текстуры.

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

Карта смещенийКарта смещений складывается сама с собой, но сдвинутой на небольшое расстояниеКонечная текстура с эффектом тиснения
Рисунок 11.

Пиксельный бамп-мэппинг (Pixel bump mapping)

Пиксельный бамп-мэппинг — на данный момент вершина развития подобных технологий. В этой технологии все вычисляется максимально честно. На вход пиксельному шейдеру дается карта нормалей, из которой берутся значения нормали для каждой точки объекта. Затем значение нормали сравнивается с направлением на источник света и вычисляется значение цвета.

Эта технология поддерживается в аппаратуре начиная с видеокарт уровня GeForce2.

Объект с основной текстуройКарта нормалейРезультат бамп-мэппинга

Рисунок 12.

Итак, мы увидели, каким образом можно использовать особенности человеческого восприятия мира для улучшения качества изображений, создаваемый 3D-играми. Счастливые обладатели последнего поколения видеокарт NVidia GeForce, ATI Radeon (впрочем, и не только последнего) могут самостоятельно поиграть с некоторыми их описанных эффектов, благо настройки устранения ступенчатости и анизотропной фильтрации доступны из опций драйверов. Эти и другие методы, оставшиеся за рамками данной статьи, успешно внедряются разработчиками игр в новые продукты. В общем, жизнь становится лучше. То-то еще будет!

Анизотропная, билинейная и трилинейная фильтрация

Анизотро́пная фильтра́ция (англ. Anisotropic Filtering, AF) — в трёхмерной графике метод улучшения качества изображения текстур на поверхностях, сильно наклонённых относительно камеры. Как билинейная и трилинейная фильтрация, анизотропная фильтрация позволяет устранять алиасинг на различных поверхностях, но при этом вносит меньше размытия и поэтому позволяет сохранить бо́льшую детальность изображения. Анизотропная фильтрация требует относительно сложного вычисления, и поэтому только около 2004 года она стала «бесплатной» (не снижающей общей кадровой частоты, либо снижающей её незначительно) в графических платах потребительского уровня.

Выбирается MIP-текстура, соответствующая разрешению поперёк направления обзора. Берут несколько текселей вдоль направления обзора (в фильтрации 2x — до двух, в 4x — до четырёх, и т. д.) и усредняют их цвета.

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

Читайте также:  Что значит инициализировать диск

Билинейная фильтрация — процесс извлечения нескольких пикселей исходной текстуры с последующим усреднением их значений для получения окончательного значения пикселя. Понятие «билинейная фильтрация», точно так же, как и сходное понятие «трилинейная фильтрация», применимо только к двумерным текстурам. Для трехмерных, например, данное понятие неприменимо, а понятие трилинейной фильтрации имеет совершенно другое значение.

Трилинейная фильтрация — усовершенствованный вариант билинейной фильтрации.

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

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

С недостаточной резкостью борются, устанавливая отрицательный mip bias — то есть, текстуры берутся более детальные, чем нужно было бы без трилинейной фильтрации.

60. UV-преобразования, сферическое и кубическое текстурирование

UV-преобразование или развёртка в трёхмерной графике (англ. UV map) — соответствие между координатами на поверхности трёхмерного объекта (X, Y, Z) и координатами на текстуре (U, V). Значения U и V обычно изменяются от 0 до 1. Развёртка может строиться как вручную, так и автоматически.

Современное трёхмерное аппаратное обеспечение считает, что UV-преобразование в пределах одного треугольника является аффинным — поэтому достаточно задать U и V для каждой вершины каждого из треугольников. Впрочем, как именно стыковать треугольники друг с другом, выбирает 3D-моделер, и умение строить удачную развёртку — один из показателей его класса. Существует несколько противоречащих друг другу показателей качества развёртки:

Максимально полное использование площади текстуры. Впрочем, в зависимости от разрыва между «минимальными» и «максимальными» системными требованиями, по краям развёртки текстуре нужен определённый «припуск» на генерацию текстур меньшего размера.

Отсутствие областей с недостаточной или избыточной детализацией текстуры.

Отсутствие областей с излишними геометрическими искажениями.

Сходство со стандартными ракурсами, с которых обычно рисуется или фотографируется объект — упрощает работухудожника по текстурам.

Удачно расположенные «швы» — линии, соответствующие одному ребру, но расположенные в разных местах текстуры. Швы желательны, если есть естественный «разрыв» поверхности (швы одежды, кромки, сочленения и т. д.), и нежелательны, если таковых нет. В моделировании персонажей Dota 2 участвовали любители со всего мира, и руководство по моделированиютребовало, чтобы глаза были отдельным «островком» развёртки.

Для частично симметричных объектов: удачное сочетание симметричных и асимметричных участков развёртки. Симметрия повышает детализацию текстуры и упрощает работу художника по текстурам; асимметричные детали «оживляют» объект.

Кубическое текстурирование, кубическая карта (англ. Cube mapping, CubeMap) — методика в трёхмерной компьютерной графике, предназначеная преимущественно для моделирования отражений на поверхности объекта. Суть методики в использвании кубической карты для отображения трёхмерной координаты текстурыв тексель при построении изображений отраженния окружения в поверхности объекта. Кубическая карта представляет собой развёртку шести граней куба, каждая грань которого содержит текстуру. Каждая текстура отображает вид окружения, которое видно из одной точки зрения в шести направлениях. Текстурная координата является вектором, который определяет, как смотреть из центра куба, чтобы получить желаемый тексель.

Cube mapping, как правило, более предпочтительный устаревшей методике Sphere mapping (англ.), так как является более простым для динамической генерации в симуляциях реального времени и имеет меньшее искажение.

ВНИМАНИЕ!
ПЕРЕВОД ГУГЛА!

В компьютерной графике отображения сферы (или отображения сферической окружающей среды) является одним из видов отображения отражения, что приближает отражающие поверхности, рассматривая среду для бесконечно далекой сферической стены. Эта среда хранится в виде текстуры, изображающие то, что зеркальный шар будет выглядеть, если бы он был помещен в окружающую среду, используя ортогональной проекции (в отличие от одного с точки зрения). Эта текстура содержит отражающие данные для всей среды, к тому месту, непосредственно позади сфере исключением. (Для одного примера такого объекта, см. Эшера рисования Рука с Отражая Sphere.)

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

1. Определение и основные виды компьютерной графики. 1

2. Основные области применения компьютерной графики. 1

3. Фрактальная графика. 1

4. Двухмерная и трёхмерная компьютерная графика. 1

5. Дополнительные виды компьютерной графики (пиксельная, ASCII, псевдографика) 1

6. Определение и основные понятия растровой графики. 2

7. Разрешение растрового изображения. 2

8. Разрешение цифрового видео, развёртка и соотношение сторон кадра. 2

9. Глубина цвета в растровой графике. 2

10. Представление цветов в компьютерной графике, цветовая модель. 3

32. Преобразования кривых Бернштейна-Безье. 12

33. Аффинное преобразование и его матричное представление. 13

34. Виды аффинных преобразований. 13

35. . Геометрические сплайновые модели и алгоритмы их построения. 13

36. Способы описания векторного изображения, редактор векторной графики. 13

37. Технологии описания статичной векторной графики (PostScript, VML, PGML) 14

38. Технологии описания динамической векторной графики (SVG, Flash и др.) 14

39. Определение и основные понятия трехмерной векторной графики. 15

11. 40. Параметрическое задание поверхности. 15

41. Кривые поверхности. 15

42. Основные методы 3D моделирования. 16

43. Полигональная сетка, их виды.. 16

44. Файловые форматы полигональных сеток. 16

45. Основные методы и ПО рендеринга. 16

46. Уравнение рендеринга. 17

47. Растеризация, построение проекций. 18

48. Матрица преобразований камеры 3D сцены.. 18

49. Модель и методы освещения в 3D графике. 18

50. Рейкастинг и трассировка лучей. 18

51. Рендеринг в реальном времени. 19

52. Объёмный рендеринг, вокселы. 20

53. Процессы и стадии графического конвейера. 22

54. Низкоуровневые графические API. 25

55. Шейдеры, шейдерные языки. 25

Шейдерные языки. 26

Профессиональный рендеринг. 26

Рендеринг в реальном времени. 27

56. Типы шейдеров. 28

57. Определение, основные понятия и методы текстурирования. 29

58. Рельефное текстурирование. 32

59. Анизотропная, билинейная и трилинейная фильтрация. 34

60. UV-преобразования, сферическое и кубическое текстурирование. 35

Последнее изменение этой страницы: 2016-04-21; Нарушение авторского права страницы

Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур Point, Bilinear, Trilinear, and Anisotropic Texture Filtering Variants

Переопределяет режим фильтрации для соответствующих дискретизаторов текстур. Overrides the filtering mode on appropriate texture samplers.

Интерпретация Interpretation

Различные способы дискретизации текстур по-разному сказываются на производительности и качестве изображения. Different methods of texture sampling have different performance costs and image quality. Ниже перечислены режимы фильтрации в порядке возрастания влияния на производительность и качества изображения: In order of increasing cost—and increasing visual quality—the filter modes are:

точечная фильтрация (наименьшие затраты и качество изображения); Point filtering (least expensive, worst visual quality)

билинейная фильтрация; Bilinear filtering

трилинейная фильтрация; Trilinear filtering

анизотропная фильтрация (наибольшие затраты и наивысшее качество изображения). Anisotropic filtering (most expensive, best visual quality)

Если потери производительности для каждого варианта значительны или растут при использовании более ресурсозатратных режимов фильтрации, можно сравнить эти потери со степенью повышения качества изображения. If the performance cost of each variant is significant or increases with more-intensive filtering modes, you can weigh its cost against its increased image quality. В соответствии с результатами оценки можно признать допустимыми потери производительности, за счет которых повышается качество изображения, либо снизить качество изображения, чтобы увеличить частоту кадров или повысить производительность для решения других задач. Based on your assessment, you might accept additional performance costs to increase visual quality, or you might accept decreased visual quality to achieve a higher frame-rate or to reclaim performance that you can use in other ways.

Если потери производительности оказываются пренебрежимо малы или стабильны вне зависимости от режима фильтрации, например, если GPU имеет очень высокую пропускную способность шейдеров и широкую полосу пропускания памяти, рекомендуем использовать анизотропную фильтрацию, чтобы обеспечить максимальное качество изображения. If you find that performance cost is negligible or steady regardless of the filtering mode—for example, when the GPU that you’re targeting has an abundance of shader throughput and memory bandwidth—consider using anisotropic filtering to achieve the best image quality in your app.

Примечания Remarks

Эти варианты переопределяют состояния дискретизатора при вызове ID3D11DeviceContext::PSSetSamplers , при котором режим фильтрации предоставленного приложением дискретизатора имеет одно из следующих значений: These variants override the sampler states on calls to ID3D11DeviceContext::PSSetSamplers in which the application-provided sampler’s filter mode is one of these:

Для варианта Точечная фильтрация текстур определенный приложением режим фильтрации заменяется на D3D11_FILTER_MIN_MAG_MIP_POINT , для варианта Билинейная фильтрация текстур он заменяется на D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT , а для варианта Трилинейная фильтрация текстур он заменяется на D3D11_FILTER_MIN_MAG_MIP_LINEAR . In the Point Texture Filtering variant, the application-provided filter mode is replaced with D3D11_FILTER_MIN_MAG_MIP_POINT ; in the Bilinear Texture Filtering variant, it’s replaced with D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT ; and in the Trilinear Texture Filtering variant, it’s replaced with D3D11_FILTER_MIN_MAG_MIP_LINEAR .

Для варианта Анизотропная фильтрация текстур определенный приложением режим фильтрации заменяется на D3D11_FILTER_ANISOTROPIC , а свойству «Максимальная анизотропия» присваивается значение 16. In the Anisotropic Texture Filtering variant, the application-provided filter mode is replaced with D3D11_FILTER_ANISOTROPIC , and the Max Anisotropy is set to 16.

Ограничения Restrictions and limitations

В Direct3D на функциональном уровне 9.1 максимальная анизотропия равна 2x. In Direct3D, feature level 9.1 specifies a maximum anisotropy of 2x. Так как вариант Анизотропная фильтрация текстур пытается использовать исключительно 16-кратную анизотропию, воспроизведение завершается сбоем при запуске анализа кадров на устройстве с функциональным уровнем 9.1. Because the Anisotropic Texture Filtering variant attempts to use 16x anisotropy exclusively, playback fails when frame analysis is run on a feature-level 9.1 device. К современным устройствам, на которые распространяется это ограничение, относятся планшеты Surface RT и Surface 2 с ОС Windows на основе архитектуры ARM. Contemporary devices that are affected by this limitation include the ARM-based Surface RT and Surface 2 Windows tablets. Ограничение также может распространяться на более старые GPU, которые, однако, выходят из употребления и встречаются все реже. Older GPUs that might still be found in some computers can also be affected, but they’re widely considered to be obsolete and are increasingly uncommon.

Пример Example

Вариант Точечная фильтрация текстур можно воспроизвести с помощью следующего кода: The Point Texture Filtering variant can be reproduced by using code like this:

Пример Example

Вариант Билинейная фильтрация текстур можно воспроизвести с помощью следующего кода: The Bilinear Texture Filtering variant can be reproduced by using code like this:

Пример Example

Вариант Трилинейная фильтрация текстур можно воспроизвести с помощью следующего кода: The Trilinear Texture Filtering variant can be reproduced by using code like this:

Пример Example

Вариант Анизотропная фильтрация текстур можно воспроизвести с помощью следующего кода: The Anisotropic Texture Filtering variant can be reproduced by using code like this:

Ссылка на основную публикацию
Adblock
detector