Информатика в техническом университете / Информатика в техническом университете. Компьютерная графика
.pdf
2.2. Графическая подсистема ЭВМ
середине треугольника не могут быть ярче, чем фрагменты возле вершины. Следовательно, области с резким изменением освещения, такие как блики и источники света, очень близко расположенные к поверхности, будут отображаться неправильно, что особенно заметно в динамике. Частично проблема может быть решена путем увеличения геометрической сложности модели, ее разбиением на большее количество вершин и треугольников, но оптимальным вариантом является попиксельный расчет освещенности.
Необходимо также напомнить о составляющих освещенности. Цвет точки поверхности рассчитывается как сумма ambient, diffuse и specular составляющих от всех источников света в сцене. Вклад в это значение каждого источника света зависит от расстояния между источником света и точкой на поверхности.
Равномерная (ambient) составляющая освещения — аппроксимация глобального освещения, фоновое освещение для каждой точки сцены, при котором все точки освещаются одинаково и освещенность не зависит от других факторов.
Рассеянная, или диффузная (diffuse), составляющая освещения зависит от положения источника освещения и от нормали поверхности. Эта составляющая освещения разная для каждой вершины объекта, что придает им объем. Свет уже не заполняет поверхность ровным, одинаковым оттенком.
Бликовая (specular) составляющая освещения проявляется в бликах отражения лучей света от поверхности. Для ее расчета помимо вектора положения источника света и нормали необходимы еще два вектора: вектор направления взгляда и вектор отражения. Бликовая модель освещения впервые была предложена Фонгом (Phong Bui-Tong). Блики существенно увеличивают реалистичность изображения, поскольку практически все реальные поверхности в той или иной степени отражают свет, поэтому бликовая составляющая очень важна, особенно при моделировании динамики, так как по бликам сразу видно изменение положения камеры или самого объекта. Существуют другие более сложные способы вычисления этой составляющей, учитывающие распределение энергии света, его поглощение материалами и рассеивание в виде диффузной составляющей.
В ранних видеокартах (на базе чипов nVidia Riva TNT) использовались некоторые виды bump mapping (Emboss Bump Mapping), однако методы их реализации в то время были крайне примитивны и широкого применения не получили. Следующим известным видом был Environment Mapped Bump Mapping (EMBM), затем появился Normal Mapping, видеопроцессоры того времени требовали три прохода для реализации алгоритма, так как они были ограничены одновременным использованием только двух текстур. Начиная с версии процессора NV20 (GeForce3) появилась возможность выполнять алгоритм за один проход, используя пиксельные шейдеры. Позднее стали применять более эффективные методы.
Normal Mapping (нормалмэппинг). Это улучшенная разновидность техники bump mapping, описанной выше, ее расширенная версия. Bump mapping был раз-
135
2. Технические средства компьютерной графики
работай Блинном (Blinn) еще в 1978 г. Нормали поверхности при этом методе наложения рельефа изменяются на основе информации из карты нормалей (normal map). В то время как bump mapping всего лишь изменяет существующую нормаль для точек поверхности, normal mapping полностью заменяет нормали путем выборки их значений из специально подготовленной карты нормалей (normal map). Эти карты обычно являются текстурами с сохраненными в них, заранее просчитанными значениями нормалей, представленными в виде компонентов цвета RGB (существуют и специальные форматы для карт нормалей, в том числе со сжатием), в отличие от 8-битных черно-белых карт высот в bump mapping.
Как и bump mapping, normal mapping является достаточно простым методом добавления детализации к моделям сравнительно низкой геометрической сложности без использования сложной реальной геометрии, только более продвинутый. Одно из наиболее интересных применений этого метода — существенное увеличение детализации моделей с малым числом полигонов при помощи карт нормалей, полученных обработкой такой же модели высокой геометрической сложности. Карты нормалей содержат более подробное описание поверхности по сравнению с bump mapping и позволяют представлять более сложные формы.
Карты нормалей по сравнению с простым использованием большого количества полигонов представляют более эффективный способ для хранения подробных данных о поверхностях. Однако их существенным ограничением является то, что они не очень хорошо подходят для крупных деталей, поскольку normal mapping на самом деле не добавляет полигонов и не изменяет форму объекта, он только создает видимость этого. Это всего лишь моделирование деталей на основе расчета освещенности на пиксельном уровне. На крайних полигонах объекта и при больших углах наклона поверхности это очень хорошо заметно. Поэтому наиболее целесообразно применение normal mapping для создания модели с малым числом полигонов, достаточно детализированной для того, чтобы сохранялась основная форма объекта, и использование карты нормалей для добавления более мелких деталей.
Карты нормалей обычно создаются на основе двух версий модели: с малым и большим числом полигонов. Модель с малым числом полигонов состоит из основных форм объекта и имеет простое геометрическое описание, а модель с большим числом полигонов содержит все необходимое для максимальной детализации. Затем при помощи специальных утилит карты сравниваются друг с другом, рассчитывается разница и сохраняется в текстуре, называемой картой нормалей. При ее создании дополнительно можно использовать и bump map для очень мелких деталей, которые нельзя смоделировать даже в модели с большим числом полигонов (поры кожи, различные мелкие углубления и т. п.).
Карты нормалей представляются в виде обычных RGB текстур, где компоненты цвета R, G и В (от 0 до 1) интерпретируются как координаты X, Y и Z. Каждый тексель в карте нормалей представляется как нормаль точки поверхности. Карты нормалей бывают двух видов: с координатами в глобальной системе ко-
136
2.2. Графическая подсистема ЭВМ
ординат или в локальной системе координат треугольника. Чаще применяется второй вид карт.
Современные приложения реального времени часто проигрывают предварительно просчитанной анимации по качеству изображения. Это касается прежде всего качества моделирования освещения и геометрической сложности сцен. Количество вершин и треугольников, рассчитываемых в реальном времени, ограничено, поэтому очень важны методы, позволяющие снизить сложность геометрии. До normal mapping было разработано несколько таких методов, но модели с малым числом полигонов, даже при использовании bump mapping, изображаются хуже более сложных моделей. Normal mapping, несмотря на присущие ему недостатки, заметно улучшает итоговое качество рендеринга, сохраняя низкую геометрическую сложность моделей. Сейчас данный метод весьма популярен и используется во многих компьютерных играх благодаря высокому результирующему качеству изображения и снижению требований к геометрической сложности моделей.
У метода normal mapping есть один недостаток — увеличение сложности текстур. Карта нормалей сильно влияет на то, как будет выглядеть объект, и она должна быть достаточно высокого разрешения, поэтому требования к видеопамяти и ее пропускной способности удваиваются (в случае несжатых карт нормалей). Однако пропускная способность видеопамяти и ее объем непрерывно растут, разработаны методы сжатия специально для карт нормалей, поэтому эти ограничения практически не являются существенными. Гораздо важнее эффект, который дает метод normal mapping, позволяя использовать модели со сравнительно малым числом полигонов, снижая требования к памяти для хранения геометрических данных и повышая производительность.
Displacement Mapping (карта смещения). Наложение карт смещения является методом добавления деталей к трехмерным объектам. В bump mapping и других попиксельных методах картами высот корректно моделируется только освещенность точки, но не изменяется ее положение в пространстве. Это дает лишь иллюзию увеличения сложности поверхности, а карты смещения позволяют получить сложные ЗО-объекты из вершин и полигонов без ограничений, присущих попиксельным методам. Этот метод изменяет положение вершин треугольников, сдвигая их по нормали на величину, исходя из значений в картах смещения.
Карта смещения — обычно черно-белая текстура, и значения в ней используются для определения высоты каждой точки поверхности объекта подобно bump map. Часто карты смещения применяются (в этом случае они называются и картами высот) для создания земной поверхности с холмами и впадинами. Поскольку рельеф местности описывается двухмерной картой смещения, его относительно легко деформировать при необходимости, так как это потребует всего лишь модификации карты смещения и рендеринга поверхности на ее основе в следующем кадре.
Большим преимуществом наложения карт смещения является не просто возможность добавления деталей к поверхности, а практически полное создание
137
2. Технические средства компьютерной графики
объекта. При этом модель объекта с малым числом полигонов разбивается (тесселируется) на большее количество вершин и полигонов. Вершины, полученные в результате тесселяции, затем смещаются по нормали, исходя из значения, прочитанного в карте смещения. В итоге из простого объекта, используя соответствующую карту смещения, получаем сложный ЗБ-объект. Число треугольников, созданных при тесселяции, должно быть достаточно большим для того, чтобы передать все детали, задаваемые картой смещений. Иногда дополнительные треугольники создаются автоматически, используя N-патчи или другие методы. Карты смещения лучше использовать совместно с методом bump mapping для создания мелких деталей, где достаточно правильного попиксельного расчета освещенности.
Наложение карт смещения впервые появилось в DirectX 9.O. Это была первая версия данного API, которая поддерживала метод Displacement Mapping. В DX9 поддерживается два типа наложения карт смещения: filtered и presampled. Filtered метод отличается тем, что позволяет использовать мип-уровни для карт смещения и применять для них трилинейную фильтрацию. В этом методе мипуровень карты смещения выбирается для каждой вершины на основе расстояния от вершины до камеры, т. е. уровень детализации выбирается автоматически. Таким образом достигается почти равномерное разбиение сцены, когда треугольники имеют примерно одинаковый размер.
Наложение карт смещения можно, по существу, считать методом сжатия геометрии. Использование карт смещения снижает объем памяти, требуемый для определенной детализации ЗО-модели. Громоздкие геометрические данные замещаются простыми двухмерными текстурами смещения, обычно 8-битными или 16-битными. Это снижает требования к объему памяти и пропускной способности, необходимой для доставки геометрических данных видеопроцессору, а эти ограничения являются одними из основных для современных систем. Или же при равных требованиях к пропускной способности и объему памяти наложение карт смещения позволяет отображать намного более сложные геометрические ЗО-модели. Применение моделей меньшей сложности, когда вместо сотен тысяч или миллионов треугольников используют десятки тысяч, позволяет ускорить их анимацию или улучшить, применив более сложные комплексные алгоритмы и методы вроде имитации тканей (cloth simulation).
Другое преимущество карт смещения состоит в том, что их применение превращает сложные полигональные трехмерные сетки в несколько двухмерных текстур, которые проще поддаются обработке. Кроме того, вместо сравнительно сложных алгоритмов сжатия трехмерных сеток можно применять обычные методы сжатия текстур, даже подобные JPEG. А для процедурного создания моделей ЗО-объектов можно использовать обычные алгоритмы для двухмерных текстур.
Однако карты смещения в некоторых ситуациях использовать нельзя. Например, гладкие объекты, не содержащие большого количества тонких деталей, будут лучше представлены в виде стандартных полигональных сеток или иных поверхностей более высокого уровня. Кроме того, очень сложные модели, такие
138
2.2. Графическая подсистема ЭВМ
как деревья или растения, также нелегко представить картами смещения. Существуют также проблемы их применения — это почти всегда требует специализированных утилит, поскольку достаточно сложно непосредственно создавать карты смещения (за исключением простых объектов, вроде ландшафта). Многие проблемы и ограничения, присущие картам смещения, аналогичны проблемам наложения карт нормалей, поскольку эти два метода представляют собой два разных подхода к реализации похожей идеи.
Parallax Mapping/Offset Mapping. После метода normal mapping, представленного в 1984 г., был разработан метод рельефного текстурирования (Relief Texture Mapping), представленный Olivera и Bishop в 1999 г. Этот метод для наложения текстур основан на информации о глубине. Метод не нашел применения в играх, но его идея способствовала продолжению работ над методом parallax mapping и его улучшением. Kaneko в 2001 г. представил метод parallax mapping, который стал первым эффективным методом для попиксельного отображения эффекта параллакса. В 2004 г. Welsh продемонстрировал применение метода parallax mapping на программируемых видеопроцессорах. У этого метода много различных названий: Parallax Mapping, Offset Mapping, Virtual Displacement Mapping, Per-Pixel Displacement Mapping. Далее применяется первое и основное название.
Parallax Mapping — одна из альтернатив методам bump mapping и normal mapping, которая дает еще большее представление о деталях поверхности, более натуралистичное отображение ЗО-поверхностей также без слишком больших потерь производительности. Этот метод похож одновременно на наложение карт смещения и normal mapping (нечто среднее между ними). Метод также предназначен для отображения большего количества деталей поверхности, чем имеется в исходной геометрической модели. Отличие состоит лишь в том, что данный метод искажает наложение текстуры, изменяя текстурные координаты так, что поверхность выглядит выпуклой, хотя в реальности она плоская и не изменяется. Иными словами, метод parallax mapping — метод аппроксимации эффекта смещения точек поверхности в зависимости от изменения точки зрения.
В этом методе сдвигаются текстурные координаты (поэтому его иногда называют offset mapping) так, чтобы поверхность выглядела более объемной. Идея метода состоит в том, чтобы возвращать текстурные координаты той точки, где видовой вектор пересекает поверхность. Это требует просчета лучей (рейтрейсинг) для карты высот, но если она не имеет сильно изменяющихся значений (гладкая или плавная), то можно обойтись аппроксимацией. Данный метод эффективен для поверхностей с плавно изменяющимися высотами, без просчета пересечений и больших значений смещения. Подобный простой алгоритм отличается от normal mapping всего тремя инструкциями пиксельного шейдера: две математические инструкции и одна дополнительная выборка из текстуры. После того, как вычислена новая текстурная координата, она используется дальше для чтения других текстурных слоев: базовой текстуры, карты нормалей и т. п. Метод parallax mapping на современных видеопроцессорах почти также эффекти-
139
2. Технические средства компьютерной графики
вен, как обычное наложение текстур, а в результате получается более реалистичное отображение поверхности по сравнению с методом normal mapping.
Однако использование parallax mapping ограничено картами высот с небольшой разницей значений. Резкие неровности обрабатываются алгоритмом некорректно, появляются различные артефакты, «плавание» текстур и пр. Было разработано несколько модифицированных методов для улучшения техники parallax mapping. Несколько исследователей (Yerex, Donnelly, Tatarchuk, Policarpo) предложили новые методы, улучшающие начальный алгоритм. Почти все идеи этих методов основаны на трассировке лучей в пиксельном шейдере для определения пересечений деталей поверхностей друг другом. Модифицированные методы получили несколько разных названий: Parallax Mapping with Occlusion, Parallax Mapping with Distance Functions, Parallax Occlusion Mapping. Для краткости будем их все называть Parallax Occlusion Mapping.
Методы Parallax Occlusion Mapping включают еще и трассировку лучей для определения высот и учета видимости текселов. Поскольку при взгляде под углом к поверхности текселы загораживают друг друга, то учитывая это, можно добавить к эффекту параллакса больше глубины. Получаемое изображение становится реалистичнее и такие улучшенные методы можно применять для более глубокого рельефа, он отлично подходит для изображения кирпичных и каменных стен, мостовой и подобных поверхностей. Главное отличие метода Parallax Mapping от метода Displacement Mapping состоит в том, что все расчеты являются попиксельными, а не повершинными. Именно поэтому метод имеет названия Virtual Displacement Mapping и Per-Pixel Displacement Mapping.
Метод Parallax Mapping позволяет эффективно отображать детализированные поверхности без миллионов вершин и треугольников, которые потребовались бы при геометрической реализации. При этом сохраняется высокая детализация (кроме силуэтов/граней) и значительно упрощаются расчеты анимации. Этот метод проще, чем метод реальной геометрии, в нем используется значительно меньшее количество полигонов, особенно в случаях с очень мелкими деталями.
Дополнительное преимущество метода состоит в том, что карты высот могут динамически изменяться (поверхность воды с волнами, дырки от пуль в стенах и многое другое). К недостаткам данного метода можно отнести отсутствие геометрически правильных силуэтов (краев объекта), поскольку алгоритм попиксельный и не является настоящим Displacement Mapping. Однако он снижает требования к производительности в результате уменьшения затрат на трансформацию, освещение и анимацию геометрии и экономит видеопамять, необходимую для хранения больших объемов геометрических данных.
Композитные текстуры. Текстуры высокого разрешения занимают огромное место в памяти. Например, текстура размером 2048 х 2048 пикселов при глубине цветности 32 бита достигает объема 16 Мбайт. Очевидно, что затраты видеопамяти при использовании таких текстур будут очень большие, и придется хранить часть текстур в ОП, что дополнительно нагружает шину видеоадаптера, занятую передачей данных для обсчета полигонов.
140
2.2. Графическая подсистема ЭВМ
Для решения этой проблемы была предложена технология так называемых композитных текстур, или текстур с детализацией. При таком подходе требуется создать всего две текстуры: базовую и детальную. Базовая текстура содержит основные элементы и как бы создает общий фон, детальная текстура — лишь мелкие элементы, необходимые при рассмотрении объекта вблизи. Обе текстуры смешиваются, причем степень их взаимовлияния определяется исходя из расстояния до плоскости проецирования.
Алгоритм наложения текстур может реализовываться по-разному в зависимости от выбора разработчиков. Например, часто используют смешение с помощью альфа-канала или мультитекстурирования. В результате на большом расстоянии видна только базовая текстура, а по мере приближения объекта к картинной плоскости начинает проявляться детальная текстура. Пошаговый метод реализации основан на механизме MIP mapping и мультитекстурировании, т. е. с помощью механизма LOD определяется уровень MIP-каскада для выборки соответствующей детальной структуры (напомним, что базовая текстура остается неизменной). Затем детальная структура накладывается на базовую — и результат отправляется в буфер кадра. Очевидно, что при такой методике уровень детализации меняется дискретно, скачками. Будет ли это заметно пользователю, зависит от искусства разработчиков.
Смешение с помощью альфа-канала позволяет организовать динамическое изменение уровня детализации. Реализовать этот алгоритм достаточно просто, построив функцию зависимости степени прозрачности детальной текстуры от уровня LOD (Level-of-Detail — уровень детализации) и направления движения объекта (к картинной плоскости или в глубину).
Трехмерные текстуры. Элемент трехмерной текстуры представляет собой некоторый кубический объем. Каждая точка внутри текстурного куба имеет присвоенный ей цвет. Конечно, на самом деле трехмерный объект в компьютерной графике состоит из конечного числа точек (текселов), и потому его удобно представлять как конечный набор слоев (плоских текстур), текселы которых образуют узловые точки трехмерной текстуры.
Полигону, на который накладывается трехмерная текстура, присваиваются такие локальные координаты вершин, чтобы он оказался сечением куба. При этом не обязательно, чтобы полигон целиком помещался в объем куба. Обычно точке полигона вне куба присваивается цвет ближайшей граничной точки трехмерной текстуры.
Поскольку полигон может занять по отношению к кубу любое положение, лишь бы выполнялось сечение, возможны варианты, когда нельзя однозначно соотнести точку на полигоне и тексел трехмерной текстуры. В этом случае применяют либо прямое присваивание цвета ближайшей узловой точке, либо трилинейную фильтрацию, т. е. линейную аппроксимацию по восьми ближайшим узловым точкам.
Важным свойством трехмерных текстур является способность реалистично имитировать материалы с характерной внутренней структурой. Например, для
141
2. Технические средства компьютерной графики
моделирования деревянной конструкции достаточно создать ее полигональную модель, затем разработать трехмерную текстуру, имитирующую рисунок деревянной поверхности и присвоить ее полигонам. При этом необходимость в рисовании текстур для каждого полигона и соединении их на границах уже отпадает. Кроме этого трехмерные текстуры позволяют реалистично имитировать спецэффекты, природные явления и даже движение тел. На самом деле, если поместить полигон последовательно с заданным сдвигом в трехмерную текстуру и также последовательно его отображать, меняя только одну координату, получится эффект анимации. Подобным методом можно имитировать огонь, блики на поверхности воды и металлов, множество других эффектов. Особое место занимает возможность правдоподобной имитации объемных эффектов: дыма, взрывов, локального тумана достаточно простыми способами по сравнению с технологией систем частиц.
Методы фильтрации текстур. Вычисление цвета точки полигона, попавшей между жирными точками текстуры, называется фильтрацией. Очевидно, что цвет пиксела проекции трехмерного объекта на экран должен однозначно определяться цветом тексела соответствующей текстуры. Однако это правило действует только в простых случаях при направлениях проецирования, близких к нормали, и соответствующем удалении от картинной плоскости. Дело в том, что как пиксел, так и тексел только в математическом смысле именуются точками. Физически они имеют вполне конкретные размеры и выглядят как окружности, диаметр которых зависит от разрешения экрана монитора и текстуры соответственно. Как только угол проецирования выходит за определенные рамки, бывает, что на один пиксел проецируются два и более тексела, так что проекция становится близкой к овалу. Если же объект очень близок к плоскости проецирования, может произойти обратное — один тексел будет проецироваться на несколько пикселов.
В простейшем случае для улучшения качества изображения применяют поточечную выборку, т. е. цвет пиксела определяется по цвету тексела, расположенного в центре образованной его проекцией фигуры. Конечно, результат выглядит достаточно грубым, так как не учитываются ни цвета других пикселов, входящих в проецируемую фигуру, ни ее форма. Если такая текстура наложена на объект, уходящий в глубину сцены, эффект перспективы оказывается сильно искаженным.
Билинейная фильтрация. Метод расчета цвета по среднему арифметическому четырех ближайших соседей точки называют билинейной фильтрацией. В этом случае считается, что проекция представляет собой круг, а цвет пиксела рассчитывается путем аппроксимации цветов четырех текселов, как бы образующих данный круг.
При сильном приближении объекта к плоскости проецирования бывает, что в круг попадает меньше четырех текселов, тогда изображение выглядит чрезмерно размытым. Если же плоскость полигона повернута относительно плоскости проецирования, круг уже не соответствует реальной форме проекции (овалу,
142
2.2. Графическая подсистема ЭВМ
эллипсу или иной фигуре) и эффект перспективы хотя и присутствует (все-таки сказывается аппроксимация по четырем точкам), но все равно существенно искажен. К тому же для определения цвета одного пиксела требуется считывать цвета четырех текселов из памяти, где хранятся текстуры, что увеличивает нагрузку на шину памяти.
Трилинейная фильтрация. Этот метод представляет собой комбинацию технологий MIP mapping и билинейной фильтрации (билинейной по текстуре и линейной по текстурам). В технологии MIP mapping применяют текстуры с разной степенью детализации (и разным разрешением) в зависимости от удаленности полигона от плоскости проецирования. При трилинейной фильтрации берутся две соседние текстуры, одна из которых содержит текселы, попадающие в проекцию, а другая является ближайшей к ней по удаленности, и к каждой применяют билинейную фильтрацию. В итоге аппроксимация цвета проводится уже по восьми текселам и результат выглядит ближе к реальности, так как текстуры заранее обсчитаны для определенных расстояний. Чтобы не было видно резких скачков при переходах от одного MIP-уровня к другому, видеопроцессор определяет линейную комбинацию цветов, вычисленных по ближним и по дальним текстурам.
Анизотропная фильтрация. Самым эффективным методом фильтрации является анизотропная (неоднородная по разным направлениям). Существуют различные алгоритмы анизотропной фильтрации, суть которых состоит в возможно более точном учете формы проекции при различном положении текстурированного полигона по отношению к проецируемой плоскости, т. е. вокруг центра проекции строится виртуальный куб из наложенных друг на друга текселов текстур разного уровня детализации, которые теоретически пересекает проекция.
Внутри куба плоскость проекции может располагаться как угодно — в идеале будут учтены все точки, попадающие в проекцию. В зависимости от размера грани куба может быть обсчитано от 8 до 32 текселов для определения цвета единственного пиксела. Результат действительно близок к фотореалистичному, но и расход ресурсов GPU и видеопамяти очень велик.
Environment Map (EM). Environment Map — карта окружающей среды (иногда ее называют картой отражения) — служит для отражения в объекте свойств окружающего пространства. Карты отражения либо создаются заранее при разработке игры (обычно используются сферические карты среды), либо в ходе построения трехмерной сцены (кубические карты среды).
Визуальные свойства карт окружающей среды можно сделать зависимыми от направления линии визирования (что соответствует правилам физической оптики). В целях ускорения обработки трехмерной сцены разработчики иногда не предусматривают изменения карты среды в зависимости от направления линии визирования.
Более качественным является метод создания кубических карт окружающей среды в ходе построения трехмерной сцены. По сути дела, для этого необходимо предварительно выполнить рендеринг сцены относительно объекта, к которому
143
2. Технические средства компьютерной графики
применяется технология ЕМВМ. Затем попиксельное состояние окружения записывается в кубическую (Cube Map) текстурную карту, которая и накладывается на объект.
Сжатие текстур. Повышение разрешения текстур до 2048x2048 точек при 32-битном цветовом охвате вызвало существенное возрастание требований к объему памяти, выделяемой для хранения текстурных карт. Ведь на основе базовой текстуры, согласно многим технологиям, генерируются другие уровни текстурных карт. Кроме того, часто применяют и прочие карты: освещенности, рельефа, окружающей среды и т. д. Очевидно, что хранить большой объем данных в обычном виде становится нерациональным. Разработчики видеоадаптеров предлагают использовать различные методы сжатия данных для текстурных карт. Здесь существенны два требования: сжатие практически без потери качества и обработка данных «на лету» в процессе преобразования и наложения текстур.
Первой по-настоящему общепризнанной технологией сжатия текстур стала технология S3TC (S3 Texture Compression). В зависимости от характера текстуры степень сжатия достигает 6:1. Распаковка текстур производится «на лету» и выполняется как программными, так и аппаратными средствами. Это обстоятельство привлекло интерес фирмы Microsoft, и она лицензировала новую технологию у фирмы S3, включив механизм сжатия текстур в библиотеку DirectX (технология получила обозначение DXTC).
Вскоре появились технологии сжатия, альтернативные S3TC — технология FXT1 от фирмы 3Dfx, объявленная открытой. Ее преимущества заключаются в большем коэффициенте сжатия, достигающем 8:1, и меньшей потере качества при компрессии текстур.
Несколько особняком стоит технология VTC (Volume Texture Compression) от фирмы nVidia. Она ориентирована исключительно на сжатие трехмерных текстур. Известно, что ЗО-текстуры являются самыми требовательными к объему видеопамяти, однако взамен они обеспечивают великолепное качество изображения, близкое к фотореалистичному.
Методы улучшения изображения. Дефекты изображения, возникающие при рендеринге трехмерной сцены, носят различный характер. Обычно пространственные искажения выражаются в ступенчатости прямолинейных границ объектов, потере мелких деталей изображения, появлении муара (регулярной структуры на изображении, не предусмотренной разработчиками), искажении текстур. Особым видом являются дефекты, связанные с непреднамеренной анимацией сцены, например мерцание объектов, обусловленное постоянными переключениями между ступенями LOD.
Технологии устранения ступенчатости прямолинейных границ объектов получили название антиалиасинг, или сглаживание. Пространственные дефекты сглаживаются либо локальными, либо глобальными методами. Глобальные методы применяют ко всей области картинной плоскости. До недавнего времени основной в ЗБ-ускорителях фирмы ATI была технология сглаживания дефектов сцены (FSAA — Full scene anti-aliasing), использующая метод масштабирования
144
