Что такое анизотропная фильтрация в играх

Изображение Что такое анизотропная фильтрация в играх

Анизотропная фильтрация – что это?

Когда-то компьютерная игра представляла собой две белые чёрточки по краям чёрного экрана, между которыми прыгал белый квадрат. Квадрат символизировал собой мяч, а чёрточки – ракетки, а игра называлась «Понг».

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

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

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

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

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

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

Текстурирование

В 3D-сцене все объекты являются совокупностью каркасов, абстрактных математических фигур. Как сказал С. Цыпцын, автор книги «Понимая Maya», 3D-сцена это всего лишь мешок с цифрами. Если показать эту сцену человеку без обработки, он увидит только путаницу пересекающихся линий.

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

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

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

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

Минимальной единицей текстуры является тексел – это то же самое, что и пиксель, только конкретно на текстуре. Если в игре подойти в упор к стене, на ней можно увидеть мелкие квадратики и неровности текстуры – это и есть текселы.

Антиалиасинг

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

Особенно сильно это бьёт по текстурам, ведь именно на них линии составляют форму и вид объекта. При низких ресурсах компьютера и настройках графики спинка стула так и норовит превратиться в пилу.

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

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

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

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

Такое применение нескольких текстур позволяет добиваться одновременно гладкости линий и чёткости изображения.

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