Рефераты. Видеоадаптеры, классификация, особенности строения и работы p> Основные понятия 3D-графики

. Артефакты (Artefacts)

Артефакт – недостаток, побочный эффект, изъян, присутствующий в изображении. Ниже приводятся названия распространенных артефактов (эти названия используются в описании понятий), и их английские эквиваленты.
Названия в целом условны – у многих предметов нет стандартного названия.
|Размытость |Blur |смазывание мелких |[pic] |
| | |деталей текстуры | |
|Муар |Moire pattern|текстура с |[pic] |
| | |регулярной | |
| | |структурой получает| |
| | |инородный рисунок | |
|Полосы |Mipmap bands |видны границы между|[pic] |
|мипмэппинга | |текстурами с | |
| | |разными | |
| | |мип-уровнями (на | |
| | |рисунке сверху и | |
| | |снизу) | |
|Пикселизация |Pixelization |образование |[pic] |
| | |"квадратов" при | |
| | |сильном | |
| | |растягивании | |
| | |текстуры и | |
| | |отсутствии | |
| | |билинейной | |
| | |фильтрации | |
|Шум |Noise, |текстура теряет |[pic] |
| |sparkling |свою структуру; при| |
| | |движении текстура | |
| | |не двигается, а | |
| | |"шумит" | |
|Нестыковка | |полигоны не |[pic] |
|текстур | |стыкуются между | |
| | |собой, оставляя | |
| | |тонкие светлые или | |
| | |темные промежутки | |
|Лестничный |Jaggies, |зубчатость краев |[pic] |
|эффект |stair-steppin|полигонов и | |
| |g |диагональных линий | |
|Z-алиасинг |Z-aliasing |неправильный расчет|[pic] |
| | |глубины | |

. Альфа-смешение (Alpha blending)

Альфа-смешение – техника создания эффекта полупрозрачности путем объединения исходного пиксела с пикселом, уже находящимся во фрейм-буфере.
Каждому пикселу обычно ставится в соответствие значения красного, зеленого и синего компонентов цвета (R,G,B). Если ставится в соответствие еще альфа- значение, то говорят что пикселы имеют альфа-канал (компонент A в схеме
RGBA). Альфа-значение определяет степень прозрачности конкретного пиксела.
Объекты могут иметь различную прозрачность, например стекло имеет высокий уровень прозрачности (и таким образом низкое альфа-значение), а желе – средний уровень. Альфа-смешение есть процесс комбинирования двух объектов на экране с учетом их альфа-каналов.

Альфа-смешение используется для: антиалиасинга, прозрачности, создания теней, зеркал, тумана.

. Антиалиасинг (Anti-aliasing)

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

Краевой антиалиасинг – механизм борьбы с лестничным эффектом. Краевой антиалиасинг сглаживает края полигонов и диагональные линии. Краевой антиалиасинг применяется в 3D-ускорителях Voodoo Graphics, Voodoo 2, Verite
V2000.

[pic]

[pic] [pic]

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

[pic]

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

[pic]

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

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

[pic]

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

[pic]

Когда рендерится полигон не переднем плане, субпикселы 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 и т.д.).
Такие версии называются мип-уровнями, а все версии одной текстуры – мип- каскадом.

Цели мипмэппинга: o Уменьшение времени обработки – для объектов на далеком расстоянии обрабатывать текстуру с низким разрешением гораздо легче o Избавление от шума и муара - добавление мип-уровней с низким уровнем детализации

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

[pic]

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

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

(4 при билинейной фильтрации) и требует 7 операций смешения (3 при билинейной фильтрации). Использование трилинейной фильтрации дает гораздо более высокое качество изображения для движущихся объектов.

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

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

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.