Д СУЧАСНИХ ВІДЕОСИСТЕМ ДЛЯ РС
•Direct3D – бібліотека, що є частиною Microsoft Direct і поддерживаемая зараз практично всіма прискорювачами. Фактично являє собою дві бібліотеки – низькорівневу (починаючи з 7 стадії) і високоурівневу (з 5-ої). Результат – велика гнучкість для програміста в реалізації його ідей і, як наслідок, головний біль для нього ж через безліч зв'язаних з конкретною реалізацією прискорювача параметрів. Зараз йде бурхливий розвиток цього продукту Microsoft, і, зважаючи на все, версія 6 Direct3D (яка вже офіційно вийшла) буде цілком гідним конкурентом OpenGL по своїх можливостях і швидкості.
•Glide – власна низькорівнева бібліотека (стадія 7 конвеєра і далі) фірми 3Dfx, що домоглася популярності завдяки великому поширенню перших, дійсно успішних прискорювачів (на базі набору чіпів Voodoo). Але, швидше за все, ця бібліотека піде зі сцени в найближчі кілька років. Вона не підтримується іншими прискорювачами і не буде ними підтримуватися (без дозволу 3Dfx це є незаконним), до того ж усі нові ігри, розраховані на неї, працюють, як мінімум, ще з однієї з раніше описаних бібліотек. Творці неприємного виключення з цього правила (а саме, гри Unreal) вже анонсували доповнення до гри з підтримкою Direct3D і OpenGL[3].
Ще існує близько 10 бібліотек низького рівня, створених розроблювачами різних прискорювачів; таких як: R-Redline фірми Rendition, S3D Toolkit фірми S3 і т.д. Як і випливало очікувати, програми, написані спеціально для них, поступово зникають[2].
Хоча більшість сучасних прискорювачів беруть на себе лише дві-три останні стадії конвеєра, існує важливе і швидко прогресуюче виключення з цього правила: з'явилися перші доступні чіпи з підтримкою геометричних перетворень, здатні значно збільшити швидкість побудови зображення на комп'ютерах з недостатньою обчислювальною потужністю (а вона, потужність, недостатня по визначенню - інакше не було би потреби в прискорювачах узагалі).
3D акселерація
Отже, самий загальний прискорювач складається з геометричного процесора (Geometry Processor, поки практично завжди відсутній), механізму установки (Setup engine, стадія 7 конвеєра) і механізму відмальовки примітивів – зафарбування (Fill engine, стадії 8 і 9), що при детальному розгляді виявляється комбінацією двох блоків – обробки текстур (Texel engine) і обробки буфера кадру (Pixel engine). Продуктивність прискорювача залежить від процесора, продуктивності пам'яті, шини і самих обробних блоків. Як правило, приводяться два числа – максимальна пропускна здатність (трикутників у секунду, triangle throughput) і максимальна продуктивність зафарбування (крапок у секунду, fill rate). Такий підхід можливий, але не дуже коректний. Та й усі ми знаємо, що кращим тестом є швидкість гри, у яку ми любимо грати (fps, кадрів у секунду на якомусь стандартному наборі дій) і якість зображення (у цифрах не вимірити). Саме ці параметри і необхідно довідатися в першу чергу в Internet чи, може бути, у сусіда в під'їзді, але не коштує при цьому забувати про сильну залежність числа кадрів від обсягу пам'яті і потужності процесора комп'ютера цього самого сусіда.Якщо не вдаватися в глибокі технічні подробиці, зафарбування відбувається в такий спосіб: блок обробки буфера кадру визначають, чи видна зафарбовувана крапка, наприклад, за допомогою буфера глибин (Z Buffer). Якщо вона видна, блок обробки текстур обчислює колір текстури, що відповідає цій крапці примітива. Тут є кілька важливих моментів – інтерполяція (filtering, згладжування) і вибір рівня текстури (mip-mapping). Перший забезпечує зображення без різких прямокутних пікселей, навіть коли ви знаходитеся поблизу предмета і дозвіл текстури явно недостатнє. Другий усуває перекручування (дивні візерунки), що виникають при надмірному видаленні від текстури, вибираючи аналог текстури з меншим дозволом. Фактично, існує кілька режимів комбінування цих двох методів. Зараз найбільш поширені білінійна фільтрація (bilinear filtering - спочатку визначається необхідна для цієї відстані текстура, а потім значення кольору лінійно інтерполюється між чотирма сусідніми крапками текстури, по кожній з координат на поверхні обраної текстури) і трилінійна (trilinear - дві білінійних для двох текстур, з меншим і великим дозволами, потім результат інтерполюється між ними). Остання виглядає більш приємно, але і вимагає великих витрат, тому що не реалізується за один такт на сучасних прискорювачах з одним блоком обробки текстур і, у результаті, удвічі знижує швидкість зафарбування. Зараз з'явилися перші прискорювачі з анізотропної (anisotropic - усередині куба, із двох наборів по 4 сусідні крапки текстур, разом по 8 крапкам) фільтрацією, що виглядає зовсім добре, але і займає ще вдвічі більше часу. Потім обчислений за допомогою одного з вищеописаних методів колір текстури міститься в буфер кадру, заміняючи значення, що знаходилося там раніше, або комбінується з ним за яким-небудь правилом (combination, blending, alpha-blending). Як мінімум, прискорювач повинний підтримувати режими Джерело*Приймач (Src*Dest) і Джерело+Приймач (Src+Dest). Подібні можливості дозволяють реалізувати кольорове висвітлення, ефекти типу чи металу відображення, реалізовувати трилінійну фільтрацію там, де вона не підтримується апаратно і т.д. (так називана багатопрохідна побудова зображення, multipass rendering).
Як правило, для кожної крапки текстури, крім RGB кольору, можна задати ступінь її прозорості (alpha, RGBA формат текстури), що буде використовуватися прискорювачем для регулювання впливу джерела на приймач. Подібним чином зафарбовуються, наприклад, напівпрозорі по краях вибухи й ореоли навколо джерел світла в Unreal.