Фильтрация и MIP Mapping - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
При работе с текстурами существует немало проблем. У экрана есть свое разрешение и определенное количество пикселей, которые на нем можно отобразить в данной области экрана. Но в соответствующей области виртуального мира количество текселов (текстурных пикселов) может быть и больше, и меньше, чем на экране. Если текстура двумерная и параллельна поверхности экрана, то мудрить ни к чему: каждый тексел перенесется на экран "как есть". Но что делать, если на какую-то область экрана приходится текселов больше, чем возможных пикселов? Какой цвет назначить пикселу, на который в сцене приходится несколько разноцветных текселов? Еще хуже, если луч от пиксела на экране попадает между текселами на сцене, то есть текселов меньше, чем пикселов. Что тогда делать?
Задача формулируется так: как определить цвет конкретного пиксела на экране, если в сцене на него приходится меньше или больше текселов. На заре трехмерной графики эту задачу решали методом, который называется Point Sampling. От каждого пиксела на экране опускается луч вглубь сцены. Тексел, который ближе всех оказывается к этому лучу, и накладывается на экран. При этом неизбежно возникают ошибки. Если текселов на каждый пиксел слишком много, часть информации просто теряется. Если же на пиксел приходится меньше одного тексела (когда объект расположен близко к камере), пробелы восполняются несуществующими пикселами. На практике это выглядит так: когда игрок приближается к объекту, то с удивлением замечает, что виртуальные пикселы его текстуры становятся просто гигантских размеров. Да и само изображение распадается на пикселы, как будто на большом экране поставили маленькое разрешение.
Такой низкокачественный метод современного игрока не устраивает, поэтому существуют методы так называемой билинейной фильтрации (Bi-Linear Filtering). Билинейная фильтрация это техника устранения искажений изображения (фильтрация), таких, как "блочности" текстур при их увеличении. При медленном вращении или движении объекта (приближение/удаление) могут быть заметны "перескакивания" пикселов с одного места на другое, т. е. появляется блочность. Во избежании этого эффекта применяют билинейную фильтрацию, при использовании которой для определения цвета каждого пикселя берется взвешенное среднее значение цвета четырех смежных текселей и в результате определяется цвет накладываемой текстуры. Результирующий цвет пикселя определяется после осуществления трех операций смешивания: сначала смешиваются цвета двух пар текселей, а потом смешиваются два полученных цвета.
Поэтому вместо того чтобы определять цвет пиксела по одному текселу, его цвет получается в результате интерполяции (усреднения) цветов четырех соседних текселов. Если объект расположен далеко от камеры, его текстура почти не искажается. А когда объект недалеко от камеры, и текселов не хватает, интерполяция создает расплывчатое изображение этой области. Билинейная фильтрация хорошо работает только для полигонов, которые параллельны или почти параллельны экрану. Дело в том, что четыре соседних тексела, которые берутся для интерполяции, -- это почти круг. Если плоскость наклоняется, круг медленно, но неумолимо превращается в эллипс. Но интерполируются текселы по-прежнему по кругу. От этого постоянно накапливаются небольшие ошибки. После определенного угла наклона ошибки становятся уже заметными, текстура фильтруется геометрически неправильно, наблюдаются сильные искажения., называемых артефактами. Впрочем, существует целый класс артефактов визуализации, появляющихся в результате наложения текстур и известный под названием "depth aliasing" (депт-алиасинг, ошибки определения глубины сцены, другое название Z-aliasing), от которых билинейная фильтрация не избавляет и не может избавить. Ошибки "depth aliasing" возникают в результате того факта, что объекты более отдаленные от точки наблюдения, выглядят более маленькими на экране. Если объект двигается и удаляется от точки наблюдения, текстурное изображение, наложенное на уменьшившийся в размерах объект становится все более и более сжатым. В конечном счете, текстурное изображение, наложенное на объект, становится настолько сжатым, что появляются ошибки визуализации. Эти ошибки визуализации особенно нежелательны в анимации, где такие артефакты во время движения становятся причиной мерцания и эффекта медленного движения в той части изображения, которая должна быть неподвижной и стабильной.
Есть и еще одна проблема: если игрок видит текстуру намного дальше или намного ближе, чем предполагал разработчик, текстура очень сильно корежится фильтрацией. До поры до времени это не заметно, но со временем в рисунок текстуры закрадываются сильные искажения, своеобразные "помехи". Обе проблемы надо было решать, и решение быстро нашлось в симбиозе двух технологий: трилинейной фильтрации (Tri-Linear filtering) и мип-мэппинга (MIP Mapping).
Для избежания ошибок "depth aliasing" и имитации того факта, что объекты на расстоянии выглядят менее детализированными, чем те, что находятся ближе к точке наблюдения, используется техника, известная как mip-mapping. Если говорить кратко, то mip-mapping - наложение текстур, имеющих разную степень или уровень детализации, когда в зависимости от расстояния до точки наблюдения выбирается текстура с необходимой детализацией.
Mip-текстура (mip-map) состоит из набора заранее отфильтрованных и масштабированных изображений. В изображении, связанном с уровнем mip-map, пиксель представляется в виде среднего четырех пикселей из предыдущего уровня с более высоким разрешением. Отсюда, изображение связанное с каждым уровнем mip-текстуры в четыре раза меньше по размеру предыдущего. Данная версия текстуры называется мип-уровнем, а все мип-уровни вместе -- мип-каскадом. Когда игрок удаляется от текстуры, она сменяется на мип-уровень с меньшим разрешением, а когда приближается -- с большим. Плюсов у этой технологии много. Во-первых, текстура отображается без геометрических искажений. Во-вторых, далеко расположенные текстуры не используют лишние акселераторные ресурсы. Но есть и существенные недостатки. В памяти приходится хранить несколько копий одной и той же текстуры. Переходы между мип-уровнями выполняются резко. Еще год назад вы могли наблюдать в не очень качественных играх характерный артефакт -- полосы мип-мэппинга, выражающиеся в резких переходах между разными версиями одной текстуры.
По-настоящему востребованной оказалась технология, совмещающая MIP Mapping и билинейную фильтрацию и добавляющая в этот процесс несколько новых этапов. Речь идет о трилинейной фильтрации. Цвет конкретного пиксела на экране определяется в результате интерполяции цветов текселов двух соседних мип-уровней. При этом над каждым мип-уровнем предварительно проводится билинейная фильтрация, а для интерполяции берутся не 4, а 8 соседних текселов. За счет этого переход между мип-уровнями становится плавным и незаметным. Трилинейная фильтрация (trilinear filtering) представляет собой технику, которая удаляет артефакты "mip-banding", возникающие при использовании mip-текстурирования. При трилинейной фильтрации для определения цвета пикселя берется среднее значение цвета восьми текселей, по четыре из двух соседних текстур и в результате семи операций смешивания определяется цвет пикселя. При использовании трилинейной фильтрации возможен вывод на экран текстурированного объекта с плавно выполненными переходами от одного mip уровня к следующему, что достигается за счет определения LOD путем интерполяции двух соседних mip-map уровней. Таким образом решая большинство проблем, связанных с mip-текстурированием и ошибками из-за неправильного расчета глубины сцены ("depth aliasing").
С самого начала предполагалось, что разработчики сами должны озаботиться созданием текстур разной степени детализации для разных мип-уровней. Однако разработчики очень часто либо ленятся и добавляют в игру слишком мало мип-уровней, либо вообще не создают мип-уровней, оставляя одну базовую текстуру. Но и на таких недобросовестных разработчиков нашлась своя управа -- авто-мип-мэппинг. Итог: если в игре вам предложат выбрать между билинейной и трилинейной фильтрацией, выбирайте трилинейную, но не надейтесь на чудо.
Венцом эволюции стала анизотропная фильтрация (Anisotropic filtering) -- самая сложная и ресурсоемкая из всех. После всех предыдущих фильтраций и мип-мэппингов все еще остается одна проблема. Более или менее красиво эти алгоритмы работают для текстур, которые располагаются параллельно экрану. Если текстура сильно наклонена, фильтрация в одном направлении выполняется больше, чем надо, а в другом -- меньше. Поэтому и появилась анизотропная фильтрация. Анизотропная фильтрация представляет собой продвинутую технику, следствием применения которой, при корректной реализации, является появление лишь нескольких ошибок визуализации, по сравнению с использованием трилинейной фильтрации. Анизотропная фильтрация может быть реализована с помощью использования выборки по шаблонам (over-sampling или оверсемплинг), в качестве которых могут выступать тексели. Идея в том, что для наложении текстуры на пиксель используется больше текселей, причем количество используемых текселей зависит от применяемого алгоритма. Тем не менее, применение over-sampling серьезно влияет на производительность графического чипсета. Для примера, восьмикратный over-sampling (т. е. когда для наложения текстуры используется восемь текселей) может снизить частоту смены кадров в приложении в восемь раз или больше, по сравнению с тем, что было бы без использования over-sampling..
Во-первых, можно решить проблему "в лоб". Если восьми текселов на пиксел не хватает, почему бы не интерполировать 16, а то и 32? В результате текстура отображается красиво даже на сильно наклоненных поверхностях. Но даже сейчас очень мало акселераторов, которые могут справиться с такими объемами информации, ведь требуется гигантская ширина пропускания памяти. Во-вторых, некоторые разработчики пытаются решить проблему умом. Сцена рендерится не целиком, а "плитками", например, 32х32 пиксела. Для каждой плитки (тайла) применяются очень сложные алгоритмы, которые "делают нам красиво".В настоящее время поддержка трилинейной фильтрации стала стандартной функцией графических чипсетов, так как она обеспечивает вывод трехмерного изображения с высоким качеством при наличии известного количества артефактов визуализации. Более того, все больше и больше появляется графических чипсетов, реализующих трилинейную фильтрацию без ущерба общей производительност. В общем, очевидно, что графические чипсеты, которые поддерживают трилинейную фильтрацию наряду с высокой скоростью заполнения пикселями текстур, будут обеспечивать наивысшее качество визуализации трехмерной графики в ближайшем будущем
Итак, как мы выяснили, текстура прибавляет реалистичности изображению. Но все равно не может полностью заменить сложные полигональные поверхности, которые выглядят значительно лучше. Ведь для них просчитываются перспектива и тени. С другой стороны, и ресурсов эти поверхности требуют много.
Разработчики долгое время пытались найти компромисс между качеством и производительностью -- и придумали bumpmapping. Он позволяет создавать объекты с реалистичной рельефной поверхностью с помощью рельефных карт. Кроме самой текстуры, разработчик готовит карту высот (height map), которая описывает рельеф в виде высот, или же карту смещений нормалей (normal dispmap), описывающую рельеф с помощью нормалей.
Рельефные карты бывают двух видов: карты освещенности и карты смещений. Карта освещенности содержит светлые и темные пятнышки, которые символизируют неоднородность освещения из-за неоднородности рельефа. Карта смещений задает искажения для environment map Рельефные карты обоих типов накладываются на основную текстуру альфа-смещением. Игроку кажется, что поверхность действительно рельефна.
Похожие статьи
-
9. Антиалиасинг - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Ну и напоследок о том, о чем мы упомянули в начале, о том красивом слове, которым очень часто любят щегольнуть игроки, причем далеко не всегда понимая...
-
Полигоны и остальное Вот с полигоном сложилась некая путаница. Классики учат, что полигон -- это любой выпуклый многоугольник, а, программисты, которые...
-
Некоторые хитрости - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Для повышения реалистичности изображения разработчики игр. Сперва эта технология применялась для уменьшения нагрузки на акселератор или процессор (когда...
-
Где не ступала нога Безье... Какими бы безумно-заоблачными не были мощности акселераторов, все равно они смогут обработать только ограниченное число...
-
Видеокарта Видеокарта состоит из двух частей. Это графический процессор (самая большая микросхема видеокарты) и память. Практически это такая же память,...
-
Текстура как она есть - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
При описании процесса рендеринга не был затронут один важный этап -- текстурирование. Не будь текстур, играли бы мы сейчас с вами в экшены с квадратными...
-
Растеризация - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Последний этап конвейера называется растеризацией и обозначается буквой "R". Это единственный этап конвейера, который даже в старых акселераторах...
-
Революция в технологии - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Компания 3dfx выпускает карту VooDoo Banshee, в которой 3D-часть от VooDoo2 была дополнена 2D. Скорость нового творения оставалась по-прежнему высокой,...
-
Пиксели в 3D - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Как известно, любая двумерная картинка, которая выводится на экран монитора, состоит из пикселей. Само слово pixel происходит от picture element --...
-
Как так получается, что на экране оживает почти настоящий, реальный мир, да еще и в 3D? Люди, которые в первый раз встречаются с интерактивным 3D, обычно...
-
Что это такое 3D-акселератор -- сложная штуковина. Несколько десятков миллионов вентилей в основном кристалле, еще несколько -- в сервисных (DDR, RAMDAC...
-
Вместо эпилога: год 2004 - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
NVIDIA GeForce256, GeForce2 В новых драйверах Detonator, серии 5.хх, NVIDIA раньше конкурентов реализовала возможность принудительного включения...
-
Цвет и цветовые модели - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
В компьютерной графике применяют понятие цветового разрешения (другое название - глубина цвета). Оно определяет метод кодирования цветовой информации для...
-
Компания nVidia - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
NVidia Corporation (американская компания) была основана в январе 1993 года Дженсеном Хуангом, Крисом Малаховски и Куртисом Приэмом. Штаб-квартира...
-
Каждый этап конвейера обозначается какой-то буквой. Официально первый этап конвейера называется тесселяция и обозначается буквой "T". Однако программисты...
-
Векторная графика - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Если в растровой графике базовым элементом изображения является точка, то в векторной графике - линия. Линия описывается математически как единый объект,...
-
Цветовая модель HSB - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Цветовая модель HSB разработана с максимальным учетом особенностей восприятия цвета человеком. Она построена на основе цветового круга Манселла. Цвет...
-
В 1920 году была разработана цветовая пространственная модель CIE Lab (Communication Internationale de I'Eclairage - международная комиссия по совещанию....
-
Компания ATI - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Самым старым игроком на рынке видеокарт является компания ATI (Array Technology Industry). Основана она была в 1985 году эмигрантом из Китая Квок-Юэн Хо....
-
Процедурные текстуры - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Наверняка вы видели так называемые "демки" (речь идет не о демо-версиях игр, а о своеобразных программах очень маленького размера (до 64 кб), которые...
-
Фрактальная графика Фрактальная графика основана на математических вычислениях. Базовым элементом фрактальной графики является сама математическая...
-
OpenGL - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
OpenGL -- это универсальная, аппаратно - независимая библиотека, которая поддерживает разнообразные 3D-объекты и конструкции, начиная с примитивов и...
-
Glide, Direct3D - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
В 1995 году на свет появился легендарный 3D-акселератор 3dfx Voodoo. Это был первый массовый акселератор. Но на старых играх, не созданных для Voodoo,...
-
Трехмерная графика - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Трехмерная графика нашла широкое применение в таких областях, как научные расчеты, инженерное проектирование, компьютерное моделирование физических...
-
Все мы пользуемся продуктами высоких технологий. Прогресс -- вещь замечательная. Не будь прогресса, не было бы новых интересных компьютерных игр, не...
-
Графика в компьютере - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и...
-
Первый акселератор Сегодня разница между словами видеокарта и видеоакселератор нивелировалась, и эти слова стали синонимами. Так было не всегда. Давайте...
-
Форматы графических данных В компьютерной графике применяют, по меньшей мере, три десятка форматов файлов для хранения изображений. Но лишь часть из них...
-
Литература - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)
1. http://www. worldofpc. ru/vhis. html 2. http://www. izcity. com/data/hard/print_article528.htm 3. http://www. comprice. ru/arch/2005-14.phtml 4....
-
Что лучше: вектор или растр? - Компьютерная графика
Однозначного ответа на этот вопрос нет. Лучшее качество отображения цветов и текстуры обеспечивают растровые изображения, но вместе с тем они занимают...
-
В качестве доступного инструментария были рассмотрены две открытые кроссплатформенные библиотеки для разработки C++ приложений WxWidgets и Boost ,...
-
МОНИТОРЫ - Аппаратные средства IBM PC
До пятидесятых годов компьютеры выводили информацию только на печатающие устройства. Интересно отметить, что достаточно часто компьютеры тех лет...
-
Программные средства создания растровых изображений Среди программ, предназначенных для создания компьютерной двумерной живописи, самыми популярными...
-
В работе возникает необходимость выбора предметной области, в которой будет тестироваться каскадный классификатор. Главными вопросами на данном этапе...
-
Введение - Компьютерная графика
Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и...
-
Виды компьютерной графики, Фрактальная графика, Трехмерная графика - Компьютерная графика
Фрактальная графика Фрактальная графика основана на математических вычислениях. Базовым элементом фрактальной графики является сама математическая...
-
Современные технологии обработки Больших данных Большой проект бюджетирование автоматизация С приходом новых технологий, инструментов и средств...
-
Фильтрация и сортировка слоев в списке AutoCAD - Работа со слоями в AutoCAD
Слой в AutoCAD - это инструмент для логического группирования данных. Подобно наложению друг на друга прозрачных пленок с элементами чертежа, слои могут...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Кодирование цвета Кодируется цвет графических изображений с помощью бит. Количество бит, с помощью которых закодирован цвет называют битовой глубиной...
Фильтрация и MIP Mapping - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)