Пристрій, який називається відеоадаптером (або відеоплати,відкритий), є в кожному комп'ютері. У вигляді пристрою, інтегрованогов системну плату, або в якості самостійного компоненту - платирозширення. Головна функція, виконувана відеокартою, це перетворенняотриманої від центрального процесора інформації і команд у формат, якийсприймається електронікою монітора, для створення зображення на екрані.
Монітор зазвичай є невід'ємною частиною будь-якої системи, за допомогоюякого користувач одержує візуальну інформацію. p>
Стандартні типи відеоадаптерів p>
MDA (Monochrome Display Adapter - монохромний адаптер дисплея) --найпростіший відеоадаптер, що застосовувався в перших IBM PC. Працює втекстовому режимі з роздільною здатністю 80x25 (720x350, матриця символу - 9x14),підтримує п'ять атрибутів тексту: звичайний, яскравий, інверсний, підкресленийі миготливий. Частота рядкової розгортки - 15 КГц. Інтерфейс із монітором --цифровий: сигнали синхронізації, основною відеосигнал, додатковийсигнал яскравості. p>
HGC (Hercules Graphics Card - графічна карта Hercules) - розширення
MDA з графічним режимом 720x348, розроблене фірмою Hercules. P>
CGA (Color Graphics Adapter - кольоровий графічний адаптер) - першаадаптер з графічними можливостями. Працює або в текстовому режимі здозволами 40x25 і 80x25 (матриця символу - 8x8), або в графічному здозволами 320x200 або 640x200. У текстових режимах є 256атрибутів символу - 16 кольорів символу і 16 кольорів фону (або 8 кольорів фонуі атрибут миготіння), в графічних режимах є чотири палітри по чотирикольору кожна в режимі 320x200, режим 640x200 - монохромний. Висновокінформації на екран вимагав синхронізації з розгорткою, у противному випадкувиникали конфлікти з відеопам'яті, що проявляються у вигляді "снігу" на екрані.
Частота рядкової розгортки - 15 КГц. Інтерфейс із монітором - цифровий:сигнали синхронізації, основною відеосигнал (три канали - червоний, зелений,синій), додатковий сигнал яскравості. p>
EGA (Enhanced Graphics Adapter - поліпшений графічний адаптер) --подальший розвиток CGA, застосоване в першу PC AT. Додано дозвіл
640x350, що в текстових режимах дає формат 80x25 при матриці символу 8x14і 80x43 - при матриці 8x8. Кількість одночасно відображаються - по -як і раніше, 16, однак палітра розширена до 64 кольорів (по два розряду яскравостіна кожен колір). Введено проміжний буфер для передається на моніторпотоку даних, завдяки чому відпала необхідність у синхронізації прививедення в текстових режимах. структура відеопам'яті зроблена на основі такзваних бітових площин - "шарів", кожен з яких у графічномурежимі містить біти тільки свого кольору, а в текстових режимах поплощинах розділяються власне текст і дані знакогенератора. Суміснийз MDA та CGA. Частоти рядкової розгортки - 15 і 18 КГц. Інтерфейс змонітором - цифровий: сигнали синхронізації, відеосигнал (по дві лінії накожен з основних кольорів). p>
MCGA (Multicolor Graphics Adapter - багатобарвний графічний адаптер) --введений фірмою IBM в ранніх моделях PS/2. Додано дозвіл 640x400
(текст), що дає формат 80x25 при матриці символу 8x16 і 80x50 - приматриці 8x8. Кількість відтворюваних кольорів збільшено до 262144 (по 64рівня на кожний з основних кольорів). Крім палітри, введено поняттятаблиці кольорів, через яку виконується перетворення 64-кольоровогопростору кольорів EGA в простір квітів MCGA. Введено також відеорежим
320x200x256, у якому замість бітових площин використовується поданняекрану безперервної областю пам'яті об'ємом 64000 байт, де кожен байтописує колір відповідної йому точки екрана. Сумісний з CGA по всіхрежимам, а з EGA - по текстовим, за винятком розміру матриці символу.
Частота рядкової розгортки - 31 КГц, для емуляції режимів CGA використовуєтьсятак зване подвійне сканування - дублювання кожного рядка формату
Nx200 в режимі Nx400. інтерфейс з монітором - аналогово-цифpового: цифровісигнали синхронізації, аналогові сигнали основних кольорів, що передаютьсямонітора без дискретизації. Підтримує підключення монохромного монітораі його автоматичне розпізнання - при цьому у відео-BIOS включається режимпідсумовування кольорів за так званою шкалою сірого (grayscale) дляотримання напівтонового чеpно-білого зображення. Підсумовування виконуєтьсятільки при виведенні через BIOS - при безпосередній записи в відеопам'ять намонітор потрапляє тільки сигнал зеленого кольору (якщо він не має вбудованогоцветосмесітеля). p>
VGA (Video Graphics Array - безліч, або масив, візуальної графіки)
- Розширення MCGA, сумісний з EGA, введений фірмою IBM в середніх моделях
PS/2. Фактична стандарт відеоадаптера з кінця 80-х років. Дата долученнятекстовий режим 720x400 для емуляції MDA і графічний режим 640x480 здоступом через бітові площині. У режимі 640x480 використовується такзвана квадратна точка (співвідношення кількості пікселів по горизонталі івертикалі збігається із стандартним співвідношенням сторін екрана - 4:3).
Сумісний з MDA, CGA і EGA, інтерфейс з монітором ідентичний MCGA. P>
IBM 8514/а - спеціалізований адаптер для роботи з високимидозволами (640x480x256 і 1024x768x256), з елементами графічногоприскорювача. Не підтримує відеорежими VGA. інтерфейс з монітороманалогічний VGA/MCGA. p>
IBM XGA - наступний спеціалізований адаптер IBM. розширено колірнепростір (режим 640x480x64k), доданий текстовий режим 132x25
(1056x400). Інтерфейс із монітором аналогічний VGA/MCGA. P>
SVGA (Super VGA - "понад" VGA) - розширення VGA з додаванням більшевисоких дозволів і додаткового сервісу. Відеорежими додаються зряду 800x600, 1024x768, 1152x864, 1280x1024, 1600x1200 - всі зі співвідношенням
4:3. Кольоровий простір розширено до 65536 (High Color) або 16.7 млн.
(True Color). Також додаються розширені текстові режими формату
132x25, 132x43, 132x50. З додаткового сервісу додана підтримка VBE.
Фактична стандарт відеоадаптера приблизно з 1992 р. p>
Пристрій типовий відеокарти p>
Вона складається з чотирьох основних пристроїв: пам'яті, контролера, ЦАП і
ПЗУ. P>
Відеопам'ять служить для зберігання зображення. Від її об'єму залежитьмаксимально можливе повне вирішення відеокарти - A * B * C, де A --кількість точок по горизонталі, B - по вертикалі, і C - кількістьможливих кольорів кожної точки. Наприклад, для вирішення 640x480x16достатньо 256 Кб, для 800x600x256 - 512 Кб, для 1024x768x65536 (іншапозначення - 1024x768x64k) - 2 Мб, і т.д. Оскільки для зберігання квітіввідводиться ціле число розрядів, кількість кольорів завжди є ступенемдвійки (16 кольорів - 4 розряду, 256 - 8 розрядів, 64k - 16, і т.д.). p>
Видеоконтроллер відповідає за виведення зображення з відеопам'яті,регенерацію її вмісту, формування сигналів розгортки для монітора іобробку запитів центрального процесора. Для виключення конфліктів призверненні до пам'яті з боку відеоконтролера і центрального процесораперша має окремий буфер, який у вільний від звернень ЦП часзаповнюється даними з відеопам'яті. Якщо конфлікту уникнути не вдається --відеоконтролер доводиться затримувати звернення ЦП до відеопам'яті, щознижує продуктивність системи; для виключення подібних конфліктів уряді карт застосовувалася так звана двупортовий пам'ять, що допускаєодночасні звернення з боку двох пристроїв. p>
Багато сучасних відеоконтролер є потоковими - їхня роботазаснована на створенні і змішуванні воєдино декількох потоків графічноїінформації. Звичайно це основне зображення, на яке накладаєтьсязображення апаратного курсору миші й окреме зображення впрямокутному вікні. Видеоконтроллер з потокової обробкою, а також запаратною підтримкою деяких типових функцій називається акселераторомабо прискорювачем, і служить для розвантаження ЦП від рутинних операцій зформування зображення. p>
ЦАП (Цифроаналоговий перетворювач, DAC) служить для перетвореннярезультуючого потоку даних, що формується відеоконтролером, в рівніінтенсивності кольору, що подаються на монітор. Всі сучасні моніторивикористовують аналоговий відеосигнал, тому можливий діапазон кольоровостізображення визначається тільки параметрами ЦАП. Більшість ЦАП маютьрозрядність 8x3 - три канали основних кольорів (червоний, синій, зелений, RGB)по 256 рівнів яскравості на кожен колір, що в сумі дає 16.7 млн. квітів.
Звичайно ЦАП суміщений на одному кристалі з відеоконтролером. P>
Відео-ПЗП - постійний запам'ятовуючий пристрій, в який записанівідео-BIOS, екранні шрифти, службові таблиці і т.п. ПЗУ не використовуєтьсявідеоконтролером прямо - до нього звертається тільки центральнийпроцесор, і в результаті виконання ним програм з ПЗУ відбуваютьсязвернення до відеоконтролер і відеопам'яті. ПЗУ необхідно тільки дляпервісного запуску адаптера і роботи в режимі MS DOS; операційнісистеми з графічним інтерфейсом - Windows або OS/2 - практично невикористовують ПЗП для управління адаптером, хоча і можуть мати проблеми вроботі у разі помилок в програмі BIOS, не знайдених розробниками. p>
На карті зазвичай розміщуються один або декілька роз'ємів для внутрішньогоз'єднання; один з них носить назву Feature Connector і служить длянадання зовнішніх пристроїв доступу до відеопам'яті і зображенню. Доцього роз'єму може підключатися телеприймач, апаратний декодер MPEG,пристрій введення зображення і т.п. На деяких картках передбаченіокремі роз'єми для подібних пристроїв. p>
відеоприскорювача (акселератори) p>
Прискорювач (accelerator) - набір апаратних можливостей адаптера,призначений для перекладання частини типових операцій по роботі ззображенням на вбудований процесор адаптера. Розрізняються прискорювачіграфіки (graphics accelerator) з підтримкою зображення відрізків, простихфігур, заливки кольором, виведення курсор миші і т.п., і прискорювачі анімації
(video accelerators) - з підтримкою масштабування елементів зображення іперетворення колірного простору. p>
Майже відразу після появи SVGA, відеоадаптери стали оснащуватиакселераторами для апаратного прискорення роботи з графічнимиопераційними системами - промальовуванням і заливанням "вікон", апаратнимкурсором "миші" тощо, а потім і прискорення деяких простих, але сильнозавантажує процесор операцій роботи з цифровим відео - MPEG. Аж доперенесення на відеочіп повного декодера MPEG. p>
Останнім часом в області 2D-графіки намітився деякий застій --нічого нового в цій області вже не було придумано, все відеоплати, аждо найдешевших, майже вирівнялися по швидкості і якості зображення.
Однак ринок відеоплат був прямо таки підірваний появою Акселератор
Тривимірної графіки. P>
Основні поняття 3D-графіки p>
. Артефакти (Artefacts) p>
Артефакт - недолік, побічний ефект, вада, що присутній узображенні. Нижче наводяться назви поширених артефактів (ціназви використовуються в описі понять), і їх англійські еквіваленти.
Назви в цілому умовні - у багатьох предметів немає стандартного назви.
| Розмитість | Blur | змазування дрібних | |
| | | Деталей текстури | |
| Муар | Moire pattern | текстура з | |
| | | Регулярної | |
| | | Структурою отримує | |
| | | Сторонній малюнок | |
| Смуги | Mipmap bands | видно кордону між | |
| міпмеппінга | | текстурами з | |
| | | Різними | |
| | | МІП-рівнями (на | |
| | | Малюнку зверху і | |
| | | Знизу) | |
| Пікселізация | Pixelization | освіта | |
| | | "Квадратів" при | |
| | | Сильному | |
| | | Розтягуванні | |
| | | Текстури і | |
| | | Відсутності | |
| | | Білінійної | |
| | | Фільтрації | |
| Шум | Noise, | текстура втрачає | |
| | Sparkling | свою структуру; при | |
| | | Русі текстура | |
| | | Не рухається, а | |
| | | "Шумить" | |
| Веселуха а ля Браун | | полігони не | |
| текстур | | стикуються між | |
| | | Собою, залишаючи | |
| | | Тонкі світлі або | |
| | | Темні проміжки | |
| Сходовий | Jaggies, | зубчатість країв | |
| ефект | stair-steppin | полігонів та | |
| | G | діагональних ліній | |
| Z-аліасінг | Z-aliasing | неправильний розрахунок | |
| | | Глибини | | p>
. Альфа-змішування (Alpha blending) p>
Альфа-змішування - техніка створення ефекту напівпрозорості шляхомоб'єднання вихідного пікселя пікселів, що вже знаходяться у фрейм-буфері.
Кожному пикселя зазвичай ставиться у відповідність значення червоного, зеленогота синього компонентів кольору (R, G, B). Якщо ставиться у відповідність ще альфа -значення, то говорять що пікселі мають альфа-канал (компонент A у схемі
RGBA). Альфа-значення визначає ступінь прозорості конкретного піксела.
Об'єкти можуть мати різну прозорість, наприклад скло має високийрівень прозорості (і таким чином низьке альфа-значення), а желе --середній рівень. Альфа-змішування є процес комбінування двох об'єктівна екрані з урахуванням їх альфа-каналів. p>
Альфа-змішування використовується для: антиаліасінгу, прозорості, створеннятіней, дзеркал, туману. p>
. Антиаліасінгу (Anti-aliasing) p>
Аліасінг - результат семплінгу, тобто перетворення безперервногозображення в дискретне. Аліасінг погіршує якість зображення, викликаючирізноманітні артефакти: сходовий ефект, муар і шум. Антиаліасінгупокликаний нейтралізувати подібні артефакти і поліпшити якість зображення.
За призначенням антиаліасінгу ділиться на крайової і повний. P>
Крайової антиаліасінгу - механізм боротьби з сходовим ефектом. Крайовийантиаліасінгу згладжує краю полігонів і діагональні лінії. Крайовийантиаліасінгу застосовується в 3D-прискорювачах Voodoo Graphics, Voodoo 2, Verite
V2000. P>
p>
p>
Для реалізації крайового антиаліасінгу найчастіше використовують технікуусереднення за площею (area averaging). Колір пікселя визначається напідставі того, наскільки кожен полігон перекриває даний піксель.
Наприклад, як показано на малюнку нижче, піксель перекривають дві полігону: Aі B. Метод усереднення за площею визначає видимі області, займаніполігонами, які "торкаються" до пикселя, і обчислює результуючийколір на підставі видимих площ перекриття (тобто що належать іпикселя, і полігону). Нехай полігон A займає 40% площі пікселі, аполігон B - 60%. Результуючий колір в цьому випадку визначається квітами A і
B c ваговими коефіцієнтами 40% і 60% відповідно (тобто проводитьсяоперація альфа-змішування). Для ліній і точок метод той же самий, у даномувипадку вважається, що лінії і крапки мають ненульову площа. p>
p>
На жаль, альфа-змішування в крайовому антиаліасінгу призводить допояви артефакту під назвою bleeding (дослівно "кровоточеніе").
Bleeding - фарбування внутрішніх ребер в колір фону, це пов'язано з тим, щоміж гранями утворюється тонкий просвіт. Тому програма сама повинназнати, які ребра та лінії потрібно згладжувати. Через це крайовийантиаліасінгу складно програмувати. p>
p>
Повний антиаліасінгу, на відміну від крайового, спрямований на повнунейтралізацію аліасінга. Єдиним представником повного антиаліасінгує субпіксельний антиаліасінгу. Субпіксельний антиаліасінгу застосовуєтьсяв 3D-прискорювачах PVNG, Intel740, nVidia Riva128 і TNT, а також у всіхпрофесійних OpenGL-прискорювачах. p>
Субпіксельний антиаліасінгу в Intel740 і nVidia Riva TNT базується натехніці суперсемплінга. Суперсемплінг означає, що вся сцена рендери вякомусь великому віртуальному вирішенні, а потім стискується до фактичногодозволу. У загальному випадку віртуальне і фактичне дозволу можуть бутинекратнимі. Техніка суперсемплінга можлива через те, що ці прискорювачівикористовують tile-based архітектуру. Прискорювачу традиційної архітектурипотрібен був би великий об'єм пам'яті (для віртуального дозволу 1600x1200
- Більше 8 MB). Справа в тому, що прискорювач tile-based архітектури непрацює з цілим фреймбуфером, а з окремими фрагментами (tiles). І вседані про субпіксель він зберігає тільки для фрагмента, який рендери вданий момент. p>
p>
У 3D-прискорювачах серії Glint від 3DLabs використовується інший метод,заснований на зберіганні маски. Розглянемо випадок, коли 1 піксель розбиваєтьсяна 16 (4x4) субпіксель (ця техніка називається мультісемплінгом), аполігони рендери front-to-back (картинка знизу). p>
p>
Коли рендери полігон не передньому плані, субпіксель 2,3,4,7,8,12фарбуються в колір переднього полігону. Причому запам'ятовується, якісубпіксель потрапили в передній полігон, тобто маска. Ця маска перевіряєтьсяколи рендери задній полігон. Субпіксель 1,5,6,9 фарбуються в колірзаднього полігону. Субпіксель 2,3, що належать обом полігонам, незмінюють колір і таким чином залишаються з кольором переднього полігону. Урезультаті - ніякого bleedingа. p>
Зворотний бік такого антиаліасінгу - це необхідність зберіганнямаски для кожного пікселя і вимога сортування полігонів front-to-back.
Друга вимога можна обійти, зберігаючи z-координату для кожногосубпіксель. Однак зберігати z-координати для всіх субпіксель на екранінеможливо, так як це вимагає гігантського обсягу відеопам'яті. Підтримкусубпіксельного антиаліасінгу з z-буферизацією реализ?? ет технікаакумулятора. Суть його зводиться до того, що обробка ведетьсяпослідовно для кожного пікселя і при цьому використовується одна і та жпам'ять. Недолік: через вимоги послідовної обробкинеможливість апаратного розпаралелювання і як наслідок зменшенняпродуктивності в число разів, яка дорівнює кількості субпіксель в піксель.
Наприклад субпіксельний антиаліасінгу 4x4 знижує продуктивність в 16раз, або іншими словами збільшує Fillrate в 16 разів. p>
. Міпмеппінг (MIP-mapping) p>
Міпмеппінг (MIP-mapping) використовує декілька версій однієї текстури зрізним ступенем деталізації (LOD - level-of-detail), причому наступнаверсія менше попередньої в 4 рази (наприклад 128x128, 64x64, 32x32 і т.д.).
Такі версії називаються МІП-рівнями, а всі версії однієї текстури - МІП -каскадом. p>
Цілі міпмеппінга: o Зменшення часу обробки - для об'єктів на далекій відстані обробляти текстуру з низькою роздільною здатністю набагато легше o Позбавлення від шуму і муару - додавання МІП-рівнів з низьким рівнем деталізації p>
Існує кілька видів міпмеппінга, але всі вони використовують 1 або 2сусідніх МІП-рівня. При міпмеппінге, кожен використовуваний МІП-рівень абозбільшується, або зменшується (відповідність 1:1 статистично рідко).
Збільшення і зменшення називаються відповідно магніфікаціей
(magnification) і мініфікаціей (minification). І мініфікація, імагніфікація має свої недоліки. Мініфікація призводить до underfilteringу
(що виражається в муар і шумі), магніфікація - до overfilteringу
(що виражається в пікселізация або заблюріванію). Чим менше спотворюється МІП -рівень, тим краще виглядає текстура в кінцевому результаті. p>
p>
Основні види міпмеппінга: o Простий міпмеппінг (nearest mipmapping) без білінійної фільтрації зараз не використовується. o Простий міпмеппінг з білінійної фільтрацією. Найбільш застосовуваний метод сьогодні. Схожий на попередній метод, але між Тексел виконується інтерполяція. При наближенні або видалення об'єкта від спостерігача вибирається відповідний МІП-рівень. При наближенні до спостерігача вибирається МІП-рівень з великим ступенем деталізації, при видаленні - з меншою. Що ж буде з МІП-рівнем в конкретний момент - буде виконуватися мініфікація або магніфікація? Це залежить від конкретної реалізації і від параметра, званого LOD-bias. Якщо в рендеринга домінує мініфікація, то на сцені присутні шум і муар. Якщо домінує магніфікація, то текстури здаються більш розмазаним, але муару/шуму немає. Простому міпмеппінгу властивий артефакт, що виражається в різких переходах на текстурованою поверхні p>
(так звані смуги міпмеппінга). Це відбувається при зміні ступеня деталізації, якщо МІП-каскад намальований неякісно. o трілінейная фільтрація (tri-linear filtering). Найбільш акуратний спосіб обчислення кольору піксела. Трілінейная фільтрація більш складна, ніж попередні методи. На відміну від простого міпмеппінга, в якому просто вибирається відповідний рівень деталізації, тут проводиться інтерполяція між двома сусідніми МІП-рівнями. Завдяки цьому смуги міпмеппінга не утворюються. При обчисленні кольору пікселя використовується 8 Тексел p>
(4 при білінійної фільтрації) і вимагає 7 операцій змішання (3 при білінійної фільтрації). Використання трилінійної фільтрації дає набагато більш високу якість зображення для рухомих об'єктів. P>
Адаптивна фільтрація частково вирішує проблемуoverfilteringа/underfilteringа. Програма вибирає як обробляти МІП -рівні, окремо верхній і нижній. Наприклад інтерполювати нижній МІП -рівень, і не інтерполювати верхній МІП-рівень, а потім інтерполюватиотримані текстури між собою, як при трилінійної фільтрації. p>
Міпмеппінг припускає, що розробник сам створює МІП-каскад. Однакбагато ігор мають лише текстури з одним дозволом. Для вирішення цієїпроблеми була придумана техніка авто-міпмеппінга. Драйвер 3D-прискорювача самобчислює кілька МІП-рівнів, використовуючи основну текстуру (вонастає МІП-рівнем з максимальною деталізацією). Техніка авто -міпмеппінга використовується також для збільшення числа МІП-рівнів, якщо гравикористовує недостатня їх кількість (наприклад багато ігор використовуютьвсього 3 МІП-рівня для економії текстурної пам'яті). p>
Міпмеппінг дає високу якість для полігонів, переважнозвернених на спостерігача (тобто розташованих паралельно площиніекрану), тому що такі полігони складаються з квадратних пікселів. Однакнахилені полігонів складаються з неквадратних пікселів, і до проблемирозміру пікселів додається проблема форми пікселів. При стандартномупідході фільтр, який добре працює з квадратними пікселями, даєсильний аліасінг на неквадратних. Вирішенням цієї проблеми єанізотропна фільтрація, яка є більш складним фільтром, ніжтрілінейная фільтрація. Анізотропна фільтрація працює з пікселами як зеліпсами і для отримання одного пікселя обробляє велику кількістьТексел (до 32). p>
p>
. Морфінг рівня деталізації (LOD morphing) p>
Морфінг рівня деталізації (LOD) дуже корисний в іграх з великимивідкритими просторами. Його головна мета - забезпечення плавного появиоб'єктів в області видимості гравця. Приклад: автомобільний симулятор. Будинки,дерева, які раптово з'являються в області видимості "нізвідки",викликають неприємне враження. У даному випадку, при реалізації морфінгарівня деталізації будинки та дерева з'являються повністю прозорими, а поміру наближення до гравця набувають обрисів, стають більш щільними,і в безпосередній близькості стають повністю непрозорими. p>
Інше, більш складне застосування морфінга рівня деталізації --реалізація об'єктів з різним рівнем деталізації. Створюється декількаверсій одного об'єкта з різним ступенем деталізації: найнижчадеталізація для відображення об'єкта на дуже далекій відстані, і самависока деталізація для самого близької відстані. Чим вище деталізація,тим з більшого числа полігонів складається об'єкт. Це дозволяє зменшитикількість полігонів на сцені, і отже підвищити продуктивність.
Наприклад, немає сенсу відображати автомобіль у всій його красі на відстані,при якому гравець може розрізнити лише колір автомобіля. Переходи міжрівнями деталізації здійснюється також варіюванням прозорості: змінадеталізації відбувається не миттєво, непрозора (стара) версіястає прозорою, а прозора (нова) - більш щільною. p>
Версії одного об'єкта для різних рівнів деталізації можуть готуватисяна стадії розробки, а можуть прораховуватися в реальному часі методомпрогресивних сіток (progressive meshes). Прогресивні сіткипідтримуються Direct3D. p>
p>
. Мультітекстурірованіе (Multitexturing) p>
Мультітекстурірованіе - метод рендеринга з використанням декількохтекстур за мінімальне число проходів. Текстура накладаються на об'єктпослідовно, з використанням різного роду арифметичних операцій.
Мультітекстурірованіе дозволяє конвейерізіровать накладення текстур звикористанням декількох (зазвичай двох) блоків текстурування. Малюнокнаочно демонструє їх дії. Перший блок накладає напіксель текстуру Tex0, використовуючи операцію Op0, передає піксель другаблоку. Цей піксель передається другому блоку, який натягує на ньоготекстуру Tex1, використовуючи операцію Op1. В цей час перший блок не чекає, апереходить до обробки наступного піксела, і т.д. Мультітекстурірованіесхоже на конвейеризації в мікропроцесорах, тільки мультітекстурірованіенабагато простіше, тут немає ніяких розгалужень і т.п. Операції накладення тумануі альфа-змішування з фрейм-буфером не відносяться до мультітекстурірованію івиконуються після всіх стадій. p>
p>
Мультітекстурірованіе може використовуватися для ефективної реалізаціїтаких ефектів як: o карти освітленості (lightmaps) o відображення (reflections) o морфінг текстур (texture morphing) o текстури з деталізацією (detailed textures) p>
. Рендеринг (Rendering) p>
Рендеринг - процес візуалізації тривимірних об'єктів і збереженнязображення в фрейм-буфері. Рендеринг виконується за багатоступінчатомумеханізму, що зветься конвеєром рендеринга. Конвеєр рендеринга можебути розділений на 3 стадії: тесселяція, геометрична обробка ірастеризації. Принцип конвейеризації є фундаментальним поняттям, вЗгідно з ним працюють і 3D-прискорювачі, і 3D-API, - завдякиконвеєру можна розглянути роботу будь-якого з них. Якщо взяти довільний
3D-прискорювач, то він не буде прискорювати всі стадії конвеєра, і навіть більшетого, стадії можуть лише частково прискорюватися ім. Далі ми розглянемодокладніше стадії конвеєра в контексті роботи 3D-прискорювачів. Традиційнокожну стадію позначають літерами. p>
Стадія "T". Тесселяція (тріангуляція) - процес розбиття поверхніоб'єктів на полігони (трикутники або чотирикутники). Ця стадіяпроводиться повністю програмно незалежно від технічного рівня іціни 3D-апаратури. Тим не менше тесселятор (програмний код, що відповідає затесселяцію) має враховувати особливості того чи іншого 3D-прискорювача, такяк вони можуть мати різні вимоги до полігонам-примітивний: o довільні трикутники o трикутники з горизонтальною нижньої або верхньої межею o трикутник або чотирикутник з описом рівнянь ребер p>
(нескінченні площини) p>
Також тесселятор повинен враховувати, чи вміє працювати з сітками (meshes)різних типів. Якщо 3D-програма розробляється на високорівневої 3D-API,наприклад Direct3D RM або PowerRender, то їй не треба піклуватися про всіцих деталях, тому що такий API має свій тесселятор. p>
Стадія "G". Геометрична обработкаделітся на кілька фаз, і можечастково прискорюватися 3D-прискорювачем. o трансформація (transformation) - перетворення координат p>
(обертання, перенос і масштабування всіх об'єктів) o відсікання (clipping), що виконується до і після перетворення координат o освітлення (lighting) - визначення кольору кожної вершини з обліком усіх світлових джерел (рішення рівняння освітленості) o проектування (projection) - перетворення координат у систему координат екрану o setup - попередня обробка потоку вершин (переклад з плаваючою точки в фіксовану точку даних про вершини, а також сортування вершин, відкидання задніх граней, субпіксельная корекція)
Найчастіше люди плутаються саме з геометричною обробкою. Цеускладнюється тим, що самі виробники плутають термінологію. (Наприклад
3Dlabs заявляє, що Glint Delta - геометричний співпроцесор, що взагалікажучи невірно, Delta - це setup engine.) Більшість існуючих 3D -прискорювачів прискорюють тільки останню фазу - setup, при тому роблять це зрізним ступенем повноти. Кажуть, що 3D-прискорювач має повний setupengine, якщо він може переводити в фіксовану точку всі дані провершині. Залежно від типу примітивів, з якими працює 3D -прискорювач, мова ведеться про triangle setup або про planar setup. p>
Геометричний процесором називається прискорювач, який прискорює всюстадію геометричної обробки, в тому числі трансформацію та освітлення.
Реалізація геометричного процесора досить дорого, і як вже булосказано, він є об'єктом рекламних спекуляцій. Визначити реалізованийчи геометричний процесор досить легко - треба з'ясувати, чи підтримує
3D-прискорювач операції з матрицями. Без такої підтримки не може йти мовапро прискорення фази трансформації. Геометричними процесорами єнаприклад Glint Gamma і Pinolite. p>
Стадія "R". Растеризації - найбільш інтенсивна операція, зазвичайреалізована на апаратному рівні. Растерізатор виконує безпосередньорендеринг і є найбільш складною ступенем конвеєра. Якщо стадіягеометричної обробки працює з вершинами, то растеризації включаєоперації, що проводяться на піксельних і суб-піксельної рівні. Растеризаціївключає в себе видалення прихованих поверхонь, текстурування, альфа -змішання, z-буферизація, затінення, антиаліасінгу, dithering. p>
. Текстурування (Texture mapping) p>
текстурування - основний метод моделювання поверхонь. Текстура --зображення, що накладається на поверхню. Використання текстур вимагаєнабагато менше ресурсів, ніж моделювання поверхні за допомогоюполігонів. Текстура зберігаються в текстурної пам'яті, окремі Тексел (точкитекстури) використовуються для покриття текстурою пікселів перед записом уфрейм-буфер. Залежно від конкретного методу текстурування, різнечисло текселей потрібно для обробки одного піксела. p>
p>
семплінг (point-sampling) - найпростіший метод текстурування, в якомудля відображення однієї точки використовується всього один Тексел (малюнок нижче).
Цьому методу притаманний серйозний артефакт: коли спостерігач наближаєтьсявпритул до текстурованою поверхні, відбувається пікселізация. Дляуникнення цього артефакту використовують інші методи текстурування,засновані на фільтрації текстур. p>
p>
Білінійна фільтрація (bi-linear filtering) використовує 4 суміжнихТексел для отримання одного пікселя (малюнок нижче). Білінійна фільтраціявимагає чотири операції змішування для кожного результуючого пікселя: длядвох верхніх текселей, для двох нижніх і для двох отриманих значень. p>
p>
Більш складні методи текстурування засновані на міпмеппінге. p>
Коли полігони текстуріруются, необхідно враховувати перспективу. Длятого, щоб текстуровані об'єкти виглядали правильно, необхіднаперспективна корекція. Вона гарантує, що текстура правильно накладетьсяна різні частини об'єкта. Перспективна корекція - ресурсомістка процедура
(одна операція ділення на кожен піксель), тому 3D-прискорювачі повинніреалізовувати її апаратно. Але різні прискорювачі досягають різної якостіперспективною корекції. p>
p>
Fillrate - швидкість текстурування, яка вимірюється у пікселях на секунду,є дуже важливою величиною, і саме її вказують як основнухарактеристику 3D-чіпсета. Fillrate 100 млн пікселів/сек означає, що 3D -прискорювач може обробити 100 млн пікселів в секунду, накладаючи на нихтекстури. На fillrate впливає безліч факторів, таких як тип фільтрації,глибина кольору, альфа-змішування, туман і антиаліасінгу. p>
Туман (Fog) p>
Туман використовується для створення атмосферних ефектів. Туманвикористовується для створення димки і приховування віддалених об'єктів. У першувипадку підвищується реалістичність сцени, в другому - знижується їїскладність. p>
З туманом об'єкти можуть рендери з різним ступенем деталізації взалежно від відстані до спостерігача. Туман працює за принципом: чимдалі об'єкт, тим більше туман його поглинає. Тому для віддаленихоб'єктів розумно використовувати менше полігонів, ніж для близьких. Тумантакож приховує і переходи між рівнями деталізації. p>
Туман можна розділити на полігони (per-polygon) і піксельний (per -pixel). Полігонних метод лінійно інтерполюється рівень туману за значеннямив вершинах для отримання рівня туману в кожній точці полігону. Цей методгарний тільки для маленьких полігонів. Піксельний метод розраховує рівеньтуману для кожного пікселя, і для великих полігонів дає більш реалістичнезображення. p>
Туман також можна розділити і за іншою ознакою - на лінійний іекспонентний (або табличний). При лінійному тумані ступінь поглинанняоб'єкта туманом лінійно залежить від відстані до спостерігача, а приекспоненційному тумані - розраховується на підставі таблиці. p>
p>
Видалення прихованих поверхонь (Hidden Surface Removal) p>
Видалення прихованих поверхонь (hidden surface removal - HSR) --комплексний механізм, що служить для зменшення числа трикутників,які будуть брати участь в рендеринга, а також правильному рендеринга зточки зору глибини. p>
Перш за все треба відкинути всі трикутники, які свідомо невидні. p>
Відсікання (clipping). Відкидаються всі трикутники, які непотрапляють в обсяг отсчеченія (clip volume), який обмежений шістьмаплощинами за трьома координатами. Це найважливіший метод HSR, якийвиконується завжди. p>
Відкидання задніх граней (backface culling). Виконується перевірка,куди "дивиться" трикутник. Це можливо, тому що в кожної вершини єнормаль і тому всі трикутники є орієнтованими впросторі. Якщо трикутник дивиться "на спостерігача", він вважаєтьсявидимим, а якщо "від спостерігача" - то невидимим. Це дозволяє знизитиудвічі кількість видимих трикутників, наприклад для виведення сфери, що складається зтрикутників, необхідно срендеріть тільки трикутники, що становлятьпівсферу, яку бачить спостерігач. p>
BSP-дерева. Програмний метод HSR для статичної геометрії, наприкладрівнів в 3D-шутере. Мета BSP-дерев - упорядкування трикутниківспередутому (front-to-back) та визначення тих трикутників, які повністюзакриваються іншими. p>
Після того, як залишилось мінімум трикутників, треба їх отрендеріть,причому так, щоб видимі пікселі були видимі, а невидимі - невидимі. p>
Z-буферизація (z-buffering). p>
Z-сортування (z-sorting). Z-сортування - менш акуратний програмнийметод видалення схованих поверхонь в порівнянні з z-буферизацією, такожвідомий як алгоритм Паінтера. Об'єкти сортуються ззаду наперед (back-to -front). Більш віддалені об'єкти рендери в першу чергу, за нимислідують менш віддалені. Якщо об'єкти перетинають один одного, то найближчийнакладається на далекого, тобто відбувається z-аліасінг. p>
p>
. 3D-програмні інтерфейси (3D API) p>
API (програмний інтерфейс) - інтерфейс для написання програм,підтримує обладнання певного типу та операційну систему. 3D
API дозволяє програмісту створювати тривимірне програмне забезпечення,використовує всі можливості 3D-прискорювачів. API зазвичай включають в себефункції, глобальні дані, константи та інші елементи, що дозволяютьрозробнику уникати безпосереднього взаємодії з обладнанням. p>
3D API поділяються на універсальні та спеціалізовані. p>
Універсальний 3D API дозволяє абстрагуватися від конкретногообладнання. Без універсального API, що підтримують широкий спектр 3D -прискорювачів, розробниками довелося б перенести гри під безлічплат. Найбільш відомі універсальні 3D API - OpenGL і Direct3D. P>
Спеціалізований 3D API (Native 3D API) призначений для одногоконкретного сімейства 3D-прискорювачів і захищає від програмістанізкоуровнего програмування за допомогою прямого доступу до регістрів іпам'яті. Приклади спеціалізованих 3D API - Glide (від 3Dfx), RRedline (від
Rendition), PowerSGL (від Videologic), RenderGL (від Intergraph). P>
Direct3D - 3D API компанії Microsoft, призначений для використанняпереважно в іграх. Direct3D існує тільки в Windows 95, незабароммайбутньому з'явиться в Windows NT 5.0. Direct3D має два режими: RM (retainedmode) або абстрактний і IM (immediate mode) або безпосередній. IMскладається з тонкого рівня, який спілкується з апаратурою і забезпечуєнайвищу швидкодію. Абстрактний режим - високорівневаінтерфейс, що покриває безліч операцій для програміста, включаючиініціалізацію і трансформацію. В обох режимів є достоїнства інедоліки, більшість Direct3D-ігор використовують IM. p>
OpenGL - відкритий 3D API, створений компанією SGI і контрольованийасоціацією OpenGL Architecture Review Board, до якої входять DEC, E & S,
IBM, Intel, Intergraph, Microsoft і SGI. OpenGL реалізує широкий діапазонфункцій від виведення точки, лінії або полігону до рендеринга кривихповерхонь NURBS, покритих текстурою. p>
Використання універсального 3D API припускає використаннядрайверів для цього API. На сьогоднішній день наявність драйверів Direct3D і
OpenGL є обов'язковою вимогою до всіх 3D-прискорювачів. P>
Direct3D-драйвер реалізує так званий рівень апаратноїабстракції, HAL (Hardware Abstraction Layer) - інтерфейс, якийвзаємодіє безпосередньо з обладнанням та дозволяє програмамвикористовувати возможн