VMS_Video (Видеоадаптеры, классификация, особенности строения и работы), страница 2

2016-07-31СтудИзба

Описание файла

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

Онлайн просмотр документа "VMS_Video"

Текст 2 страницы из документа "VMS_Video"

Для реализации краевого антиалиасинга чаще всего используют технику усреднения по площади (area averaging). Цвет пиксела определяется на основании того, насколько каждый полигон перекрывает данный пиксел. Например, как показано на рисунке ниже, пиксел перекрывают два полигона: A и B. Метод усреднения по площади определяет видимые области, занимаемые полигонами, которые "прикасаются" к пикселу, и вычисляет результирующий цвет на основании видимых площадей перекрытия (то есть принадлежащих и пикселу, и полигону). Пусть полигон A занимает 40% площади пиксела, а полигон B – 60%. Результирующий цвет в этом случае определяется цветами A и B c весовыми коэффициентами 40% и 60% соответственно (то есть проводится операция альфа-смешения). Для линий и точек метод тот же самый, в данном случае считается, что линии и точки имеют ненулевую площадь.

К сожалению, альфа-смешение в краевом антиалиасинге приводит к появлению артефакта под названием bleeding (дословно "кровоточение"). Bleeding – окрашивание внутренних ребер в цвет фона, это связано с тем, что между гранями образуется тонкий просвет. Поэтому программа сама должна знать, какие ребра и линии нужно сглаживать. Из-за этого краевой антиалиасинг сложно программировать.

Полный антиалиасинг, в отличие от краевого, направлен на полную нейтрализацию алиасинга. Единственным представителем полного антиалиасинга является субпиксельный антиалиасинг. Субпиксельный антиалиасинг применяется в 3D-ускорителях PVNG, Intel740, nVidia Riva128 и TNT, а также во всех профессиональных OpenGL-ускорителях.

Субпиксельный антиалиасинг в Intel740 и nVidia Riva TNT базируется на технике суперсэмплинга. Суперсэмплинг означает, что вся сцена рендерится в каком-то большом виртуальном разрешении, а затем сжимается до фактического разрешения. В общем случае виртуальное и фактическое разрешения могут быть некратными. Техника суперсэмплинга возможна из-за того, что эти ускорители используют tile-based архитектуру. Ускорителю традиционной архитектуры потребовался бы большой объем памяти (для виртуального разрешения 1600x1200 – более 8 MB). Дело в том, что ускоритель tile-based архитектуры не работает с целым фреймбуфером, а с отдельными фрагментами (tiles). И все данные о субпикселах он хранит только для фрагмента, который рендерится в данный момент.

В 3D-ускорителях серии Glint от 3DLabs используется другой метод, основанный на хранении маски. Рассмотрим случай, когда 1 пиксел разбивается на 16 (4x4) субпикселов (эта техника называется мультисэмплингом), а полигоны рендерятся front-to-back (картинка снизу).

Когда рендерится полигон не переднем плане, субпикселы 2,3,4,7,8,12 окрашиваются в цвет переднего полигона. Причем запоминается, какие субпикселы попали в передний полигон, то есть маска. Эта маска проверяется когда рендерится задний полигон. Субпикселы 1,5,6,9 окрашиваются в цвет заднего полигона. Субпикселы 2,3, принадлежащие обоим полигонам, не изменяют цвет и таким образом остаются с цветом переднего полигона. В результате – никакого bleedingа.

Обратная сторона такого антиалиасинга – это необходимость хранения маски для каждого пиксела и требование сортировки полигонов front-to-back. Второе требование можно обойти, сохраняя z-координату для каждого субпиксела. Однако хранить z-координаты для всех субпикселей на экране невозможно, так как это требует гигантского объема видеопамяти. Поддержку субпиксельного антиалиасинга с z-буферизацией реализует техника аккумулятора. Суть его сводится к тому, что обработка ведется последовательно для каждого пиксела и при этом используется одна и та же память. Недостаток: из-за требования последовательной обработки невозможность аппаратного распараллеливания и как следствие уменьшение производительности в число раз, равное числу субпикселов в пикселе. Например субпиксельный антиалиасинг 4x4 снижает производительность в 16 раз, или другими словами увеличивает Fillrate в 16 раз.

  • Мипмэппинг (MIP-mapping)

Мипмэппинг (MIP-mapping) использует несколько версий одной текстуры с разной степенью детализации (LOD – level-of-detail), причем следующая версия меньше предыдущей в 4 раза (например 128x128, 64x64, 32x32 и т.д.). Такие версии называются мип-уровнями, а все версии одной текстуры – мип-каскадом.

Цели мипмэппинга:

    • Уменьшение времени обработки – для объектов на далеком расстоянии обрабатывать текстуру с низким разрешением гораздо легче

    • Избавление от шума и муара - добавление мип-уровней с низким уровнем детализации

Существует несколько видов мипмэппинга, но все они используют 1 либо 2 соседних мип-уровня. При мипмэппинге, каждый используемый мип-уровень либо увеличивается, либо уменьшается (соотвествие 1:1 статистически редко). Увеличение и уменьшение называются соответственно магнификацией (magnification) и минификацией (minification). И минификация, и магнификация имеет свои недостатки. Минификация приводит к underfilteringу (выражающемуся в муаре и шуме), магнификация - к overfilteringу (выражающемуся в пикселизации или заблюриванию). Чем меньше искажается мип-уровень, тем лучше выглядит текстура в конечном итоге.

Основные виды мипмэппинга:

    • Простой мипмэппинг (nearest mipmapping) без билинейной фильтрации сейчас не используется.

    • Простой мипмэппинг с билинейной фильтрацией. Самый применяемый метод сегодня. Похож на предыдущий метод, но между текселами выполняется интерполяция. При приближении или удалении объекта от наблюдателя выбирается подходящий мип-уровень. При приближении к наблюдателю выбирается мип-уровень с бОльшей степенью детализации, при удалении – с меньшей. Что же будет с мип-уровнем в конкретный момент – будет выполняться минификация или магнификация? Это зависит от конкретной реализации и от параметра, называемого LOD-bias. Если в рендеринге доминирует минификация, то на сцене присутствуют шум и муар. Если доминирует магнификация, то текстуры кажутся более размазанными, но муара/шума нет. Простому мипмэппингу присущ артефакт, выражающийся в резких переходах на текстурированной поверхности (так называемые полосы мипмэппинга). Это происходит при смене степени детализации, если мип-каскад нарисован некачественно.

    • Трилинейная фильтрация (tri-linear filtering). Наиболее аккуратный способ вычисления цвета пиксела. Трилинейная фильтрация более сложна, нежели предыдущие методы. В отличие от простого мипмэппинга, в котором просто выбирается подходящий уровени детализации, здесь проводится интерполяция между двумя соседними мип-уровнями. Благодаря этому полосы мипмэппинга не образуются. При вычислении цвета пиксела используется 8 текселов (4 при билинейной фильтрации) и требует 7 операций смешения (3 при билинейной фильтрации). Использование трилинейной фильтрации дает гораздо более высокое качество изображения для движущихся объектов.

Адаптивная фильтрация частично решает проблему overfilteringа/underfilteringа. Программа выбирает как обрабатывать мип-уровни, отдельно верхний и нижний. Например интерполировать нижний мип-уровень, и не интерполировать верхний мип-уровень, а затем интерполировать полученные текстуры между собой, как при трилинейной фильтрации.

Мипмэппинг предполагает, что разработчик сам создает мип-каскад. Однако многие игры имеют лишь текстуры с одним разрешением. Для решения этой проблемы была придумана техника авто-мипмэппинга. Драйвер 3D-ускорителя сам вычисляет несколько мип-уровней, используя основную текстуру (она становится мип-уровнем с максимальной детализацией). Техника авто-мипмэппинга используется также для увеличения числа мип-уровней, если игра использует недостаточное их количество (например многие игры используют всего 3 мип-уровня для экономии текстурной памяти).

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

  • Морфинг уровня детализации (LOD morphing)

Морфинг уровня детализации (LOD) весьма полезен в играх с большими открытыми пространствами. Его главная цель – обеспечение плавного появления объектов в области видимости игрока. Пример: автомобильный симулятор. Дома, деревья, которые внезапно появляются в области видимости "ниоткуда", вызывают неприятное впечатление. В данном случае, при реализации морфинга уровня детализации дома и деревья появляются полностью прозрачными, а по мере приближения к игроку приобретают очертания, становятся более плотными, и в непосредственной близости становятся полностью непрозрачными.

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

Версии одного объекта для разных уровней детализации могут готовиться на стадии разработки, а могут просчитываться в реальном времени методом прогрессивных сеток (progressive meshes). Прогрессивные сетки поддерживаются Direct3D.

  • Мультитекстурирование (Multitexturing)

Мультитекстурирование – метод рендеринга с использованием нескольких текстур за минимальное число проходов. Текстуры накладываются на объект последовательно, с использованием разного рода арифметических операций. Мультитекстурирование позволяет конвейеризировать наложение текстур с использованием нескольких (обычно двух) блоков текстурирования. Рисунок наглядно демонстрирует выполняемые действия. Первый блок накладывает на пиксел текстуру Tex0, используя операцию Op0, передает пиксел второму блоку. Этот пиксел передается второму блоку, который натягивает на него текстуру Tex1, используя операцию Op1. В это время первый блок не ждет, а переходит к обработке следующего пиксела, и т.д. Мультитекстурирование похоже на конвейеризацию в микропроцессорах, только мультитекстурирование гораздо проще, здесь нет никаких ветвлений и т.п. Операции наложения тумана и альфа-смешения с фрейм-буфером не относятся к мультитекстурированию и выполняются после всех стадий.

Мультитекстурирование может использоваться для эффективной реализации таких эффектов как:

    • карты освещенности (lightmaps)

    • отражения (reflections)

    • морфинг текстур (texture morphing)

    • текстуры с детализацией (detailed textures)

  • Рендеринг (Rendering)

Рендеринг – процесс визуализации трехмерных объектов и сохранение изображения в фрейм-буфере. Рендеринг выполняется по многоступенчатому механизму, называемому конвейером рендеринга. Конвейер рендеринга может быть разделен на 3 стадии: тесселяция, геометрическая обработка и растеризация. Принцип конвейеризации является фундаментальным понятием, в соответствии с ним работают и 3D-ускорители, и 3D-API, – благодаря конвейеру можно рассмотреть работу любого из них. Если взять произвольный 3D-ускоритель, то он не будет ускорять все стадии конвейера, и даже более того, стадии могут лишь частично ускоряться им. Далее мы рассмотрим подробнее стадии конвейера в контексте работы 3D-ускорителей. Традиционно каждую стадию обозначают буквами.

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

    • произвольные треугольники

    • треугольники с горизонтальной нижней или верхней гранью

    • треугольник или четырехугольник с описанием уравнений ребер (бесконечные плоскости)

Также тесселятор должен учитывать, умеет ли работать с сетками (meshes) разных типов. Если 3D-программа разрабатывается на высокоуровневом 3D-API, например Direct3D RM или PowerRender, то ей не надо заботиться обо всех этих деталях, так как такой API имеет свой тесселятор.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее