Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik_do_lab_robit_ZMM_2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3 Mб
Скачать

Вершинные шейдеры

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

Пиксельные шейдеры

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

Поэтому обработкой пиксельных шейдеров практически всегда зани­маются пиксельные конвейеры графического процессора. Использование пиксельных шейдеров позволило реализовать расчет освещенности объ­ектов методом Фонга, обеспечивающим наивысшую на сегодняшний день реалистичность. Согласно методу Фонга, цвет участка поверхности рас­считывается раздельно в каждом из цветовых каналов и складывается из трех компонентов: фонового освещения (имитирующего естественный рассеянный свет), диффузного отражения (рассеянного света, отражен­ного от поверхности) и зеркального отражения (имитирующего направ­ленное отражение). На практике фоновое освещение используют для того, чтобы подсветить излишне темные участки. Диффузное отражение соот­ветствует отражению света от неровной поверхности. Подобная поверх­ность рассеивает падающий на нее свет практически равномерно по всем направлениям. Но, в отличие от фонового освещения, диффузное отраже­ние учитывает направление на источник света. Главная изюминка метода Фонга кроется в расчете зеркального отражения, учитывающего не толь­ко направление на источник света, но и местоположение наблюдателя.

Технологии трехмерной графики

Уровень детализации LOD (Level of Detail)

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

Таким образом, на каждый момент времени необходимо просчитать для всех объектов в трехмерной сцене необходимую и достаточную cте пень детализации (LOD-уровень). Существуют два подхода к управлению детализацией:

- статический;

- динамический LOD.

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

В технологии динамического, или непрерывного, LOD используют различные алгоритмы, позволяющие более-менее плавно регулировать число полигонов в объекте в зависимости от расстояния до картинной плоскости. Статическое управление иногда вызывает эффект «дерганья» изображения при смене детализации объекта. Если уровень LOD близок к граничному значению, может возникнуть циклическая смена моделей с разным уровнем детали­зации. К тому же приходится обсчитывать несколько разных моделей для одного объекта. Динамическое управление детализацией потребляет зна­чительные вычислительные ресурсы, требует непрерывного пересчета не только координат вершин треугольников, но и параметров освещенности текстур. При частом переключении между уровнями наблюдается эффект «волнистости» поверхности — форма объекта непрерывно «плывет», что при моделировании объектов неживой природы выглядит особенно нере­ально. Часто недостаточный уровень детализации пытаются исправить за счет современных технологий наложения и обработки текстур: Bump Mapping, анизотропной фильтрации, композитных текстур и прочих.

MIP mapping (MIP-текстурирование)

Самым простым способом текстурирования является создание единствен­ной текстуры среднего размера с приличной детализацией и наложение ее на полигоны объекта во всех случаях, когда требуется визуализация. Однако здесь возникают две проблемы. Во-первых, если текстура созда­на с максимально возможным разрешением и детализацией (например, 2048x2048 пикселов при глубине цветового охвата 32 бит), то расход вы­числительных ресурсов и памяти при наложении текстур на все види­мые объекты в трехмерной сцене будет просто фантастическим — ника­кой ускоритель не справится с таким потоком данных. Во-вторых, если уменьшить размер (и тем самым детализацию) текстур, то объекты по мере приближения к плоскости проекции будут выглядеть все более гру­бо. В некоторых играх нередки эффекты, когда при максимальном сбли­жении с объектом его поверхность предстает как набор огромных пя­тен — это означает, что на картинную плоскость попало всего несколько текселов текстуры. То же самое касается и эффекта перспективы — одна и та же текстура, будучи наложена на близкий и удаленный участки объ­екта, вызывает искажение перспективы.

Чтобы обойти такие проблемы, была разработана технология, полу­чившая название MIP mapping. Ее суть заключается в предварительном или динамическом создании набора текстур с различным разрешением и уровнем детализации на основе базовой текстуры максимального раз­решения.

Для выбора конкретно уровня детализации сегодня используют в основном динамический расчет LOD Уровни LOD для текстур можно рассматривать как степени числа 4. Например проецирование текстуры вызывает наложение одного тексела на пиксел, следовательно, уровень LOD определяется как нулевой и выбирается текстура с наивысшей детализацией. Если на пиксел пришлось 4 тексела, уровень LOD составляет 1 поэтому выбирается следующий уровень MIP mapping, которому соответствует текстура с меньшей .детализацией.

Композитные текстуры

Текстуры высокого разрешения занимают огромное место в памяти. Например, текстура размером 1024x1024 пиксела при глубине цветности 16 бит достигает объема 2 Мбайт. Для решения этой проблемы была придумана технология так назы­ваемых композитных текстур, или текстур с детализацией. При таком подходе требуется создать всего две текстуры: базовую и детальную. Базовая текстура содержит основные элементы и как бы создает общий фон. Детальная текстура содержит лишь мелкие элементы, необходимые при рассмотрении объекта вблизи. Обе текстуры смешиваются, причем степень их взаимовлияния определяется исходя из расстояния до плоско­сти проецирования.

Трехмерные текстуры

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

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

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

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

При сильном приближении объекта к плоскости проецирования слу­чается, что в круг попадает меньше четырех текселей, тогда изображе­ние выглядит чрезмерно размытым. Если же плоскость полигона повер­нута относительно плоскости проецирования, круг уже не соответствует реальной форме проекции (овалу, эллипсу или иной фигуре) и эффект перспективы хотя и присутствует (все-таки сказывается аппроксимация по четырем точкам), но все равно существенно искажен. К тому же для определения цвета одного пиксела требуется считывать цвета четырех текселов из памяти, где хранятся текстуры, что увеличивает нагрузку на шину памяти.

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

Метод представляет собой комбинацию технологий MIP mapping и били­нейной фильтрации (билинейной по текстуре и линейной по текстурам). Как известно, в технологии MIP mapping применяют текстуры с разной степенью детализации (и разным разрешением) в зависимости от удален­ности полигона от плоскости проецирования. При трилинейной фильтра­ции берутся две соседние текстуры, одна из которых содержит текселы, попадающие в проекцию, а другая является ближайшей к ней по удален­ности, и к каждой применяют билинейную фильтрацию. В итоге аппроксимация цвета проводится уже по восьми текселам и результат выглядит ближе к реальности, так как текстуры заранее обсчитаны для определенных расстояний. Чтобы не было видно резких скачков от одного мип-уровня к другому, на переходах («не близко и не далеко») ускоритель считает линейную комбинацию цветов, вычисленных по ближним и по дальняя текстурам.

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

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

Внутри куба плоскость проекции может располагаться как угодно — идеале будут учтены все точки, попадающие в проекцию. В зависимости от размера грани куба может быть обсчитано от 8 до 32 текселов для определения цвета единственного пиксела. Результат действительно близок к фотореалистичному, но и расход ресурсов GPU и видеопамяти очень велик.

Environment Map Bump Mapping (EMBM)

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

Сглаживание

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

Технологии устранения дефектов получили название anti-aliasing. Пространственные дефекты сгла­живаются либо локальными, либо глобальными методами. Локальные методы применяют к краям объектов, то есть текселы текстуры, явля­ющиеся краевыми в полигоне, обрабатываются таким образом, чтобы исключить лестничный эффект. Широко распространенной является технология усреднения по площади. Для этого определяется весовое со­отношение текселов, чьи проекции пришлись на данный пиксел. Затем их цвета смешиваются в соответствии с весовыми коэффициентами и при­сваиваются данному пикселу.

Сжатие текстур

Повышение разрешения текстур до 2048x2048 точек при 32-битном цветовом охвате вызвало существенное возрастание требований к объемам памяти, выделяемой для хранения текстурных карт. Ведь на основе базовой текстуры согласно многим технологиям генерируются другие уровни текстурныхкарт.

Одним из пионеров в области сжатия текстур выступила фирма 3Dfx, применив в видеокартах Voodoo технологии YAB Narrow Channel Texture и 8 bit Palletized Texture. Однако согласно данной технологии было необ­ходимо использовать специально созданные под нее текстуры, что сразу отпугнуло других разработчиков. В итоге новшество просуществовало не­долго, поддерживалось лишь в нескольких играх и тихо скончалось с пре­кращением выпуска указанных моделей видеокарт.

Первой по-настоящему общепризнанной технологий сжатия текстур стала S3TC (S3 Texture Compression). В зависимости от характера тексту­ры степень сжатия достигает 6:1. Упаковка и распаковка текстур произ­водится «на лету» и выполняется как программными, так и аппаратными средствами. Это обстоятельство привлекло интерес фирмы Microsoft, и она лицензировала новую технологию у фирмы S3, включив механизм сжатия текстур в библиотеку DirectX (технология получила обозначение DXTC). Однако технология S3TC не является открытой, и потому другие фирмы, использующие ее, вынуждены платить лицензионные отчисле­ния S3.

Понятно, что такое положение многих не устраивало, и вскоре появи­лись технологии сжатия, альтернативные S3TC. В первую очередь это технология FXT1 от фирмы 3Dfx, объявленная открытой. Ее преимуще­ства заключаются в лучшем коэффициенте сжатия, достигающем 8:1, и меньшей потере качества при компрессии текстур.

Несколько особняком стоит технология VTC (Volume Texture Compression) от фирмы nVidia. Она ориентирована исключительно на сжа­тие трехмерных текстур. Известно, что ЗВ-текстуры являются самыми требовательными к объему видеопамяти, однако взамен они обеспечива­ют великолепное качество изображения, близкое к фотореалистичному.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]