Новый метод анизотропной фильтрации
Подробнее об идее и различных способах реализации анизотропной фильтрации текстур можно прочитать в
Обзоре ATI RADEON 7500, на чипах от NVIDIA - в
Обзоре Leadtek WinFast GeForce3 TD, Matrox Parhelia -
в статье, посвященной Matrox Parhelia.
Как известно, анизотропная фильтрация текстур на чипах ATI RADEON, RADEON 7xxx, 8500, 9000 / PRO приводит к совсем незначительному падению производительности. Однако, на полигонах, расположенных относительно зрителя по-разному, качество фильтрации текстур получается совершенно разным. Если на "стенах", "полах" и т.д., то есть, на плоскостях, чьи нормали проецируются на экран горизонтально или вертикально, качество обработки текстур значительно превосходит качество анизотропной фильтрации чипов NVIDIA GeForce3 Ti / GeForce4 Ti, то на плоскостях, лежащих под другими углами, качество фильтрации текстур чипов от ATI может столь же значительно уступать конкурентам.
Это не позволяет дать однозначного ответа на вопрос: "Что же лучше, анизотропная фильтрация от ATI или же анизотропная фильтрация в исполнении NVIDIA GeForce3 Ti / GeForce4 Ti?". На стороне чипов от ATI находится высокая скорость при неоднозначном качестве, соперники в лице чипов от NVIDIA подкупают гарантированно высоким качеством фильтрации текстур, но смущают высокими потерями производительности.
Для того, чтобы проверить, изменилась ли эта ситуация с выходом ATI RADEON 9700 PRO, я выбрал сцену из Serious Sam :The Second Encounter, и, включив режим "полета" ( команда
/cht_bFly=1 в консоли ) посмотрел на эту сцену под разными углами наклона:
В сравнении участвуют ATI RADEON 8500, ATI RADEON 9700 PRO при активизации анизотропной фильтрациии в режимах "Speed" и "Quality" и NVIDIA GeForce4 Ti4600. Для каждой из видеокарт установлена анизотропная фильтрация максимального уровня - 16 для ATI RADEON 8500, ATI RADEON 9700 PRO и 8 - для NVIDIA GeForce4 Ti4600. Дополнительно в настройках игры включена трилинейная фильтрация.
Итак, начинаем с нормального положения игрока - он стоит, как полагается трезвому человеку, вертикально, а полы расположены по горизонтали :). Ниже - фрагменты скриншотов, полученных на разных видеокартах, рядом с ними - фрагменты скриншотов, снятых при включенной "подсветке" MIP-уровней ( команда
/tex_bColorizeMipmaps=1 в консоли, при этом исходная текстура никак не подсвечивается, её первый MIP-уровень - текстура с пониженным вчетверо разрешением - подсвечивается красным, второй - зеленым, третий - синим, и т.д. ).
Угол наклона 0 (0 град.):








Качество анизотропной фильтрации текстур на чипах ATI RADEON 8500 и ATI RADEON 9700 PRO превосходит качество фильтрации текстур на NVIDIA GeForce4 Ti 4600 - чипы от ATI находятся в "благоприятной" для них ситуации.
Режим "Quality" анизотропной фильтрации на ATI RADEON 9700 PRO визуально по качеству не отличается от "Speed", отличие становится видно лишь при "подсветке" MIP-уровней: в режиме "Quality" вместе с анизотропной нормально работает трилинейная фильтрация текстур.
Слегка "наклоняем" игрока, чтобы повернуть горизонтальную поверхность вокруг оси Z, то есть, вокруг линии зрения:
Ага! :) Анизотропная фильтрация на ATI RADEON 8500 уже не превосходит по качеству NVIDIA GeForce4 Ti4600. ATI RADEON 9700 PRO также теряет в качестве фильтрации. Однако, пока о том, что чипы от ATI значительно уступают NVIDIA GeForce4 Ti4600 в качестве фильтрации, говорить рано.
Поворачиваем плоскость дальше:
Поворот плоскости на больший угол привел к еще большей потере качества анизотропной фильтрации текстур на ATI RADEON 8500 и, что печально, на ATI RADEON 9700 PRO тоже. Впрочем, ATI RADEON 9700 PRO обеспечивает чуть более приятную картинку: нет характерной для ATI RADEON 8500 "ряби", а в режиме "Quality", благодаря нормальному функционированию трилинейной фильтрации, пропадают и заметные линиии переключения MIP-уровней.
По скриншотам прекрасно видно, что в этой ситуации чипы от ATI однозначно проигрывают NVIDIA GeForce4 Ti4600 по качеству фильтрации текстур.
Что будет дальше? Сейчас посмотрим. Увеличиваем угол наклона плоскости:
Ситуация усугубляется: MIP-уровни сдвигаются ближе к наблюдателю, и новый чип от ATI, как и RADEON 8500, при таком угле наклона плоскости не впечатляет качеством анизотропной фильтрации.
NVIDIA GeForce4 Ti4600, по-прежнему, обеспечивает одинаковое качество фильтрации текстуры при любых углах наклона плоскости.
Продолжаем эксперимент:
Чёткость текстур на ATI RADEON 8500 падает и падает. Однако, на ATI RADEON 9700 PRO при таком угле наклона текстура выглядит уже лучше, чем в предыдущем случае - алгоритм анизотропной фильтрации на ATI RADEON 9700 был изменен, и новый чип от ATI в этой ситуации выглядит уже не так беспомощно, как ATI RADEON 8500. В то же время, сцена, построенная NVIDIA GeForce4 Ti4600, по-прежнему, выглядит лучше, чем на чипах от ATI.
Заканчиваем издеваться над видеокартами, установив угол наклона плоскости к горизонтали равным 45 градусов:
ATI RADEON 8500 окончательно сдает позиции, в то время как ATI RADEON 9700 PRO возвращает потерянное преимущество и в обоих режимах, "Speed" и "Quality", обеспечивает более качественную фильтрацию текстур по сравнению с NVIDIA GeForce4 Ti4600.
Итак, можно сделать однозначное заключение: алгоритм анизотропной фильтрации текстур на ATI RADEON 9700 PRO усовершенствован по сравнению с тем, что было реализовано в ATI RADEON 8500, и, в целом, качество анизотропной фильтрации текстур на новом чипе от ATI значительно улучшилось. Несомненным плюсом является наличие режима "Quality", при котором вместе с анизотропной можно задействовать и трилинейную фильтрацию текстур. Это окончательно избавляет новый чип от ряда "болезней" анизотропной фильтрации ATI RADEON 8500 - "ряби" на удаленных текстурах, видимых границ переключения MIP-уровней.
Однако, самое неприятное качество анизотропной фильтрации текстур от ATI сохранилось - новый чип, как и ATI RADEON 8500, теряет в качестве фильтрации текстур при некоторых углах наклона. Впрочем, по сравнению с ATI RADEON 8500 всё уже не так фатально: если для первого самыми "неудобными" были поверхности, чьи нормали проецируются на экран под углами +/- 45 градусов, то ATI RADEON 9700 PRO на таких углах наклона обеспечивает отменное качество фильтрации текстур и теряет в качестве уже на "промежуточных" углах - расположенных между горизонталью, вертикалью и диагоналями. При этом качество фильтрации текстур падает весьма заметно, но, всё же, ненастолько сильно, как у ATI RADEON 8500.
Осталось лишь выяснить, к каким потерям в производительности приводит включение анизотропной фильтрации на ATI RADEON 9700 PRO. Об этом - в следующей части статьи.
Новый метод полноэкранного сглаживания - SMOOTHVISION 2.0
SMOOTHVISION 2.0 - развитие SMOOTHVISION на ATI RADEON 8500, 9000/PRO - суперсэмплинга с упорядоченным расположением субпикселов на сетке и числом субпикселов от 2 до 6. SMOOTHVISION 2.0 столь значительно отличается от старого доброго SMOOTHVISION, что, по большому счету, общим в двух этих технологиях является лишь часть названия :).
Итак, каким же стал антиалиасинг от ATI при выходе ATI RADEON 9700 PRO?
SMOOTHVISION 2.0 - это мультисэмплинг. В отличие от SMOOTHVISION, антиалиасинг на ATI RADEON 9700 PRO не является суперсэмплингом - отныне, как и чипы от NVIDIA серии GeForce3 Ti /GeForce4 Ti, новый чип от ATI не производит никаких дополнительных вычислений на "внутренностях" полигона. Два, четыре, либо шесть субпикселов рассчитываются только у тех пикселов, которые лежат на границах полигона. Таким образом значительно снижается количество вычислений и нагрузка на шину памяти. Подробнее о суперсэмплинге и мультисэмплинге, о SMOOTHVISION от ATI и HRAA от NVIDIA можно прочитать в статье
"На пути к Идеальной Картинке" или антиалиасинг на современных игровых видеокартах. SMOOTHVISION 2.0 не имеет ограничений на максимальное разрешение. Как Вы помните, SMOOTHVISION на ATI RADEON 8500, 9000 / PRO имеет ограничения на разрешение.
Это объясняется тем, что максимальные размеры буфера, в котором чипы ATI RADEON 8500, 9000 / PRO строят увеличенное изображение, составляют 2048х2048 пикселей, поэтому, например, суперсэмплинг 4х Quality (2x2) доступен в разрешениях не выше 1024х768 (при этом увеличенный буфер будет иметь размеры 2048х1536), а 6х Quality (2x3) - в разрешениях не выше 800х600 (буфер будет иметь размеры 1600х1800).
С одной стороны, это не столь существенное ограничение - суперсэмплинг 6х буквально "убивает" скорость, поэтому разрешения выше 800х600 для SMOOTHVISION 6x Quality, выходит, не нужны. Однако, с другой стороны, есть еще масса игр, в которых не требуется высокая скорость или нагрузка на видеокарту не столь велика, как в Quake 3 или Serious Sam, и такая вариация суперсэмплинга вполне бы позволила играть без неприятных ощущений...
И что же мы видим? В SMOOTHVISION 2.0 эта проблема исчезла бесследно.
Наконец, самое интересное, - субпикселы при активизации SMOOTHVISION 2.0 располагаются
не на упорядоченной сетке (Ordered Grid) (!).
Это можно проиллюстрировать следующим рисунком:
Такое расположение субпикселов позволяет добиться наилучшего качества сглаживания границ полигонов, расположенных под углами, близкими к горизонтали и вертикали.
Почему таким углам наклона уделяется наибольшее внимание? Не секрет, что самое заметное раздражающее воздействие имеют "ступеньки" как раз на таких гранях полигонов - на гранях, расположенных почти горизонтально или почти вертикально. К тому же, игры - отражение нашей реальности, игровые "уровни" и интерьеры помещений - отражение человеческой архитектуры и дизайна, а здесь у нас преобладают горизонтальные и вертикальные линии :).
Но я отвлекся, возвращаемся к SMOOTHVISION 2.0. Из чего следует вывод, что субпикселы в SMOOTHVISION 2.0 расположены не на упорядоченной, а на искаженной сетке? Из анализа скриншотов. Ниже Вы увидите скриншоты, полученные на различных видеокартах при активизации различных методов антиалиасинга. Скриншоты, на которых границы полигонов расположены близко к горизонтали и вертикали, показывают явное преимущество SMOOTHVISION 2.0 над всеми остальными реализациями антиалиасинга.
Судите сами: если при активизации SMOOTHVISION 2.0 2x разницы по сравнению со SMOOTHVISION 2x Quality и HRAA 4x практически нет, то SMOOTHVISION 2.0 4x и 6х обеспечивают большее количество градаций цветов на границах полигона, а значит, и лучшее качество сглаживания "ступенек".
Рассмотрим частный случай - антиалиасинг SMOOTHVISION 4х Quality или SMOOTHVISION 2.0 4x:
Эти методы используют разбиение пиксела на 4 субпиксела. Соответственно, граница полигона относительно этих субпикселов может располагаться так, что в пределах полигона останутся все 4 субпиксела, только 3 из них, только 2, только 1, и последний вариант - все субпикселы останутся за пределами полигона. При получении конечного цвета пиксела цвет
а всех его субпикселов смешиваются, соответственно, если сцена состоит из красного треугольника на белом фоне, то мы, помимо белого и красного цветов, на границе полигона увидим еще и полутона: 25% красного, 50% красного и 75% красного.
Однако, если граница полигона расположена очень близко к горизонтали или, как показано на рисунке, к вертикали, то вероятность возникновения полутонов "25% красного" и "75% красного" почти нулевая, а при строго вертикальном расположении границы полигона - строго нулевая. То есть, несмотря на то, что используется разбиение пиксела на 4 субпиксела, в этом случае мы увидим лишь один полутон - "50% красного".
В случае же с расположением субпикселов на искаженной сетке наша вертикальная граница получит все полутона с примерно одинаковой вероятностью, и сглаживание "ступенек" будет более качественным.
Итак, SMOOTHVISION 2.0 использует расположение субпикселов на искаженной сетке, и в некоторых случаях это обеспечивает значительно более качественное сглаживание "ступенек".
А теперь - обещанные скриншоты. Для демонстрации антиалиасинга на видеокартах от ATI, NVIDIA и Matrox я использовал сцену из Serious Sam: The Second Encounter. Сцена неинтересная, скучная, зато прекрасно подходящая для наших целей:
Начинаем с углов, "неудобных" для суперсэмплинга и мультисэмплинга с расположением субпикселов на упорядоченной сетке - границы полигонов расположены близко к горизонтали и вертикали:
ATI RADEON 9700 PRO в режимах SMOOTHVISION 2.0 4х и 6х демонстрирует наибольшее количество полутонов на границах полигонов и наилучшее качество сглаживания среди всех протестированных видеокарт. Результат более удачного расположения субпикселов - налицо.
Здесь, как и следовало ожидать, заметного преимущества в качестве SMOOTHVISION 2.0 уже не имеет и все протестированные видеокарты обеспечивают примерно одинаковое качество сглаживания "ступенек" в сравнимых режимах.
На углах наклона границ полигонов в районе 20 градусов и 60 градусов, которые, предположительно, могут оказаться "неудобными" для SMOOTHVISION 2.0, большой разницы в качестве сглаживания границ полигонов на разных видеокартах нет. Разумеется, методы "2х" и "4х", уступают в качестве режимам "6х" SMOOTHVISION, SMOOTHVISION 2.0 и режиму FAA-16x Matrox Parhelia.
Итак, очевидно, SMOOTHVISION 2.0 на ATI RADEON 9700 PRO по качеству сглаживания "ступенек" в большинстве случаев не превосходит SMOOTHVISON на ATI RADEON 8500, 9000 / PRO, но в определенных ситуациях, то есть, когда границы полигонов расположены почти горизонтально или почти вертикально, обеспечивает гораздо более качественное сглаживание "ступенек".
Наличие режима 6x позволяет говорить о том, что в сравнении с антиалиасингом от NVIDIA, использующем максимум 4 субпиксела, SMOOTHVISION 2.0 будет смотреться более выгодно.
SMOOTHVISION 2.0 - это полноценный мультисэмплинг, поэтому при задействовании этой функции текстуры на полигонах останутся без изменений, в отличие от того случая, когда используется суперсэмплинг. Прекрасный пример, иллюстрирующий различия суперсэмплинга и мультисэмплинга при отображении текстур - "прозрачные" текстуры.
Для демонстрации работы различных методов антиалиасинга на видеокартах от ATI, NVIDIA и Matrox я взял сцену из Serious Sam: The Second Encounter. Здесь ветви дерева сделаны в виде полигонов с наложенной на них "прозрачной" текстурой, изображающей листья:
Фрагменты скриншотов этой сцены на разных видеокартах при выключенном и включенном полноэкранном сглаживании:
Прекрасно видно, что только ATI RADEON 8500 и Matrox Parhelia в режиме суперсэмплинга 4х обрабатывают и границы, и внутренние области полигонов - "сглаженными" оказались и хвост ракеты, и края листьев, представленных в виде текстуры с использованием прозрачности. Во всех остальных случаях видеокарты обрабатывают лишь границы полигонов - "сглаженным" оказался лишь хвост ракеты.
О том, к каким потерям производительности приводит включение антиалиасинга на ATI RADEON 9700 PRO и видеокартах-соперниках - в следующей части статьи.
Далее: Часть 3 - тестирование.