Огляд сучасних відеосистем для РС, Детальна інформація

Огляд сучасних відеосистем для РС
Тип документу: Реферат
Сторінок: 8
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 136.5
Скачувань: 1114
Зафарбування примітивів (Fill) – на цій стадії, власне, і відбувається побудова в буфері кадру (пам'яті, відведеної під результуюче зображення) картинки на основі інформації про примітиви, сформованою попередньою стадією конвеєра, і інших даних. Таких, як текстури, таблиці тумана і прозорості й ін. Як правило, на цій стадії для кожної крапки зафарбовуваного примітива визначається її видимість, наприклад, за допомогою буфера глибин (Z-буфера) і, якщо вона не закрита більш близької до спостерігача крапкою (іншого примітива), обчислюється її колір. Колір визначається на основі інформації про висвітлення і накладення текстур, визначеної раніше для вершин цього примітива. Більшість характеристик прискорювача, який можна почерпнути з його опису, відносяться саме до цієї стадії, тому що в основному саме цю стадію конвеєра прискорюють апаратно (у випадку недорогих і доступних плат).

Фінальна обробка (Post processing) – обробка всієї результуючої картинки як єдиного цілого якими-небудь двовимірними ефектами.

\x00AA

¬

®

°

\x0300\x0324\x260A\x0B00\x1446\x1200\x6864\x0101\x1300\x64A4\x1400\x64A4\x5B00\x0124\x245C\x6101\x0324\x1400лі (рідко) чи можуть з'явиться нові (часто). І, по-третє, результат роботи кожної з них може бути посланий (в обхід інших стадій) назад. Наприклад, картинку, отриману на останній стадії, можна використовувати як нову текстуру для 8-ий, реалізуючи в такий спосіб ефект поверхонь, що відбивають, (дзеркал). Таких, як мармуровий піл у грі Unreal.

3D API

(без особливого зазору совісті) помістити драйвера даного прискорювача, тому що, з погляду програми, вони стають частиною бібліотеки. Програм і прискорювачів існує безліч, а от число загальновизнаних бібліотек дуже обмежено. Найбільше часто гри використовують наступні бібліотеки

OpenGL – створена спочатку для професійних графічних станцій і програм тривимірного моделювання бібліотека. Поступово вона прийшла на платформу PC, в основному завдяки стрімкому прогресу в області "заліза" і грі Quake, що використовувала урізаний варіант цієї бібліотеки. Наявність підтримки цієї бібліотеки в прискорювача вкрай бажано через велике число нових ігор, орієнтованих на неї. Бібліотека є в деякому роді високорівневою, тому що бере на себе всі дії, починаючи із середини 4-ої ступіні нашого конвеєра. З одного боку, це здорово полегшує роботу програмістам, з іншого боку - здатно трохи ускладнити її ж, особливо при реалізації нестандартних чи ефектів необхідності використовувати нові можливості прискорювача, що виходять за рамки OpenGL. Гарний приклад корисності подібного підходу – можливість випустити версію OpenGL, що значно прискорює (конкретно – геометричні перетворення) роботу ігор на нових процесорах з SIMD наборами команд – AMD 3Dnow! і Intel Katmai New Instructions (MMX2). Очевидним достоїнством також є переносимість програм на інші, не Wintel-платформи. Істотним, але недоліком, що швидко виправляється - відсутність її повного варіанта для деяких розповсюджених прискорювачів.

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 чи, може бути, у сусіда в під'їзді, але не коштує при цьому забувати про сильну залежність числа кадрів від обсягу пам'яті і потужності процесора комп'ютера цього самого сусіда.

надмірному видаленні від текстури, вибираючи аналог текстури з меншим дозволом. Фактично, існує кілька режимів комбінування цих двох методів. Зараз найбільш поширені білінійна фільтрація (bilinear filtering - спочатку визначається необхідна для цієї відстані текстура, а потім значення кольору лінійно інтерполюється між чотирма сусідніми крапками текстури, по кожній з координат на поверхні обраної текстури) і трилінійна (trilinear - дві білінійних для двох текстур, з меншим і великим дозволами, потім результат інтерполюється між ними). Остання виглядає більш приємно, але і вимагає великих витрат, тому що не реалізується за один такт на сучасних прискорювачах з одним блоком обробки текстур і, у результаті, удвічі знижує швидкість зафарбування. Зараз з'явилися перші прискорювачі з анізотропної (anisotropic - усередині куба, із двох наборів по 4 сусідні крапки текстур, разом по 8 крапкам) фільтрацією, що виглядає зовсім добре, але і займає ще вдвічі більше часу. Потім обчислений за допомогою одного з вищеописаних методів колір текстури міститься в буфер кадру, заміняючи значення, що знаходилося там раніше, або комбінується з ним за яким-небудь правилом (combination, blending, alpha-blending). Як мінімум, прискорювач повинний підтримувати режими Джерело*Приймач (Src*Dest) і Джерело+Приймач (Src+Dest). Подібні можливості дозволяють реалізувати кольорове висвітлення, ефекти типу чи металу відображення, реалізовувати трилінійну фільтрацію там, де вона не підтримується апаратно і т.д. (так називана багатопрохідна побудова зображення, multipass rendering).

Як правило, для кожної крапки текстури, крім RGB кольору, можна задати ступінь її прозорості (alpha, RGBA формат текстури), що буде використовуватися прискорювачем для регулювання впливу джерела на приймач. Подібним чином зафарбовуються, наприклад, напівпрозорі по краях вибухи й ореоли навколо джерел світла в Unreal.

Не є життєво необхідної, але дуже прискорює роботу програм, що використовують багатопрохідну побудову зображення (наприклад, Quake2 чи Unreal), можливість мультитекстурування (multitexturing). Фактично, ця наявність двох (чи навіть більш) блоків обробки текстур, здатних одночасно обчислювати два кольори по двох текстурах для однієї крапки примітива, а потім комбінувати їх між собою. Подібною можливістю володіє Vооdоо2, RivaTNT і ще трохи поки "недороблених" чіпів[1].

Важливі також точність представлення квітів (16 біт – Hi-Color чи 32 біта – True-Color, останній набагато краще) і точність буфера глибин (Z-Buffer, 16 біт гірше, 24 і 32 краще), використовуваного для визначення видимості окремих крапок примітива. Помилки у визначенні глибини здатні приводити до дивних ефектів, наприклад, до ніг, що переглядають крізь постамент, статуї в грі Unreal.

І остання дія блоку обробки буфера кадру – накладання глобальних ефектів на готову картинку. Наприклад, туман, чи серпанок темрява (з погляду прискорювача це те саме), тобто ефект, відомий як fogging. Чи використовуваний у RivaZX метод повноекранного згладжування (full screen antialiasing), коли зображення розраховується з великим дозволом, чим показується користувачу, причому сусідні крапки зображення сумуються, і саме сумарне значення демонструється користувачу як одна крапка. Подібним чином усуваються різкі границі між полігонами, зображенню надається приємний "монолітний" вид. Існує також крайове згладжування примітивів, що приводить до практично ідентичного (ледве гірше) результату [3] (edge antialiasing), але потребуюче набагато менше витрат на побудову зображення.

5.ОСОБЛИВОСТІ МОДЕЛЮВАННЯ СВІТЛА І СЦЕНИ

Фізична модель світла

Світло - це дуже складна система, щоб змоделювати її в досконалості. Саме тому ми рідко можемо бачити створені комп'ютером тривимірні зображення, що були б по сьогоденню фотореалістичні. В усіх випадках, чим складніше і реалістично створювана вами віртуальна сцена, тим більше обчислень ви повинні зробити, і тем повільніше вона буде відтворюватися на екран. Як програміст, ви повинні будете вирішити, чим ви більше готові пожертвувати: якістю чи зображення швидкістю його прорахунку на комп'ютері[4]; чи хочете ви, щоб ваша програма привела усіх у здивування своєю красою, але вимагала майже годину для промальовування одного єдиного зображення, чи могла працювати зі швидкістю виводу 60 кадрів у секунду, але при цьому була схожа на карикатуру.

Цей розділ буде присвячений деяким з фізичних принципів, реалізація яких при комп'ютерному моделюванні навколишньої дійсності дозволить об'єктам виглядати саме так, як вони повинні виглядати. Ми так само поговоримо про деяких часто використовувану спрощеннях, що дозволяють збільшити швидкість прорахунку зображення.

Одиничний Фотон

Світло складається з дрібних згустків енергії (часток), називаних фотонами. Фотон, з одного боку, це частка, з іншого боку - хвиля, це означає, що він має властивості, властиві як хвилям, так і часткам. Ці енергетичні згустки відриваються від джерела енергії і прямолінійно поширюються в просторі, поки не відбудеться зіткнення з зовнішнім об'єктом у просторі[2].

Об'єкти

При зіткненні фотона з зовнішніми об'єктами може відбутися:

відображення (reflection) -і фотон відскакує від поверхні

The online video editor trusted by teams to make professional video in minutes