Пошукова робота з інформатики

ОГЛЯД СУЧАСНИХ ВІДЕОСИСТЕМ ДЛЯ РС.

З погляду самої бурхливо галузі комп’ютерної індустрії, що розвивається
— відеосистем, цей рік став десь навіть епохальним. Навесні була поява
нового покоління відеокарт від 3dfx (лінійка Voodoo3), від Matrox
(сімейство G400), від S3 (ряд Savage4) і, звичайно, ціла безліч чіукова
робота з інформатики ипсетів від NVIDIA — Riva TNT2, що являють собою
поліпшену і значно більш швидку модель чіпа Riva TNT. Восени цього року
ми стали очевидцями появи революційних архітектурних рішень — NVIDIA
GeForce 256 і S3 Savage 2000. Так, безумовно, різкого стрибка в
продуктивності 3D-графіки на ринку PC не відбулося, та й не випливало
цього очікувати. Що б не говорили представники фірм-розроблювачів про
супер-швидкості новітніх рішень, є ряд стримуючих факторів. У першу
чергу це залежність продуктивності відеопідсистеми від швидкості
центрального процесора. [1]

Тому можна спостерігати тільки поступовий ріст кількості fps у
3D-програмах. Мова отут йде саме про 3D-графіку, що за останні кілька
років завоювала серця власників комп’ютерів і стала переважаючим
елементом при оцінці роботи тієї чи іншої відеокарти. Часом у своїй
погоні за плавністю роботи і повнотою ефектів при виводу 3-х мірних сцен
ми забуваємо про те, що в більшості випадків при роботі за комп’ютером
ми все-таки користаємося 2D-графікою, і що її продуктивність і якість не
повинна іти на задній план. Проте, феномен тривимірної графіки має
місце, оцінка показників цієї частини відеосистеми відіграє величезну
роль, почасти просто через те, що в 2D-графіці вже досягнуто майже усе,
що може бути необхідно більшості користувачів.

Що стосується 3D-графіки, то, справедливості заради треба відзначити, що
якість і рівень виконання деяких ігрових відеокарт останнього покоління
такі, що вони можуть навіть суперничати із супердорогими професійними
платами. Робоча частота RAMDAC [2] в ігрових платах досягла дуже високих
значень — 350 і більш Мгц. Багато плат представляють із себе вже не
просто відеокарти, а цілі комбайни, де є і Тв-тюнери, і пристрої
захоплення відеопотоку, і виводу сигналу на ТВ. Цього року виник
прямо-таки бум по виробництву стереоокулярів, що підсилюють сприйняття
тривимірності сцени. Цими окулярами деякі виробники комплектують свої
продукти, продаючи в такий спосіб цілий «комплект для аматорів пограти».

Сьогодні більш усього поширені такі відеоакселератори:

3dfx Voodoo3 3500TV;

Matrox Millennium G400 MAX;

Hercules Dynamite TNT2 Ultra (на чіпсеті NVIDIA Riva TNT2 Ultra);

ASUS AGP-V6600 SGRAM (на чіпсеті NVIDIA GeForce256);

ELSA Erazor X2 (на чіпсеті NVIDIA GeForce 256, з пам’яттю DDR

SGRAM)

Нижче приведені короткі характеристики популярних відеоакселераторів[1]:

3dfx Voodoo3 3500TV

Карта має AGP інтерфейс і 16 мегабайт 5.5 ns SDRAM, модулі якої
розташовані по обидва боки друкованої плати. Ця відеокарта являє собою
цілий відеокомбайн. На ній установлений Тв-тюнер, мікросхеми керування
захопленням відеопотоку і виводом сигналу на ТВ. Крім зовнішнього
рознімання під телевізійну антену в плати є великий трапецеідальне
рознімання для з’єднання з устроєм-комутатором сигналу, у якого у свою
чергу мається гніздо для моніторного рознімання. На цьому комутаторі
маються також гнізда для виводу на ТВ і прийому аналогового
відеосигналу, а також стерео аудіосигнала.

Ця плата володіє практично найвищою на сьогодняшній день частотою роботи
чіпсета — 183 Мгц, що ставить її в один ряд з одними із самих могутніх
на сьогоднішній день відеокарт. Така частота не проходить даром для
температурного режиму — карта дуже сильно гріється. Хоча на ній і
установлений великий радіатор, украй бажано мати в системному блоці
додаткове охолодження. Вбудований у чіп RAMDAC має одне з найвищих
частотних значень — 350 Мгц, що дозволяє цій платі демонструвати
прекрасну якість 2D-графіки [3].

Як і багато хто чипсети від 3dfx, чіп 3dfx Voodoo3 має важливу
особливість — «безкоштовним» мультитекстуруванням, тобто при
невикористанні цього режиму другий модуь TMU (модуль текстурування)
простоює, підключаючи і різко збільшуючи продуктивність плати при
мультитекстуруванні. Тому той факт, що число ігор з підтримкою цього
режиму неухильно росте, грає на руку насамперед Voodoo3.

Відеокарта працює в 3D-графіці тільки в 16-бітному режимі представлення
кольору, володіючи, однак, важливою функцією — постфільтром, що при
16-бітних «рамках» відеобуфера виводить не 16-ти, а 22-бітну графіку, що
поліпшує сприйняття зображення. Як і усі уже вийшли чіпсети від 3dfx,
Voodoo3 не підтримує великі (понад 256х256 пікселей) текстуру. У 3D
карта працює через API: Direct3D, OpenGL, Glide.

Тестування проводилося з використанням драйверів від 3dfx версії
1.03.04, Vsync відключений. У настроюваннях драйверів був включений
режим постфільтра, а також обраний спосіб дизерінга при альфа-змішанні
(ефекту згладжування переходів між кольорами при роботі з напівпрозорими
об’єктами) Sharper. Ми вже писали у свій час, що в цьому випадку є два
способи реалізації дизерінга: Sharper чи Smoother. Перший спосіб
згладжує переходи між кольорами дуже успішно, однак залишає після себе
сіточку, а другий не має сіточки, але зате границі між кольорами
все-таки досить сильно видні.

Matrox Millennium G400 MAX

Карта має AGP інтерфейс 2x/4x і 32 мегабайти 5 ns SGRAM пам’яті [1],
мікросхеми якої розташовані по обидва боки друкованої плати. Плата має
унікальну можливість виводу зображення відразу на два приймачі: монітор
і чи телевізор на 2 монітори. Як можна побачити з фотографії, для цих
цілей змонтовані два рознімання.

Плата працює на частотах 150/200 Мгц (перше значення — частота чіпсета,
друге — частота пам’яті). Тому, на відміну від регулярних версій Matrox
G400, у даному випадку на чіпсеті встановлений активний кулер. Частота
убудованого в чіпсет RAMDAC складає 360 Мгц — це найвище значення для
відеокарт ігрового класу. Тому, ми можемо спостерігати просто чудову
якість зображення навіть на найвищих розрішеннях (аби монітор дозволяв).
На жаль, на Matrox Millennium G400 MAX продавці занадто завищують ціну,
користаючись деяким дефіцитом цих плат, тому карта поки не є широко
розповсюдженої. У 3D-графіці карта підтримує великі текстури і
AGP-текстурування. Чіпсет апаратно підтримує унікальну поки методику
рельєфного текстурування — Environment Mapped Bump Mapping, що дозволяє
в 3D-іграх досить натурально відтворювати рельєфні поверхні. На жаль,
дана методика поки мало поширена. З підтримуваних API це Direct3D і
OpenGL [3].

Тестування проводилося на драйверах версії 5.41 від Mattox, причому для
OpenGL додатків використовувався ICD OpenGL, а не розхвалений
міні-драйвер TurboGL (який, по суті, є мінідрайвером і не відбиває
реальної продуктивності карти в OpenGL. Для повноцінної роботи карти в
OpenGL існує ICD OpenGL, що ми і повинні використовувати як інструмент.
В установках драйверів використовувався: 16-бітний Z-буфер, відключений
VSync.

Hercules Dynamite TNT2 Ultra

Плата має AGP інтерфейс 2x/4x і 32 мегабайти 5.5 ns SDRAM пам’яті,
модулі якої розташовуються по обидва боки карти. На відеокарті
змонтований TV-out, у комплекті з картою йде перехідник
S-Video-Composite [1]. На чіпсеті NVIDIA Riva TNT2 Ultra встановлений
активний кулер, на мій погляд, самої вдалої і надійної конструкції.

Відеокарта тактуєтся за замовчуванням на частотах 175/200 Мгц. Ці
частоти не є стандартними для чіпсета NVIDIA Riva TNT2 Ultra (150/183
Мгц) і стали можливими завдяки особливому підходу фірми Hercules
Computer (нині є підрозділом Guillemot) до добору чіпів для установки на
подібні відеокарти. Унаслідок чого дана плата стала самою могутньою із
усіх Riva TNT2 Ultra — карт, забезпечуючи прекрасну швидкість у 3D.
RAMDAC убудований у чіпсет і має частоту 300 Мгц. Хоча це і не найвища
частота на сьогодні, відеокарта забезпечує прекрасний рівень якості 2D
графіки у високих розрішеннях.

При роботі в 3D-графіці підтримуються великі текстури,
AGP-текстурування, використовувані API: Direct3D і OpenGL.

Тестування проводилося на еталонних драйверах від NVIDIA версії 3.62 при
відключеному Vsync.

ASUS AGP-V6600 SGRAM

Дана відеокарта побудован на базі чіпа NVIDIA GeForce 256 і має AGP
інтерфейс 2x/4x. На карті встановлено 32 мегабайта 5 ns SGRAM пам’яті,
мікросхеми якої розміщені по обидва боки плати [1].

Багато користувачів продукції ASUS, у частині відеокарт, знають, що ця
фірма завжди розробляла свій власний дизайн, що сильно відрізняється від
еталонного (reference) пропонованого виробником чіпсетів. Коли з’явилися
в продажі перші відеокарти AGP-V6600 від ASUS, можна було переконатися,
що вперше ASUS відійшов від свого принципу і випустив плати, що цілком
збігається з reference по розташуванню елементів. Однак, зовсім недавно
в продажі з’явився й інший варіант AGP-V6600. Зважаючи на все, саме на
ньому і ґрунтується серія AGP-V6600 Deluxe, оскільки на друкованій платі
є місця під монтаж традиційних для ASUS TV-in/out і гнізд для
підключення стерео-окулярів.

Ця плата має вже не SDRAM, а SGRAM пам’ять. І саме примітне, власний
дизайн цієї плати передбачає моніторинг стану графічного чіпсета.
Унаслідок чого на останньому встановлений активний кулер не зовсім
звичайної для ASUS конструкції. Він має тахометр, а виходить, що
відповідає програмне забезпечення може контролювати частоту обертання
вентилятора на карті [2].

Частоти роботи відеокарти складають 120/166 Мгц. Повинний відзначити, що
навіть при такім значному виділенні тепла, яке має NVIDIA GeForce 256,
чіпсет може непогано розганятися, не говорячи вже про пам’ять, адже 5-ти
наносекундні модулі розраховані на частоту 200 Мгц. Частота RAMDAC — 350
Мгц, що дозволяє цій карті демонструвати дуже високу якість зображення в
2D-графіці. Підтримуються API Direct3D і OpenGL.

Однак сама примітна особливість GeForce 256 — це наявність убудованого
геометричного співпроцесора, що за підтримкою програмним забезпеченням
може на себе взяти найважливіші функції побудови тривимірної сцени:
трансформації координат і розрахунок висвітлення (T&L).

Як і NVIDIA Riva TNT2, цей чіпсет підтримує великі текстури, API
Direct3D і OpenGL. У драйверах реалізована важлива особливість NVIDIA
GeForce 256 — апаратна підтримка 8-крапкової анізотропної фільтрації.

Тестування проводилося на драйверах від NVIDIA версії 3.62 при
відключеному Vsync.

ELSA Erazor X2

Даний продукт являє собою зразок найшвидшої на сьогоднішній день
відеокарти на основі NVIDIA GeForce 256. Плата має AGP інтерфейс 2x/4x і
32 мегабайти DDR (double data rate) 6 ns SGRAM. Пам’ять розміщається в
8-ми мікросхемах по обидва боки плати. Відеокарти на базі NVIDIA GeForce
256 першими стали використовувати більш швидку і прогресивну
DDR-пам’ять, що значно піднімає планку швидкісних показників, особливо в
32-бітному кольорі (мова йде про 3D-графіку).

Як можна бачити на фотографії, відеокарта має TV-out і місця під монтаж
цифрового виходу на LCD-монітори, що відповідає дизайну карти,
запропонованому NVIDIA. На чіпсеті мається активний кулер. Пам’ять на
платі, хоч і розрахована на 166 МГц, тактуєтся на 150 МГц (300 МГц у
перерахуванні на звичайну SDR пам’ять). Розгін саме даного екземпляра
карти малоефективний, оскільки чіпсет уже втрачає стійкість на частоті
понад 130 Мгц.

Як і попередня карта, ELSA Erazor X2 підтримує роботу через API Direct3D
і OpenGL. Ми цю плату вже розглядали в нашому недавньому огляді,
присвяченому відеокартам на NVIDIA GeForce 256 з DDR-пам’яттю і визнали,
що використання DDR-пам’яті дає просто чудову перевагу чіпсетам, що
використовують 32-бітний колір у 3D-графіці, оскільки усуває вузькість
ширини смуги пропущення локальної відеопам’яті.

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

От підсумки розгляду 3DMark2000 c точки зору швидкісних показників:

наявність грамотно оптимізованого движка в програми, що використовує
можливості SSE чи 3DNow! на відповідних процесорах може стати гарною
альтернативою наявності геометричного співпроцесора у відеокарти;

власникам Pentium III/Athlon варто багаторазово подумати перед тим, чи
відкидати ідею придбання відеокарт із GPU чи ні, оскільки грамотно і
добре оптимізованих під SSE чи 3DNow! програм, що використовують ці
технології для розрахунку T&L практично немає;

не треба забувати, що розрахунок, наприклад, висвітлення за допомогою
програмного движка навіть при використанні SSE чи 3DNow! може бути трохи
спрощеним, коли апаратне обрахування T&L буде завжди повноцінним (якщо,
зрозуміло, це підтримується грою);

при відсутності підтримки SSE чи 3DNow! альтернативи використанню
апаратного обрахування T&L просто немає! Тому відеокарти з GPU стануть
вигідним придбанням для усіх власників процесорів Celeron (природно, що
мова йде про старші моделі);

наявність геометричного співпроцесора не зможе компенсувати низьку
обчислювальну потужність центрального процесора системи.

2.ЯКІСТЬ 3D-ГРАФІКИ

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

Багато акселераторів при розрахунку 3D-сцени працюють з 32-бітним
кольором, а при формуванні буфера у відеопам’яті вже переходять на
16-бітний колір, що знижує вимоги до величини ширини смуги пропущення
локальної відеопам’яті з однієї сторони (це дозволяє збільшити загальну
продуктивність), а з іншої сторони зниження точності з 32 до 16 біт
приводить з виникненню різких переходів між кольорами. Тому в даному
випадку найважливішою функцією стає дизеринг — ефект згладжування цих
переходів. Природно, що при цьому практично неможливо цілком уникнути
артефактів.

От підсумки по якості. Відразу можна сказати, що альтернативи 32-бітному
кольору по красі кінцевого зображення немає. Нехай це звучить банально,
але це усе-таки відповідь дбайливцям 16-бітного кольору, як достатнього
для 3D-графіки. Як не намагайся дизерінгом поправити положення з різкими
переходами (особливо це неприємно виглядає на світлових відблисках), усе
рівно артефакти були і будуть. Тому майбутнє, зрозуміло, за тими
акселераторами, що можуть без збитку для швидкості оперувати 32-бітним
кольором. У даному випадку — це NVIDIA GeForce 256 з DDR-пам’яттю і її
представником — ELSA Erazor X2. Поки GeForce 256 — це єдиний чіпсет, що
підтримує таку пам’ять, і в кооперації з нею дающий феноменальні
результати по швидкості. Також відзначимо, що цей чіпсет дає на
сьогоднішній день і найвищу якість зображень у 3D-графіки.

Однак, відеокарти на NVIDIA GeForce 256 з DDR-пам’яттю ще дуже дороги,
тому волею-неволею приходиться розглядати й акселератори, що можуть без
проблем працювати з 32-бітним кольором хоча б у невисоких дозволах: це
NVIDIA GeForce 256 з SDR-пам’яттю і NVIDIA Riva TNT2 Ultra. Якщо перша
відеокарта являє собою як би проміжний варіант між NVIDIA GeForce 256 з
DDR RAM і NVIDIA Riva TNT2 Ultra, то відеокарти на NVIDIA Riva TNT2
Ultra мають усі шанси стати вигідним придбанням, з огляду на різке
падіння цін на них. Хоча, з погляду якості зображення не всі добре, тому
що ці карти володіють трилінійною фільтрацією, що являє собою
апроксимацію (наближення) і часом краще її відключати.

Matrox Millennium G400 MAX має дуже гарну якість у 3D, показує непогані
результати в 32-бітному кольорі, але відеокарта поки дуже дорога.

Що з’явилися на ринку гри, бенчмарки і демо-програми, що наочно
показують перевагу не тільки 32-бітного кольору, але і використання
великих текстур, сильно вдарили по репутації відеокарт від 3dfx, зокрема
3dfx Voodoo3. Похвастатися успіхами в якості відтворенні 3D-графіки їм
чимось, якщо не вважати «розмазування», яким так люблять хизуватися
плати серії Voodoo. У визначеним ситуаціях це розмазування ховає деякі
огріхи в реалізації тривимірної сцени, однак уже не рятує положення,
коли в справу вступає багатополігонна і високоточна графіка.

Відзначу, що для використання в старих іграх до-Quake3-періоду, карти
типу 3dfx Voodoo3 цілком підходять, оскільки багато розроблювачів ігор
були хворі синдромом вудизма і писали ігри в розрахунку на
Voodoo-чіпсети (а це 8-ми бітні і невеликі, до 256х256, текстури, 16
бітний колір). Однак, останнім часом багато хто з авторів ігор
прокинулися і почали застосовувати новації, якими володіють акселератори
останнього покоління.

Деякі особливості розглянутих відеоакселераторів.

Matrox Millennium G400 MAX

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

Hercules Dynamite TNT2 Ultra

Ця відеокарта нічим примітним, крім TV-out, не володіє. ТВ-вихід
базується на мікросхемі від BrookTree і має загальновідомі для відеокарт
такого класу функції: висновок при дозволі монітора 640х480 чи 800х600
при установці частоти кадрів у 60 Гц, причому висновок може бути або на
монітор, або на телевізор. Більше сказати з цього приводу чогось.

ELSA Erazor X2

Відеоплата, крім вищезгаданого TV-out, також нічого додаткового не має.
Усе сказане про ТВ-вихід вище відноситься і до даного випадку.

ASUS AGP-V6600 SGRAM

Ця плата ніяких зовнішніх додаткових функцій не має. Її подальший
розвиток, що випливає ревізія, так сказати, буде мати і прийом
відеосигналу, і Тв-вихід і інші функції. Однак ця плата буде мати вже
іншу назву, і слідом за цією статтею вийде інша, де плата ASUS AGP-V6600
Deluxe буде докладно описана.

Відзначу лише, що особливістю даної карти є наявність моніторингу стану
чіпсета. Додаткове програмне забезпечення контролює температуру чіпа,
напругу на ньому і частоту обертання вентилятора і повідомляє
користувачу про стан відеокарти, а при перегріві примусово знижує
частотний режим чіпсета і пам’яті.

3dfx Voodoo3 3500TV

Ця відеокарта має цілий набір додаткових функцій. Це і Тв-тюнер, і
можливість прийому відеосигналу, і Тв-вихід, і запис відеопотоку у
форматі MPEG2 (також мається можливість кооперування з аудіо-потоком). У
нашому огляді по цій карті ми докладно описували всі особливості роботи
і настроювання програмного забезпечення для 3dfx Voodoo3 3500TV, тому
тут лише коротко зупинюся [3].

Разом із самою відеокартою поставляється комутатор, що здійснює
розведення сигналів. До комутатора підключається монітор, на ньому
маються гнізда для аналогового сигналу (прийом і видача), а також для
стерео-аудіо-сигнала (також прийом і видача). На самій відеокарті є
гнізда для з’єднання зі звуковою картою для синхронізації відео- і
аудіо-потоків. На жаль, компресія у формат MPEG2 відбувається програмним
шляхом за допомогою спеціального кодека, при цьому якість зображення
виходить далеким від ідеального. Навіть пам’ятається на Matrox Rainbow
Runner Studio (дочірня плата до відеокарт серії Matrox Millennium
II/G200/G400, Mystique 220/G200) якість відеопотоку й окремих захоплених
кадрів бути незрівнянно краще. Керування тюнером тільки програмне.

При програванні DVD-відео за допомогою програмних плеєрів типу WinDVD,
Cinemaster, PowerDVD найкращу якість продемонструвала карта Matrox
Millennium G400 MAX, потім плати на NVIDIA GeForce 256, також непогано
зарекомендувала себе в цьому плані 3dfx Voodoo3 3500TV, а на останнім
місці Hercules Dynamite TNT2 Ultra, що найкращу якість продемонструвала
тільки при 100-процентному завантаженні процесора (режим Full CPU mode).

Підведемо підсумки

Плата Matrox Millennium G400 MAX показала себе просто чудово з погляду
2D-графіки і дуже посередньо з погляду швидкості в 3D-графіки. Винуваті
знов-таки драйвери. Крім того, відеокарта має саму кращу реалізацію
TV-out (можливість виводу на другий монітор поки, на жаль, не настільки
актуальна).

Відеокарта 3dfx Voodoo3 3500TV має гарну швидкість, надійною роботою в
Direct3D і Glide, драйвери під OpenGL постійно удосконалюються і вже
дозволяють платі демонструвати продуктивність на рівні суперників. У
2D-графіці дорікань немає ніяких. Крім того, ця карта дає користувачу
цілий набір функцій, у тому числі і прийом телепередач, захоплення
відеосигналу і запис потоку, висновок на телевізор зображення. Великою
ложкою дьогтю є підтримка тільки 16-бітного кольору в 3D і відсутність
підтримки великих текстур.

Відеокарта Hercules Dynamite TNT2 Ultra показала себе на високому рівні
в 3D-графіці. Карта забезпечує високу якість зображення як у 2D, так і в
3D, щоправда, небагато псує враження трилінійна апроксимація. Звичайно,
цю відеокарту вже не купити, однак її аналоги, наприклад, Creative 3D
Blaster Riva TNT2 Ultra чи Diamond Viper V770 Ultra уже досить сильно
упали в ціні і стали цілком доступними, тому на сьогодні придбання
відеокарт на базі NVIDIA Riva TNT2 Ultra стане найбільш раціональним.
Раніш більш дешеві 3dfx Voodoo3 3000 складали реальну конкуренцію картам
на базі NVIDIA Riva TNT2 Ultra, за рахунок високої швидкості в режимі
розгону, те тепер практично всі 3dfx Voodoo3 3000 забезпечуються noname
пам’яттю, що ледь дотягає до частот 180 Мгц при розгоні.

Карта ASUS AGP-V6600 SGRAM має прекрасну швидкість, відмінною якістю як
у 2D, так і в 3D. Великий список вихідних ігор з підтримкою T&L, а також
що уже вийшли демо-програми й ігри свідчить про те, що майбутнє за
акселераторами, що підтримують як апаратний розрахунок T&L, так і великі
текстури. Однак, є два але. Перше: різке падіння продуктивності при
переході до 32-бітного глибині представлення кольору, часом понижуюча
продуктивність до рівня плат на базі NVIDIA Riva TNT2 Ultra. Друге: ще
поки досить висока ціна, однак вихід на ринок аналогів з DDR-пам’яттю
найближчим часом різко знизить ціни на плати класу ASUS AGP-V6600.

Відеокарта ELSA Erazor X2, безумовно, лідер по всіх статтях! Як по
якості, так і по продуктивності! Звичайно, новизна подібних карт поки
утримує ціни на дуже високому рівні для ігрових відеоплат, тому ми
можемо лише відзначити всі достоїнства цієї карти і рекомендувати…
почекати з покупкою таких плат, поки вони не упадуть у ціні. Поки ж
можна назвати карти на базі GeForce 256 з DDR SGRAM пам’яттю на борту
самими перспективними платами на найближчі 4-6 місяців. Що стосується
вартості, те після виходу нових плат 3dfx Voodoo5 і появи в продажі
перших карт на базі NV15 ціна на GeForce 256 карти з DDR-пам’яттю
напевно істотно знизяться.

1.мінідрайвери

Ряд відеокарт забезпечується не тільки ICD OpenGL драйверами, але і так
називаними мінідрайверами OpenGL. Ці мінідрайвери оптимізовані під різні
OpenGL програми [4].

Небагато передісторії. Не дуже давно фірма Matrox анонсувала випуск
нового драйвера OpenGL за назвою TurboGL. Він являє собою файл
opengl32.dll, що інсталятор заносить у директорії відповідних ігор, що
використовують OpenGL. З огляду на, що всі подібні ігри шукають драйвер
спочатку в себе в каталозі, а потім вже в системному каталозі Windows,
мається впевненість у тім, що гра буде використовувати встановлений у її
директорії міні-драйвер. Ця практика з мого погляду дуже порочна,
оскільки за назвою файлу драйвер^-міні-драйвер TurboGL відповідає
системному драйверу Windows, і необхідно пам’ятати про те, що в каталозі
з тим же Quake2, Half-Life, Quake3 і т.д. знаходиться частина комплекту
драйверів від Matrox. При зміні відеокарти і навіть при деінсталяції
драйверів, TurboGL з цих директорій не віддаляється. Природно, якщо
користувач забув видалити відповідні opengl32.dll з каталогів програм,
то при запуску програм на іншій відеокарті вони працювати не будуть.
Тепер про переваги міні-драйвера. Коли вийшла тільки перша версія
TurboGL, цей драйвер давав приріст у швидкості роботи тільки на
процесорах AMD Athlon і Intel Pentium III, з чого випливав висновок, що
драйвер активно використовує інструкції SSE і 3Dnow!. Не дуже давно
наступна версія TurboGL стала функціонувати і давати збільшення
продуктивності і на інших процесорах. Унаслідок чого TurboGL придбав
достатню популярність. При цьому немає ніяких погіршень як реалізацію
тривимірних сцен у зазначених іграх.

Фірма 3dfx один час також активно випускала подібні міні-драйвера, однак
після виходу Quake3 зосередилася на налагодженні й удосконалюванні ICD
OpenGL для всієї лінійки своїх чіпсетів. І треба відзначити, що їй це
вдається. Кожна нова версія ICD OpenGL дає визначений приріст
продуктивності, насамперед на чіпсетах останнього покоління — 3dfx
Voodoo3. Однак, приблизно вже 8 місяців фірма Metabyte (підрозділ
Wicked3D) випускає і міні-драйвер WickedGL, оптимізований під Quake3
(повинний сказати, що й у Quake2 цей драйвер дає приріст у швидкості).
Коли ICD OpenGL від 3dfx був дуже повільним і давав украй низькі
результати, WickedGL сильно вигравав, і тому цей міні-драйвер отримав
популярність у багатьох користувачів. Нині ж, оптимізація ICD OpenGL від
3dfx дозволила скоротити до мінімуму розривши між цим драйвером і
WickedGL. Проте, на прикладі 3dfx Voodo3 3500TV, ми покажемо роботу і
цей міні-драйвер [2].

Таким чином, можна зробити явно напрошується висновок за результатами
тестування в OpenGL: Matrox Millennium G400 MAX хоч і сильно відстає від
усіх при використанні ICD OpenGL, при роботі з TurboGL здобуває другий
подих і по суті його продуктивність стає порівнянна з Hercules Dynamite
TNT2 Ultra. 3dfx Voodoo3 3500TV хоч і не змогла вийти на більш високе
місце, ніж при використанні ICD OpenGL, проте, у деяких дозволах і
режимах успішно конкурує з картою на NVIDIA Riva TNT2 Ultra і показує
гарні результати. З огляду на постійне удосконалювання драйверів, можемо
сподіватися і на подальший ріст по швидкості з випуском нових версій
програмного забезпечення. Можна сподіватися на те, що розроблювачі
драйверів від Matrox зможуть у найближчому часі виробити коректну схему
установки TurboGL і наступної його деінсталяції, щоб користувач
практично не втручався в процес підготовки ігор до роботи на інших
відеокартах. Чому це важливо? Так просто тому, що нині середній час
морального старіння відеокарт різко зменшується, і багато користувачів
регулярно змінюють застарілі відеокарти на більш сучасні. Зараз Matrox
Millennium G400 MAX ще поки досить нова карта, а пройде півроку, і про
неї забудуть [2].

4.ТЕХНОЛОГІЯ 3D ГРАФІКИ.

3D-конвеєр

Більшість 3D програм випливають досить стандартній схемі побудови
тривимірних зображень (далі ми будемо називати цей процес конвеєром).
Причому деякі програми реалізують усі стадії цього конвеєра, деякі ж
перекладають частину роботи на плечі апаратних пристроїв, спеціальних
бібліотек програм (API), інші чи програми навіть на користувача. Отже,
конвеєр складається з наступних стадій [4]:

Визначення стану об’єктів (Situation modeling) – ця частина програми не
має прямого відношення до комп’ютерної графіки, вона моделює той світ,
що буде відображатися надалі. Наприклад у випадку ігрових 3D програм це
— правила ігри і фізичні закони переміщення гравця, штучний інтелект
монстрів і т.д.

Визначення відповідних поточному стану геометричних моделей (Geometry
generation) – ця частина конвеєра створює геометричне представлення
поточного моменту нашого маленького «віртуального світу».

Розбивка геометричних моделей на примітиви (Tesselation) – ця перша
дійсно залежна від «заліза» стадія. На ній створюється зовнішній вигляд
об’єктів у виді набору визначених примітивів, зрозуміло, на основі
інформації з попереднього кроку конвеєра. Найбільш розповсюдженим
примітивом у наш час є трикутник, і більшість сучасних програм і
прискорювачів працюють саме з трикутниками. Не вдаючись у математичні
подробиці скажу, що на трикутники завжди можна розбити будь-який плоский
багатокутник, і саме трьома крапками можна однозначно задати площина в
просторі. До того ж, усі ми знаємо, що в Царя було три сини, а в
Горинича — три голови [1].

Прив’язка текстур і висвітлення (Texture and light definition) – на цій
стадії визначається, як будуть освітлені геометричні примітиви
(трикутники), а також які і як на них надалі будуть накладені текстури
(Textures: зображення, що передають зовнішній вигляд матеріалу об’єкта,
тобто негеометричну візуальну інформацію. Гарний приклад текстури –
пісок на абсолютно рівному пляжі). Як правило, на цій стадії інформація
обчислюється тільки для вершин примітива [2].

Видові геометричні перетворення (Projection) – тут визначаються нові
координати для усіх вершин примітивів виходячи з положення спостерігача
і напрямку його погляду. Сцена як би проектується на поверхню монітора,
перетворюючись в двомірну, хоча інформація про відстань від спостерігача
до вершин зберігається для наступної обробки.

Відкидання невидимих примітивів (Culling) – на цій стадії зі списку
примітивів виключаються цілком невидимі ( щозалишилися за чи збоку від
зони видимості).

Установка примітивів (Setup) – тут інформація про примітиви (координати
вершин, накладення текстур, висвітлення і т.д.) перетвориться у вид,
придатний для наступної стадії. (Наприклад: координати крапок буфера чи
екрана текстур — у цілі числа фіксованого розміру, з якими працює
апаратура).

Зафарбування примітивів (Fill) – на цій стадії, власне, і відбувається
побудова в буфері кадру (пам’яті, відведеної під результуюче зображення)
картинки на основі інформації про примітиви, сформованою попередньою
стадією конвеєра, і інших даних. Таких, як текстури, таблиці тумана і
прозорості й ін. Як правило, на цій стадії для кожної крапки
зафарбовуваного примітива визначається її видимість, наприклад, за
допомогою буфера глибин (Z-буфера) і, якщо вона не закрита більш
близької до спостерігача крапкою (іншого примітива), обчислюється її
колір. Колір визначається на основі інформації про висвітлення і
накладення текстур, визначеної раніше для вершин цього примітива.
Більшість характеристик прискорювача, який можна почерпнути з його
опису, відносяться саме до цієї стадії, тому що в основному саме цю
стадію конвеєра прискорюють апаратно (у випадку недорогих і доступних
плат).

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

Деякі стадії цього конвеєра можуть бути переставлені місцями, розбиті на
чи частині сполучені. По-друге, вони можуть бути відсутні взагалі
(рідко) чи можуть з’явиться нові (часто). І, по-третє, результат роботи
кожної з них може бути посланий (в обхід інших стадій) назад. Наприклад,
картинку, отриману на останній стадії, можна використовувати як нову
текстуру для 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) -і фотон відскакує від поверхні

поглинання (absorption) -і фотон поглинається і віддає свою енергію
об’єкту

переломлення (refraction) — фотон проходить крізь об’єкт і змінює
напрямок руху в залежності від властивостей об’єкта й оточення

відхилення (diffraction) — фотон може відхилитися і змінити напрямок у
випадку, коли він проходить на дуже близькій відстані від поверхні
об’єкта. 

Сукупність фотонів

У дійсності, фотонів дуже багато. Так багато, що ми можемо сказати — їх
невиразно багато. Виходячи з цього, ми можемо зневажити фактом, що
світло складається з одиничних фотонів і розглянути світло як безупинний
потік енергії. У цьому випадку до світла можна застосувати статистичні
закони, і отримані результати будуть досить акуратні саме завдяки
величезній кількості задіяних фотонів. Таким чином, світло може бути
(легко?) змодельований на комп’ютері[3].

Взаємодія світлового потоку з навколишніми предметами (об’єктами)
дозволяє нам бачити їх. Світло виходить із джерела світлової енергії.
Трильйони фотонів вириваються і з величезною швидкістю несуться від
джерела, взаємодіючи з предметами, ударяючи кожну дрібну деталь
навколишнього оточення. Невелика кількість з них попадає в маленьку
темну пляму в середині нашого ока. Це зіниця. По дуже вагомій причині,
суть якої буде пояснена нижче, наша зіниця чорний. Око улаштоване таким
чином, що він трохи підправляє напрямок руху фотона перед тим, як він
досягне задньої частини ока. Тут фотон поглинається світлочутливими
рецепторами. Ці рецептори дають відповідні сигнали нашому мозку. Мозок
інтерпретує послідовність сигналів, що надійшла, і постачає нас
докладною інформацією про наше оточення. Зображення, що ми бачимо
насправді, не є відповідним йому набором фізичних предметів. Усе, що ми
одержуємо, насправді лише його енергетичний відбиток, що пройшов
величезну кількість складних перетворень у нашому мозку. Синій об’єкт —
не є в дійсності синій. Він вважається синім тому, що ми інтерпретуємо
світло, що прийшло від нього, як синій.

Через досвід наш мозок учиться визначати і розпізнавати безліч образів і
відбитків, що створює світло про навколишню нас дійсності. Дитина бере
предмет, дивиться на нього мить, потім тягне в рот. Його мова — це
прекрасний датчик, і може визначати форму і вид поверхні предмета
практично так само, як і око, а іноді і краще. Дитина учиться асоціювати
те, що він бачить з тією формою, що йому описав мову. Згодом дитина
довідається, що той самий предмет може виглядати по-різному в залежності
від того, як його тримати, хоча він як і раніше є тим же самим
предметом. Це очевидно — подумаєте ви, але було виявлено, що сліпим з
народження людям, яким медицина повернули зір, зрозуміти вищевикладене
дуже складно. Їм також складно засвоїти зміст тіні і відображення, суть
яких видючі люди пізнали ще від народження. І сам факт того, що ви
можете бачити, ще не означає, що ви можете зрозуміти те, що бачите[4].

У цьому і полягає різниця між Даними (Data) і Інформацією (Information).
Дані -і це світловий образ, що формується на сітківці ока. Інформація -і
це інтерпретація цього образа нашим мозком[4].

Створюючи зображення будь-якого виду, ви намагаєтеся сформувати
світловий образ на сітківці ока таким чином, щоб він інтерпретувався
мозком як предмет, що відображає це зображення. Тренований мозок може
витягти величезна кількість інформації з зображення. Завдяки цьому в
голові ми можемо одержати повне тривимірне представлення сцени,
зображеної на двомірній картинці. Щоб одержати це, наш мозок аналізує
порядок взаємодії світла зі сценою (набором об’єктів зображених на
картинці) і на основі такого аналізу даних видає нам кінцеве тривимірне
представлення сцени.

Розмаїтість моделей висвітлення, застосовуваних у процесі формування
зображень комп’ютером, — це спроба збільшити кількість інформаціїї, що
мозку зможе витягти. Коли ви, як програміст, будете писати фрагменти
коду, що відповідає за графіку, вам не слід думати: «Я пишу процедуру
затінення по Фонгу», замість цього вам належить міркувати так: «Я
використовую візуальний трюк для коректної інтерпретації мозком»[3].

Яку інформацію може витягти мозок?

Людський мозок може витягти й інтерпретувати 4 інформаційних ресурси з
потоку видимих даних.

Форма

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

Відтінки

Відблиски і тіні. Тон і структура поверхонь.

Колір

Три кольори можуть бути виявлені людським оком — червоний, зелений і
синій.

Рух

Мозок людини особливо сприйнятливий до руху об’єктів. Прекрасно
«камуфльована» тварина миттєво буде виявлена, якщо вона поворухнеться.
Дуже часто, якщо ви втратили курсор на екрані монітора, кращий спосіб
знайти його — рушити мишкою.

Спеціальні відділи головного мозку відповідають за обробку цих чотирьох
інформаційних ресурсів. Це було неодноразово доведено у випадках аналізу
черепно-мозкових травм, одержуваних людиною. Як тільки людина одержує
травму і позбавляється відділу головного мозку, що відповідає за кожною
з перерахованих вище ресурсів, то він відразу втрачає здатність до
сприйняття цієї інформації. Наприклад, в одному випадку жінка втратила
здатність відчувати рух. Вона могла бачити так само, як усі, за винятком
здатності чуйно визначати рух об’єктів. Наприклад, вона могла бачити
автомобілі на дорозі, але ніколи не могла сказати з першого погляду —
рухаються вони чи ні.

Здатність до сприйняття приймається людиною як саме собою що
розуміється. Прийнято вважати, якщо ви можете бачити, те, виходить, ви в
стані визначити форму, відтінки, колір і рух. Але це не завжди так.

Не менш важливою є інформація, що мозок чи додає видаляє під час
аналізу. Коли ми споглядаємо, ми маємо справу з гігантськими обсягами
інформації. Було б просто неможливим проаналізувати і запам’ятати всі
зведення до дрібних деталей. Так це і не потрібно. Велика частина
зведень (даних), що надходять нам через зір, не мають яку-небудь
цінність. Мозок автоматично робить фільтрацію цього «сміття», дозволяючи
нам сконцентруватися на більш значимій інформації. Що ще більш важливо,
мозок також додає відсутню інформацію. Людський зір має «мертві зони»,
але, проте, ми цього не зауважуємо, тому що пробіли будуть завжди
заповнені придатною інформацією. Наш мозок багато прощає.

Для програміста це означає те, що йому зовсім не потрібно прорисовувати
зображення з точністю до дрібних деталей. Більшість з цих деталей буде
просто зігнороване і «заповнено» чим — те іншим. Ваша картина може бути
значно спрощена. От, наприклад, у фільмі «Повернення Джедая» зі
знаменитих «Зоряних Воєн» один з космічних кораблів у просторі — це
звичайний черевик. Але ніхто цього не помітив, тому що очікували бачити
космічний корабель, і в тім місці дійсно був об’єкт, що нагадує його
своєю формою, тому всі і бачили саме космічний корабель.

Ви можете ще більш спростити своє кінцеве зображення, якщо сцена
знаходиться в русі. Натисніть паузу на відеомагнітофоні і подивитеся на
нерухоме зображення, воно виглядає нікуди негідним, але ми цього не
зауважуємо, коли воно в русі.

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

Світло

Властивості світла

квадрату відстані

Як визначити яскравість світла?

Представте, що у вас є ідеальне джерело світла. Таке джерело не має
обсягу і розмірів, а існує у виді крапки в просторі. Його можна включити
і виключити, і це переключення відбувається миттєво, без утрат часу на
перехідні процеси[2]. Це саме те джерело світла, з яким можливо
працювати усередині віртуального світу комп’ютера. У реальному світі
такі джерела неможливі. Надалі ми також побачимо, що і реальні джерела,
у свою чергу, дуже складно створити у віртуальному світі.

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

У міру того, як промені світла усе більше і більше віддаляються від
джерела, розмір сфери росте, відповідно, росте і розмір досліджуваного
нами фрагмента. Яскравість цього фрагмента прямо пропорційна щільності
фотонів, що містяться в ньому.

Зрозуміло, якщо розмір фрагмента росте, а кількість фотонів залишається
незмінним, то щільність фотонів у ньому зменшується.

Площа поверхні сфери прямо пропорційна квадрату її радіуса. Таким чином,
яскравість маленького фрагмента буде назад пропорційна квадрату відстані
від джерела світла.

де:

Brightness — величина, що визначає яскравість (інтенсивність) світла в
крапці віддаленої від джерела світла на відстані r;

k — деяка константа, що визначає яскравість (інтенсивність) самого
джерела світла.

Це і є закон зворотної пропорційності квадрату відстані. Цей закон
застосуємо до всіх джерел світла, крім лазерів.

Закон косинуса

Яка освітленість поверхні?

буде в будь-якій крапці на поверхні цього об’єкта.

Коли поверхня цілком звернена до світла — максимальна кількість світла
досягає її. Уся поверхня освітлена.

площа перетину, зверненого до світла, стає менше. Що виражається в
меншій кількості світлової енергії, що впливає на поверхню.

Коли вектор нормалі до площини поверхні знаходиться під прямим кутом до
падаючого світлу, то світло просто-напросто проходить повз поверхню, і
вона зовсім не висвітлюється.

Таким чином, кількість світлової енергії, що впливає на поверхню, є
функція від орієнтації поверхні стосовно променів світла, що впливають.

Illumination= cos(a) * brightness ;

де:

illumination — освітленість поверхні;

a — кут між нормаллю до поверхні і напрямком світла;

brightness — яскравість (інтенсивність) світла.

Світло може бути поглинений поверхнею, відбитий чи пропущений крізь неї.

Поглинання

Деяка кількість світла може бути поглинено поверхнею. У цьому випадку
відбувається звичайне нагрівання поверхні. Остільки, оскільки ми
говоримо тільки про комп’ютерні зображення, те найчастіше ми можемо
просто ігнорувати це явище.

Відображення

Велика частина світла «відскочить» від поверхні. Напрямок відбитого
світла до деякої міри залежить від самої поверхні.

Якщо поверхня зовсім гладка (абсолютно блискуча), світло відіб’ється від
поверхні під точно таким же кутом до нормалі, під яким кутом він до неї
прийшов. При цьому нормаль буде бісектрисою кута між напрямком приходу
лучачи і напрямком його відображення. Це явище можна спостерігати на
дзеркальній чи полірованій металевій поверхнях. Ми зможемо помітити
яскраве відображення від поверхні, тільки дивлячись на неї під
визначеним кутом[3].

Якщо поверхня шорстка (абсолютно розсіює), то відбите світло буде
поширюватися в багатьох напрямках. Тут ні в якому разі не
затверджується, що в природі існують абсолютно розсіюють поверхні. Грубо
оброблене дерево прекрасне розсіює світло, як і матова фарба, але обидва
матеріали все-таки мають якийсь (ненульовий) блиск (shininess). Найбільш
яскраве відображення від цих поверхонь буде помітно під різними кутами
зору.

Більшість природних і штучних матеріалів знаходяться десь посередньо між
цими двома крайностями. Вони одночасно мають властивості блиску
(shininess) і розсіювання (diffuse). Щоб помітити розсіяної світло від
поверхні, положення ваших очей не має значення, для того, щоб помітити
відблиск, кут зору повинний бути строго визначеним.

Переломлення

Коли світло проходить крізь поверхню, він проходить з одного середовища
в іншу. У момент проходу через границю середовищ виникаючі квантові
ефекти змушують світло змінити свій напрямок. Така зміна напряму руху
світла називається переломленням (refraction). Точне значення величини
кута зміни напрямку залежить від взаєморозташування поверхонь середовищ
і властивості середовища за назвою коефіцієнт переломлення. Порожнеча
(вакуум) має коефіцієнт, дорівнює одиниці. У повітря цей коефіцієнт
трохи нижче. Більш тверді матеріали і середовища мають більш низькі
коефіцієнти переломлення [4].

Переломлення — дуже складне явище, вимагає великих обчислювальних
потужностей при його моделюванні. Для виводу на екран у реальному часі
більш придатним є застосування технології ray tracing. Ми не будемо тут
поглиблюватися в подробиці, усьому свій час 🙂

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

Колір

До дійсного моменту ми говорили про однорідний світловий потік.
Фактично, він і є однорідний, але може виявляти себе в нескінченній
безлічі різних варіацій.

Світловий спектр

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

Триколірна модель (RGB Model)

Людське око в стані реєструвати три основних колірних смуги в діапазоні
хвиль від 400 нм (нанометрів) до 680 нм. Ми звикли ототожнювати їх з
назвами наступних квітів: червоний (R), зелений(G) і синій(B).
(Забудьте, якщо ви чули від художників, що існує три основних кольори, —
червоний, жовтий, синій. Такий підхід актуальний тільки для барвників).
Причина в наявності тільки трьох основних квітів криється не тільки в
«підступ» фізиків, але й у хімічному складі органічної матерії сітківки
ока, здатному реагувати тільки на визначені довжини хвиль, що
відповідають цим квітам. Весь не основний кольори, такі, як жовтий чи
рожевий — це просто комбінації основних квітів.[4]

Саме ці кольори використовуються в телебаченні і виводу зображень на
екран монітора. Ці три кольори дають можливість відтворити більшість
квітів, що ви можете бачити. Ще раз повторимося — більшість, але не усі.
Кольору, вироблені монітором, не є абсолютно чистими, тому і усі
вироблені ними відтінки не можуть бути відтворені з точністю.

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

При моделюванні світла на комп’ютері всі три кольори обробляються
окремо, за винятком яких-небудь нестандартних ситуацій, коли кольору не
впливають один на одного. Іноді повнокольорові зображення одержують
шляхом послідовного прорахунку червоного, зеленого і синього зображень і
їх подальшим комбінуванням.

Звичайно комп’ютери оперують зі світлом у виді величин, що визначають
кількість складових в ньому червоного, зеленого і синього кольорів.
Наприклад, білий — це рівна кількість усіх трьох, Жовтий — рівна
кількість червоного і зеленого і повна відсутність синього. Усі колірні
відтінки можна візуально представити у виді куба, де по осях координат
будуть відкладені відповідні величини трьох вихідних квітів. Це і є
триколірна світлова модель (RGB Model).

Однак є ще цілий ряд колірних моделей світла, що можуть бути навіть
більш зрозумілі для деяких людей. От, наприклад, модель HSV (від
англійських: -Hue — відтінок, Saturation — насиченість, Value —
кількість). Снову ми бачимо три значення, виходить, усі можливі колірні
відтінки можна знову укласти усередину куба.

Ця модель також іноді відома як HSL, де L — luminance, слово інше, а
суть та ж.

Hue: Колір, колірний відтінок

Saturation: Колірна насиченість. Еквівалент відповідного органу
керування на багатьох телевізорах і моніторах.

Value: Інтенсивність. Нуль — значить чорний, більш високі значення
характеризують більш яскраві значення.

Використання світла на практиці

Допущення і спрощення

Як було сказано раніше, конкретний варіант моделювання світла залежить
від вимог до додатка, що ви створюєте. Існує цілий ряд допущень, які
можна застосувати для того, щоб збільшити швидкість прорахунку і виводу
на екран.

Крапкові джерела світла

Для спрощення математичних розрахунків джерела світла звичайно
розглядають у виді крапки в просторі. У переважній більшості випадків це
буде не занадто далеко від реальності. Лампочки і ліхтарі на вулицях
дуже малі в порівнянні з об’єктами, що вони висвітлюють. Проблема
виникає тоді, коли ви хочете зобразити сцену з джерелом світла у виді
довгої люмінесцентної чи лампи сцену, рівномірно освітлювану природним
небесним висвітленням. У цьому випадку вам доведеться застосувати групу
у виді декількох, більш слабких джерел — для того, щоб вони могли
імітувати один великий.

Багаторазові відображення

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

Тіні

Незважаючи на те, що тіні можуть дати спостерігачу додаткову інформацію
про глибину сцени, їхня відсутність іноді може бути незначною втратою. У
залежності від ситуації часто можливо зробити внести спрощення в задачу
прорахунку тіней. Наприклад, ви працюєте над авіасимулятором. У цьому
випадку спостереження тіні літака може бути дуже важливим індикатором
висоти польоту. Але навколишній світ містить всього одне джерело світла
— сонце, а інші предмети дуже малі і розкидані. Таким чином, вам не
треба думати над імітацією тіней на самому літаку і кожнім маленькому
будиночку далеко внизу на землі. Вам досить спроектувати тінь тільки на
площину землі. [4]

Статичні (нерухомі) тіні

Сцени з нерухомими джерелами світла й об’єктами мають статичні тіні.
Мається можливість заздалегідь прорахувати всі тіні в сцені. А потім
використовувати цю інформацію для швидкого промальовування цих тіней на
екрані. Гарним прикладом подібного підходу є ігри типу Quake. Рівень
заздалегідь обраховувався утилітами прорахунку висвітлення, і в
реальному часі движок гри вже не витрачав дорогоцінний процесорний час
на їхнє створення. Усі тіні зберігалися у виді «карти тіней» у самому
файлі рівня й у процесі гри комбінувалися з відповідними текстурами.

PAGE

PAGE 25

Похожие записи