En  Ru  Ua
 
 
 
 
 
 
Часопис картографії

 

 

 

 

 


Геодані

 

 

 

 

 

 

 

 

 

 

 

   

УДК 528.952:644/645

ІСТОРІЯ РОЗВИТКУ АПАРАТНОГО ЗАБЕЗПЕЧЕННЯ, ЯКЕ ВИКОРИСТОВУЄТЬСЯ ДЛЯ СТВОРЕННЯ ТРИВИМІРНИХ РЕАЛІСТИЧНИХ КАРТОГРАФІЧНИХ МОДЕЛЕЙ

ИСТОРИЯ РАЗВИТИЯ АППАРАТНОГО ОБЕСПЕЧЕНИЯ, ИСПОЛЬЗУЕМОГО ДЛЯ СОЗДАНИЯ ТРЕХМЕРНЫХ РЕАЛИСТИЧЕСКИХ КАРТОГРАФИЧЕСКИХ МОДЕЛЕЙ

THE DEVELOPMENT HISTORY OF HARDWARE WHICH USES TO 3D REALISTIC CARTOGRAPHIC MODELS CREATING

        Розглянуто скорочену історію розвитку комп'ютерів. Викладено розвиток відеокарт, починаючи з перших текстових до сучасних з апаратним прискоренням DirectX11 і OpenGL 3.0. Розкриваються технічні можливості відеокарт, їх особливості функціонування, дається їх порівняння з сучасними аналогами. Описано принципи роботи техніки для формування зображення.

        Рассмотрено сокращенную историю развития компьютеров. Изложено историю развития видеокарт, начиная с первых текстовых до современных с аппаратным ускорением DirectX11 і OpenGL 3.0. Раскрываются технические возможности видеокарт, их особенности функционирования, дается их сравнение с современными аналогами. Описано принципы работы техники для формирования изображения.

        There is considered the brief history of computer development. The display board development history is stated from first text to modern using hardware acceleration DirectX11 і OpenGL 3.0. There are exposed the technical possibilities of video display boards and their function peculiarities, there is given the comparison with modern analogs. The technique functioning principles for image forming are describen.

        Вступ. Апаратна частина ЕОМ для роботи з тривимірною графікою пройшла складний шлях розвитку, проте й досі не є досконалою. Відеокарти більшу частину роботи покладають на центральний процесор, оскільки розроблені для ігор, а не для професійної графіки.
        Аналіз останніх публікацій на цю тему. Частина статей присвячена викладенню особливостей роботи графічних бібліотек [2, 10]. Деякі питання роботи відеокарт розкриваються в [1, 3, 11-12]. Опис роботи, характеристик графічних робочих станцій і їх компонентів є в [6, 7]. Але по цим відривкам важко скласти загальну картину роботи графічного обладнання.
        Постановка проблеми. Важливою складовою під час роботи з тривимірною графікою є апаратне забезпечення. Але не найголовнішою – таким є підхід до роботи і обрані програми. Системних ресурсів завжди не вистачає: ця проблема була характерною для робочих станцій з сотнями мегабайт оперативної пам'яті і сотнями мегагерц – такою ж актуальною вона залишається і зараз. Метою статті є розглянути історію розвитку апаратного забезпечення, щоб сформувати правильний підхід до роботи і працювати з програмами так, щоб не виникало недостачі ресурсів.
        Виклад матеріалу дослідження. Перші комп'ютери створювались на основі механічних компонентів. В 1801 році сконструйовано ткацький станок, який міг змінювати візерунок тканини залежно від вставленої перфокарти [5]. Перший проект комп'ютера було запропоновано в 1812 р. і в 1822 створено діючу модель. Елементом пам'яті служило зубчате колесо, а принцип роботи був подібним до арифмометра.
        В 1824 році Чарльз Беббрідж побудував "Різницеву машину". Принцип роботи залишався таким же. В 1837 році він почав працювати над механічною машиною, придатною для розрахунків за формулами.
        Прототип першої ЕОМ був створений в 1936 р. на основі електромеханічних реле. В 1941 році була виготовлена діюча ЕОМ з програмним керуванням. Пам'ять її складала 64 22-розрядних числа з плаваючою комою, з них 7 розрядів відводилось для порядку числа і 15 для мантиси. Електромеханічні ЕОМ містили тисячі реле, які зберігали двійкові числа, а програма обчислень реалізувалась з'єднаннями проводів. Дані вводились за допомогою перфокарт. Часто траплялось так, що реле не спрацьовувало, тоді програма збивалась або давала некоректні результати. Реле не були надійними, тому було вирішено використовувати електронні лампи, які, крім надійності, працювали на три порядки швидше.
        Роки з 1943 по 1955 можна назвати часом лампових ЕОМ. В одному з перших таких комп'ютерів, ENIAC, програма розрахунків задавалась явно, як і в релейних машинах, для чого доводилось вручну на протязі кількох днів під'єднувати проводи. Для прискорення обчислень було вирішено побудувати комп'ютер, який би зберігав програму в своїй пам'яті. Блок обчислень містив тисячі електронних ламп, оперативна пам'ять базувалась на паперових конденсаторах або ртутних лініях затримки, пізніше для збільшення швидкості використовувались феритові кільця. З 1956 р. вже існували магнітні диски. Тактова частота складала від 100 КГц до 2,25 МГц.
        В 1955 р. створено TRADIC – перший транзисторний комп'ютер, який містив 800 транзисторів і 11000 діодів. Тим не менше, ця ЕОМ містила і лампи. З переходом на нову елементну базу тактову частоту вдалося збільшити до 100 МГц (IBM-7030), для чого були використані дрейфові транзистори.
        З 1960-х років розпочалося виробництво гібридних схем. В останніх плівкові елементи (витравлені на підкладинці) поєднуються з конструкційно окремими безкорпусними напівпровідниковими компонентами. До початку 70-х освоєно виробництво інтегральних.
        Історія комп'ютерів четвертого покоління на інтегральних мікросхемах почалася в 1971 р., коли японська фірма Busicom замовила Intel Corporation виготовити 12 типів мікросхем для калькуляторів різних моделей. Невеликий об'єм кожної партії значно збільшував вартість розроблення, тому було вирішено розробити універсальний мікропроцесор. Його тактова частота складала 0,75 МГц і він був 4-розрядним, тобто дозволяв кодувати всі цифри і спеціальні символи, яких було достатньо для калькулятора.
        Оскільки комп'ютери працюють і з текстом, потрібний вже 8-розрядний процесор, щоб охопити їх усі. Він з'явився в 1972 р. і називався Intel-8008, а в 1974 – Intel-8080. В останнього частота була 2 МГц і апаратно реалізовано ділення чисел. Подальша історія розвитку комп'ютерів відома для більшості читачів. IBM 286-486, Intel Pentium 1-4, DualCore, Core2Duo, Core2Quad, Core i3-і7.
        Розвиток комп'ютерної графіки. Більшість лампових ЕОМ не мали дисплеїв, результат обчислень друкувався на папері за допомогою алфавітно-цифрових принтерів. Так було зручніше аналізувати результати обчислень і відлагоджувати програму. Можна було програмувати машину для отримання візерунків на папері. В 1948 році створено нумероскоп – прототип дисплея. В цій електронно-променевій трубці під керівництвом ЕОМ з'являлись цифри.
        Проект "Вихор" Масачусетського технологічного інституту можна вважати початком ери комп'ютерної графіки. Робота над ним розпочалася в роки Другої Світової війни, коли виникла необхідність створення імітатора польотів. Перший "Вихор" – це аналоговий комп'ютер, який успішно вирішував поставлені задачі, але програмувати його було складно. В 1947 р. було вирішено використати цифровий комп'ютер, для якого остання проблема вирішувалась простіше. В 1951 році "Вихор" запустили в експлуатацію. Він був адаптований для роботи в режимі реального часу і мав дисплей (електронно-променеву трубку), який імітував радар. Оперуючи даними, в тому числі і від пілота, система виводила результати на дисплей. Пізніше цей комп'ютер було переорієнтовано на обробку даних, отриманих від радара [13].
        Комп'ютерна графіка 50-х років давала можливість вивести кілька відрізків на екран. Найбільшою проблемою була висока завантаженість процесора під час виведення. Графіка прорисовувалась в режимі реального часу, тобто програма зациклювалась, щоб відобразити графічний результат. Введення даних виводило машину з циклу і робота продовжувалась до нового зациклення. Суттєвим кроком було розроблення системи з буфером кадрів, яка знімала навантаження з процесора. Машина прорисовувала зображення лише раз і воно залишалось в пам'яті, доки не оновиться. Пізніше оновлення допускалось частинами.
        Сучасні комп'ютери мають кілька таких буферів: як мінімум 2 на відеокарті і один – на моніторі. В той час растрові системи потребували багато пам'яті (для кожної точки – не менше біта) і були дуже дорогими, оскільки типова ємність мікросхеми пам'яті складала 256 біт. Як альтернатива, застосовувались системи з запам'ятовуючою електронно-променевою трубкою. Комп'ютер один раз прорисовував зображення, а в трубці воно трималося до години. Це дуже здешевлювало виробництво дисплеїв [9]. Стирання відбувалось шляхом подачі спеціальної напруги: зображення зникало за півсекунди. Його не можна було стерти частково, тому інтерактивність і анімація не були доступні.
        В 1968 році створено перший в Радянському Союзі растровий дисплей. Пам'ять буфера кадрів розміщувалась на магнітному барабані, сам дисплей підключався до машини БЕСМ-6.
        У векторному дисплеї з регенерацією зображення промінь електронів прорисовував лінії, які розміщувались довільно. Для повторної прорисовки зображення зберігалось в пам'яті, кількість якої була меншою, ніж для растрового дисплея. Якщо зображення було насиченим, екран починав блимати, оскільки промінь не встигав прорисовувати всі вектори, поки зображення ще тримається. Також недоліком векторних дисплеїв була невисока кількість градацій яскравості (від двох до чотирьох). Розроблені були, але не знайшли застосування дисплеї з дво-триколірними трубками, які забезпечували більшу кількість градацій. У векторних дисплеях для оновлення зображення достатньо було змінити дисплейний файл, тому векторні дисплеї набули поширення раніше – в кінці 60-х років.
        З середини 70-х почали широко використовуватись растрові дисплеї, оскільки вдалось реалізувати буферизацію даних за допомогою мікропроцесорів. Дані можна було редагувати і контролювати перед передачею в ЕОМ, що значно зменшило кількість помилок. На екрані з'явився курсор – мітка, яка показувала місце введення символа.
        З середини 70-х почалось розроблення персональних комп'ютерів. В 1976 році створено Apple-1, який продавався без клавіатури і монітора. В 1977 р. випущено Apple-II, який вже міг виводити кольорове зображення на вбудований дисплей.
        В 1979 році розроблено комп'ютер IBM PC, дисплей якого відтворював контрастні символи. Через відкриту архітектуру до 1984 року комп'ютери на основі  IBM PC випускали більше, ніж 50 компаній.
        В 1984 році з'явився Makintosh компанії Apple Computer. Він постачався з монітором 9 дюймів, який відтворював досить якісне зображення. Операційна система Mac OS мала наочний, візуальний інтерфейс (аналог Windows) і потужності комп'ютера було достатньо для обробки графіки. На ньому завантажувалось кілька потужних, як для того часу, графічних редакторів.
        В 1985 році створено комп'ютер Amiga 1000. Він мав просунуті, як на той час, графічні і звукові можливості, операційна система була багатозадачною. Компанія Commodore швидко перетворилась на лідера. Цей комп'ютер перший у світі виводив зображення з більшою за 16 кількістю кольорів (максимум 4096), роздільна здатність складала 320?200. Він коштував 2000 дол. США, тоді як однозадачний IBM 286 – 4000 доларів.
        Більшість тогочасних комп'ютерів не мали окремого графічного адаптера в тому розумінні, яким він є зараз (з відеопроцесором і пам'яттю). Виведення зображення реалізовувалось через BIOS. Наприклад, в домашньому комп'ютері ZX Spectrum (випускався впродовж 1982-1992) не було окремого графічного чіпа. Єдиний штатний режим підтримував роздільну здатність 256?192 точки. Доступною була тільки одна відеосторінка, розміщена в основній пам'яті комп'ютера за фіксованою адресою. Колір задавався атрибутами, по одному байту атрибутів на знакомісце 8?8 пикселів, тому часто мав місце конфлікт атрибутів. Виводити зображення можна було тільки на центральну частину, а по периметру був бордюр, для якого можна було змінювати тільки колір [7].
        Дискретні графічні адаптери з'явились головним чином в комп'ютерах IBM. Одним з перших став MDA (Monochrome Display Adapter), випущений 1981 році, який працював у текстовому режимі з роздільною здатністю 25?80 символів (фізично 720?350 точок) і мав п'ять атрибутів тексту: звичайний, яскравий, інверсний, підкреслений і блимаючий. Ніякої кольорової і графічної інформації він передати не міг. Букви зазвичай були чорно-білими, бурштиновими або смарагдовими: це залежало від монітора.
        Фірма Hercules в 1982 році випустила наступну версію MDA, відеоадаптер HGC (Hercules Graphics Controller – графічний адаптер Геркулес), який мав роздільну здатність 720?348. Інші характеристики були тими ж. Кількість символів, які відтворював адаптер, справила вплив на форматування кодів програм, наприклад, вихідні тексти ядра Linux в кожній стрічці містять не більше 80 символів, щоб їх зручно було переглядати. Для зображення символу використовувалась матриця 9?14 пікселів, з яких сам символ займав 7?11, а інші формували пустий простір навколо нього.
        Відеопам'ять складала 4 Кбайт, частота розгортки 50 Гц. Адресувати окремі пікселі не було можливим, у кожне знакомісце можна було помістити один з 256 символів, образи яких зберігались в постійній пам'яті відеокарти. [7].
        Першою кольоровою графічною платою стала IBM CGA (Color Graphics Adapter). Вона могла працювати в текстовому режимі з роздільною здатністю 40?25 або 80?25 (матриця символа 8?8) і в графічному (320?200 або 640?200). У текстових режимах доступно 256 атрибутів символів – 16 кольорів символу і 16 фону (або 8 кольорів фону і атрибут миготіння), у графічному режимі 320?200 було доступно чотири палітри по чотири кольори в кожній, режим високої роздільної здатності 640?200 був монохромним. Відеопам'ять складала 16 Кбайт, крім того, вона не підтримувала одночасний запис і читання. Якщо таке траплялось, на екрані з'являвся сніг – випадкові пікселі у випадкових місцях. В графічних режимах відеопам'ять мала черезстрочний формат, тому програмувати її було важко. В адаптері можна було звернутись до будь-якого пікселя без конфліктних зон, як це було в інших відеокартах того часу.
        Як подальший розвиток цієї карти у 1984 р. з'явився EGA (Enhanced Graphics Adapter – покращений графічний адаптер) з розширеною до 64 кольорів палітрою і кадровим буфером. Роздільна здатність зросла до 640?350, додався текстовий режим 80?43 з матрицею символа 8?8. Відеопам'ять складала на початку 64 Кбайт, пізніше була збільшена до 256 Кбайт.
        Після виходу EGA IBM відійшла від виробництва відеокарт, визначаючи тільки специфікації. Було визначено два стандарти: VGA і SVGA.
        Стандарт VGA (1987 р., Video Graphics Array – графічний відеомасив) визначив максимальну роздільну здатність 640?480, частоту оновлення 60 Гц і кількість кольорів 256 з 262144-кольорової палітри, для чого було потрібно 256 КБайт відеопам'яті. Сигнал мав бути аналоговим, щоб скоротити кількість проводів у сигнальному кабелі. Попередні відеокарти подавали цифровий сигнал.
        З 1991 року введений стандарт SVGA (Super VGA) – розширення VGA, яке передбачало режими з більшою за 640?480 роздільною здатністю і можливістю встановлення кількох частот кадрів. Палітра кольорів налічувала 65 тисяч (High Color, 16 біт) або 16 мільйонів (True Color, 24 біта).
        Прорисовка вікон і курсора покладалась на процесор, тому комп'ютер витрачав багато ресурсів на візуалізацію двовимірної графіки. Графічний інтерфейс користувача, який з'явився в багатьох операційних системах, стимулював новий етап розвитку відеоадаптерів. З'явилось поняття "графічний прискорювач". В останніх виконання деяких графічних функцій здійснюється на апаратному рівні. Це переміщення великих блоків зображення з однієї ділянки екрана до іншої (наприклад, під час пересування вікна), прорисовка ліній, дуг, шрифтів, візуалізація курсора [4]. Всі ці функції було вирішено покласти на окрему мікросхему – графічний процесор (GPU).
        В 90-х роках відеокарти розділились на кілька класів: ігрові, офісні, професійні і спеціалізовані. Ігрові і професійні набули найбільшої популярності. Більшість відеокарт здійснювала тільки виведення зображення, отриманого від процесора. Пам'ять у них використовувалась тільки під кадровий буфер, тобто для збереження зображення, яке поступово надсилав процесор.  Її кількість впливала на роздільну здатність (розмір кадра) і глибину кольору. Професійні відеокарти фірм ATI, S3 і Matrox підтримували на апаратному рівні тільки двовимірну графіку.
        Професійні адаптери для тривимірної графіки випускала 3Dlabs. Допускалось встановлення кількох відеокарт в систему зі зростанням продуктивності, графічний чіп підтримував мультипроцесорні системи, а швидкість візуалізації не залежала від завантаженості центрального процесора [5]. 3D-карти того часу орієнтувались саме на стандарт OpenGL, який вважали найкращим для професійних програм, в той час як Direct3D – орієнтованим на ігри. На сьогодні продуктивність роботи Direct3D 9-11 вище за OpenGL 3.0.
        На кінець 1998 р. характеристики професійного прискорювача складали:
        - кадровий буфер від 8 до 16 МБайт, тому роздільна здатність складала від 1024?768 і 1280?1024 до 2560?2048.
        - пам'ять для текстур – 16-32 Мбайт;
        - продуктивність візуалізації 0,65 – 1,3 млн. трикутників за секунду;
        Вартість типового прискорювача складала 3000 доларів США.
        На сьогодні 3Dlabs займає незначну долю ринку і випускає професійні тривимірні прискорювачі 3Dlabs Wildcat середньою вартістю близько 800 доларів, призначені для САПР.
        Виробники HP і Intergraph пропонували власні робочі станції для роботи з тривимірною графікою. Їх компоненти не продавались окремо, оскільки містили мікросхеми власного розроблення, несумісні з іншими комп'ютерами [12]. Робоча станція Intergraph в 1997 році мала монітор 28 дюймів, 2 процесори Pentium II/266, до 512 МБайт оперативної пам'яті, 12 Гбайт на жорстких дисках. Базова конфігурація TDZ-320 з процесором Pentium Pro/200 (32-Мбайт ОЗУ, 2,1-Гбайт диск SCSI, графічна підсистема Z13) коштувала близько 7 тис. дол. США. Робочі станції могли містити до 4-х процесорів. Вартість найбільш просунутих систем починалась з 21 тис. дол. (на 1997 рік) [12].
        В той час комп'ютерні ігри ставали все більш популярними, особливо ті, в яких так чи інакше була задіяна тривимірна графіка. Це передбачало збільшення навантаження на процесор, якому потрібно було додатково обраховувати координати трикутників тривимірних об'єктів для виведення (проектування) зображення на екран. Процесори мали тактову частоту близько 20-40 МГц, тому в грі з елементами тривимірності частота кадрів різко знижувалась. Це зменшувало ефект, але встановити професійну відеокарту 3DLabs геймери не мали змоги.
        Почали виникати організації, які випускали обладнання саме для ігрових комп'ютерів, наприклад компанія 3Dfx, утворена в 1994 р. Інші фірми теж почали створювати такі відеокарти. До кінця 90-х років  кількість ігрових відеокарт перевершила число професійних.
        Перші ігрові адаптери мали пам'ять 4 МБайт, але і коштували відносно дешево ($300), тому їх могли придбати не тільки компанії, а й окремі геймери [1]. В них була відсутня 2D-складова, тому їх назвали тривимірними прискорювачами. Для роботи була потрібна ще і звичайна відеокарта, будь-якого виробника. Під час роботи з двовимірною графікою прискорювач пропускає сигнал відеокарти, а в іграх відеокарта не брала участі, а всі розрахунки здійснював прискорювач. Аналоговий вихід відеокарти (VGA) підключався до входу прискорювача, а вже з останнього сигнал подавався на монітор.
        Відеокарти для комп'ютерів Apple Makintosh не відрізняються від таких же для x86 нічим, крім прошивки і ціни, тому розглядати їх окремо не має сенсу. На сьогодні Mac Pro є найпотужнішим комп'ютером серії Mac. На нього встановлюють відеокарти nVidia і ATI, а сам комп'ютер є завершальним у міграції з PowerPC на архітектуру х86.
        Intel спеціалізується на випуску дешевих відеокарт, в тому числі для мобільних платформ. Вбудовані відеокарти генерують гірше зображення, але побачити різницю можна, тільки маючи 2 комп'ютери з однаковими моніторами. Вони входили в набір базової логіки Intel, якою оснащувалися материнські плати. Сучасні процесори Intel містять інтегроване графічне ядро (починаючи від Core і3). Дискретні відеокарти Intel для ноутбуків мають ще один недолік: при використанні LED-дисплеїв (вони мають світлодіодну підсвітку, що знижує енергоспоживання) сам чіп відеокарти починає пищати. Оскільки живлення на відеокарту подається дискретно, то зниження потужності призводить до входу частоти коливання чіпа у звуковий діапазон.
        Недоліком таких інтегрованих відеокарт є власна невелика пам'ять, яка витрачається під кадровий і z-буфери. Для текстур її не вистачає, тому вони зберігаються в оперативній пам'яті комп'ютера. І накладення текстур відбувається прямо з оперативної пам'яті. Сам відеочіп не може зберігати текстури, бо ця функція просто не передбачена [3].
        nVidia і АТІ випускають уніфіковані ігрові і професійні відеокарти.
        Після 2000 року інтегровані адаптери витісняють дискретні графічні рішення. Це пов'язано з переважанням продажів ноутбуків над стаціонарними комп'ютерами. А більшість ноутбуків мають інтегровані відеокарти. Крім того, зменшення розмірів комп'ютерів теж передбачає перехід до інтегрованих, наприклад корпус nettop не дозволяє розмістити дискретну відеокарту.
        Сучасні графічні процесори за складністю не поступаються центральному процесору комп'ютера і часто містять більшу кількість транзисторів. Архітектура GPU передбачає наявність декількох блоків обробки інформації: окремо для 2D і 3D-графіки. Останній включає геометричне ядро, яке візуалізує вершини трикутників і блок растеризації, який розміщує текстури на поверхні полігонального каркасу. Контролер зовнішньої шини даних (PCI, AGP або PCI-e) відповідає за обмін з материнською платою, контролер внутрішньої шини забезпечує обмін між графічним процесором і пам'яттю, а запис даних в останню забезпечує контролер відеопам'яті. Сучасні графічні адаптери (ATI, nVidia), як правило, мають два відеоконтролери, які працюють незалежно. Це дозволяє виводити зображення на 2 монітори. У відеопам'яті зберігаються по 2 буфери кадрів, текстури, координати вершин, команди графічному процесору і результати проміжних обчислень. Графічний процесор візуалізує всі дані, отримані від операційної системи. Це векторні шрифти і лінії вікон програм і компонентів, растрові піктограми. Растеризація здійснюється з максимальною роздільною здатністю, а потім зображення зменшується до виставленого у налаштуваннях і пересилається через відеоконтролер у кадровий буфер. Цифро-аналоговий перетворювач (ЦАП, RAMDAC – Random Access Memory Digital-to-Analog Converter) служить для перетворення зображення, яке сформував графічний процесор і записав у кадровий буфер, в аналоговий сигнал, який подається на монітор. Найчастіше RAMDAC має чотири основних блоки – три цифроаналогових перетворювачі, по одному на кожний канал (червоний, зелений, синій, RGB) і SRAM для зберігання даних про гамма-корекцію. Більшість ЦАП мають розрядність 8 біт на канал – виходить по 256 рівнів яскравості, що складає палітру 16,7 млн. кольорів. За рахунок гамма-корекції є можливість відобразити ще більший кольоровий простір. Деякі RAMDAC мають розрядність 10 біт на канал (1024 рівня яскравості), що дозволяє передавати понад мільярд відтінків, але ця можливість використовується тільки в новітніх дисплеях з інтерфейсом DisplayPort.
        Процес візуалізації зображення у відеокарті прийнято називати 3D-конвеєром, оскільки кожний наступний етап працює з результатами попереднього. Тільки так можна забезпечити потрібну продуктивність роботи. Принцип дії, як у центрального процесора, на 2 порядки повільніший. Конвеєр повністю виконується для ігор, а візуалізація в редакторах тривимірної графіки може випускати більшу його частину.
        На першому, підготовчому етапі гра за допомогою процесора визначає перелік об'єктів, які потрапляють у поле зору камери (тривимірні моделі, частина території ігрового простору, спрайти), їх координати і фази анімації, задіяні текстури і ефекти. Також у відеокарту надсилається положення й орієнтація віртуальної камери. Всі ці дані називаються тривимірною сценою.
        Першим кроком є теселяція – розділення складних поверхонь і полігонів на трикутники. Далі здійснюється трансформація координат вершин об'єктів сцени в екранні, визначення джерел світла і відсікання невидимих ділянок сцени.
        Трансформація координат в свою чергу складається з кількох етапів. Всі об'єкти проходять кілька стадій перетворення в різні системи координат, останні ще називають просторами (spaces). Спочатку локальні, або модельні координати кожного об'єкта перетворюються у глобальні, або світові координати. Тобто, використовуючи інформацію про розташування, орієнтацію, масштаб і поточний кадр анімації кожного об'єкта, програма одержує вже набір трикутників у єдиній системі координат. Потім координати трансформуються у систему камери, щоб отримати перспективне зображення, а не ортогональне. Для цього движок здійснює матричні перетворення з лінійної алгебри: вектор вершини 1х4 (x,y,z,w, де w – коефіцієнт масштабування для перспективної корекції) множиться на спеціальну матрицю трансформацій. Так найпростіше виключити з подальшої обробки цілком невидимі і "обрізати" частково видимі для спостерігача фрагменти сцени.
        Видимі трикутники сцени передаються на наступну стадію конвеєра – освітлення. Вони передаються не по одному, а групами: пооб'єктно. За інформацією про розташування, колір, тип і яскравість всіх розміщених у сцені джерел світла розраховується ступінь освітленості й колір кожної вершини трикутника. Ці дані будуть використані пізніше під час растеризації. Наприкінці, після корекції перспективи, координати трансформуються ще раз, тепер уже в екранний простір.
        На цьому закінчується тривимірна векторна обробка зображення і наступає черга двовимірної, тобто текстурування і растеризації. Сцена на цьому етапі є набором псевдотривимірних трикутників, які лежать у площині екрану, але з інформацією про глибину щодо екрану кожної з вершин.
        Растеризатор обчислює колір всіх пікселів в межах трикутника. На трикутники накладаються текстури, часто в кілька шарів (основна текстура, текстура освітлення, текстура деталізації тощо) і з різними режимами модуляції. На цьому ж етапі виконується остаточне видалення невидимих ділянок сцени. Адже трикутники можуть розташовуватися на різній відстані від екрану і перекривати один одного повністю, частково або перетинатися. Здійснюється остаточний розрахунок освітлення з використанням вибраної моделі затінення, тепер уже для кожного пікселя зображення. Як правило, кінцевим результатом цього процесу є видимі (або частково видимі) фрагменти 2?2 пікселя – так звані «квади», які підлягають зафарбуванню. Саме такі фрагменти найбільш зручні для швидкого обчислення кольору пікселів [6].
        Кожний піксель заноситься в кадровий буфер зі значенням глибини. Якщо новий піксель розташовується вище, він записується поверх старого. Після закінчення візуалізації, коли кадровий буфер повністю заповнений, він відображається на екрані. Новий кадр береться в обробку ще до того, як закінчиться обробка старого. У випадку інтерактивного впливу користувача (наприклад, зміни напрямку руху) починає будуватись новий кадр, а оброблення попереднього може припинитись на середині конвеєра. Відеокарта повторно візуалізує зображення в грі, навіть якщо воно нерухоме. А в графічних програмах повторна візуалізація не виконується.
        Архітектурні відмінності поколінь відеокарт. Кожна стадія 3D-конвеєру дуже ресурсомістка, вимагає здійснення мільйонів і мільярдів операцій для одного кадру зображення, причому двовимірні етапи текстурування і растеризації вимагають значно більше обчислень, ніж операції з геометрією на початку конвеєра.
        Перше покоління прискорювачів реалізувало тільки останній етап: текстурування і растеризацію, всі попередні кроки виконувались програмно. Але зі зростанням складності сцен в тривимірних іграх програмна трансформація й освітлення стали перешкоджати збільшенню швидкості роботи. Тому в 3D-акселераторах, починаючи з перших моделей nVidia GeForce і ATI Radeon було додано блок, який на початку назвали T&L-блоком, а згодом TCL-блоком (Transformation-Clipping-Lighting), оскільки він виконував трансформацію, відсікання й освітлення. Теоретично процесор мав виконувати тільки розрахунки фізики і інтелекту гри.
        Апаратна реалізація функцій призвела до втрати гнучкості, яка властива програмним рішенням. Для реалізації нестандартної функції або ефекту потрібно було або відмовитися від T&L і використовувати програмний алгоритм, або виконувати постобробку зображення (що не завжди можливо і теж повільно). Ще один вихід – чекати реалізації потрібної функції в наступному поколінні відеокарт. Але і для виробників апаратури це створювало додаткові незручності: подальше вдосконалення відеокарт призводило до ускладнення графічного чіпа і зростання громіздкості драйверів.
        Тому потрібно було знайти спосіб на мікрорівні керувати відеокартою. Така можливість до певної міри вже була реалізована в тривимірних редакторах і називалася шейдер (shader). Це невелика програма, яка складається з набору операцій, які часто застосовуються в 3D-графіці. Програма завантажується в акселератор і безпосередньо керує роботою графічного процесора, тобто конфігурує його вузли для відповідної обробки елементів. Якщо до цього часу програміст був обмежений набором заздалегідь визначених способів обробки і ефектів, то тепер він міг складати з простих інструкцій програми для реалізації потрібних дій.
        Функціонально шейдери поділяються на дві групи: вершинні (vertex shaders) і піксельні (pixel shaders). Перші замінюють всю функціональність T&L-блоку відеокарти і, як видно з назви, працюють з вершинами трикутників. В останніх моделях акселераторів цей блок фактично відсутній: його емулює відеодрайвер за допомогою вершинних шейдерів. Піксельні шейдери надають гнучкі можливості для програмування блоку мультитекстурування і працюють уже з окремими пікселями екрану. Фрагментні шейдери служать для оброблення квадів, що дозволяє реалізувати деякі текстурні ефекти.
        Шейдери також характеризуються номером версії: кожна наступна додає до попередньої нові можливості. Перша версія включала лише кілька команд, тому їх неважко було програмувати на низькорівневій мові асемблера. Хоча цей код непросто відлагоджувати. Але з ростом складності шейдерних ефектів виникла необхідність у більш зручній, високорівневій мові написання шейдерів. Їх виникло зразу 2: NVIDIA Cg (C for graphics) і Microsoft HLSL (High Level Shading Language) – остання є частиною стандарту DirectX 9. Cg не отримав поширення, оскільки GLSL був більш досконалим [11].
        За допомогою шейдерів можна реалізувати, наприклад, оптично точне (попіксельное) освітлення і м'які тіні від всіх об'єктів, довільні моделі освітлення; ефекти відбиття й заломлення променів для моделювання води, льоду, скла, вітражів, підводних відблисків тощо; реалістичні брижі та хвилі на воді [8]. Шейдери з'явились в четвертому поколінні відеокарт.
        П'ятому поколінню відеокарт відповідає друга версія шейдерів. До переліку інструкцій внесли апаратне згладжування.
        Шейдери останньої версії (3.0) мають динамічне керування потоку. Це дозволяє підвищити швидкість побудови сцени, але і ускладнює чіп. Для деяких вершин потрібно виконувати не весь шейдер, а невелику (приблизно десяту) його частину. Це дає прискорення в роботі, але повні шейдери виконуватимуться повільніше. Цій версії відповідає шосте покоління відеокарт.
        Функції Direct3D і OpenGL, які на перший погляд апаратно виконувались на відеокартах, значну частину обчислень переносили на центральний процесор. Інструкції графічних бібліотек OpenGL і DirectX містять багато арифметичних операцій, які виконувати доводиться центральному процесору, точніше арифметичному сопроцесору. Це явище має місце і сьогодні. Під час панорамування/обертання тривимірної моделі процесор завантажується на 100%, а графічний процесор відеокарти – менше ніж на 1%. В програмах двовимірної графіки ситуація подібна: більша частина інструкцій прорисовки виконується процесором.
        Тому логічним кроком було додати в перелік базових функцій шейдерів можливість виконання арифметичних операцій, особливо ділення чисел з плаваючою комою. І теоретично використовувати відеокарту замість сопроцесора.
        Технологія виконання арифметичних операцій, прописаних у шейдерах, з'явились у відеокартах восьмого покоління. Вона отримала назву Ati Stream і nVidia Cuda відповідно. В зв'язку з тим, що кількість ядер у відеокартах багатократно зросла (від 32 у GeForce 9500 до 112 у GeForce 8800 (9800) з тактовою частотою від 500 до 900 МГц), продуктивність відеокарт у виконанні арифметичних операцій стала перевищувати відповідний показник центрального процесора.
        Висновки. Сучасні відеокарти так чи інакше розроблені для ігор. Виключення становлять спеціалізовані вироби, призначені для двовимірної графіки і виведення на кілька моніторів. Саме тому прорисовка прикладної двовимірної і тривимірної графіки більшою мірою покладена на процесор – інакше чому останній так завантажується під час її відображення? Тим не менше, саме уніфікація зробила комп'ютерну графіку доступною.
        Перспективи дослідження. Не всі користувачі комп'ютерів є геймерами. Проте навіть професійні відеокарти не завжди задовільно працюють з прикладною графікою. Складається таке враження, що програмне забезпечення стимулює зростання системних вимог і спричиняє необхідність придбання нових комп'ютерів. Тому його слід підбирати відповідно до виконуваних задач, приділяючи увагу і алгоритму формування останньої.

 

Список літератури:

        1. Баланин К. IT-история: 3dfx Interactive. – [Електронний ресурс]. – Режим доступу: http://itc.ua/articles/it-istoriya_3dfx_interactive_43082/
        2. Белявский Д. OpenGL. Рыцарь, лишенный наследства. Лучшие компьютерные игры. – №12 (73), 2007. – [Електронний ресурс]. – Режим доступу: http://www.lki.ru/text.php?id=3859.
        3. Гарматюк С. Часто задаваемые вопросы по видеокартам, сделанным на чипе Intel 740 и ответы на них. – [Електронний ресурс]. – Режим доступу: http://faqs.org.ru/hardw/video/Intel740.
        4. Електронна стаття "И мир стал трехмерным часть 2". – [Електронний ресурс]. – Режим доступу: http://agree.pp.net.ua/publ/2-1-0-5.
        5. Електронна стаття "История развития компьютеров". – [Електронний ресурс]. – Режим доступу: http://uch.org.ua/technology/it/883-istoriya-razvitiya-kompyuterov.html.
        6. Електронна стаття "Профессиональные графические станции". – [Електронний ресурс]. – Режим доступу: http://www.arbyte.ru/products/graphic/index.shtml
        7. Електронна стаття "ZX Spectrum". – [Електронний ресурс]. – Режим доступу:   http://ru.wikipedia.org/wiki_ZX_Spectrum.
        8. Електронна стаття "Современные технологии трехмерной графики". – [Електронний ресурс]. – Режим доступу: http://itc.ua/articles/sovremennye_tehnologii_trehmernoj_grafiki_14781/
        9. Калинин И. "История компьютерной графики". Информатика, изд. дом "Первое сентября", № 16 (545), 2007. – [Електронний ресурс]. – Режим доступу: http://inf.1september.ru/?year=2007&num=16.
        10. Калиниченко А. OpenGL vs Direct3D. – [Електронний ресурс]. – Режим доступу:  http://www.thalion.kiev.ua/idx.php/149/124/article/
        11 Колганов И. Краткая история и основные принципы работы 3D-ускорителей. – [Електронний ресурс]. – Режим доступу: http://www.izcity.com/data/hard/article528.htm
        12. Мартыненко К. Голобородько T. Обзор профессиональных 3D-ускорителей. – [Електронний ресурс]. – Режим доступу: http://www.ixbt.com/video/ogl_proboards.html.
        13. Черняк Л. У мини-компьютеров DEC тоже был свой прародитель. – Computerworld Россия, №47, 2004. – [Електронний ресурс]. – Режим доступу: http://www.osp.ru/cw/2004/47/83653.

 
 

 
 
  +38 098-456-90-20
  +38 095-311-69-98
UkrNetMail logograd@ukr.net  
Gmail

inventlib@gmail.com

 

FBMessenger https://www.facebook.com/logograd FaceBook facebook.com/logograd  
Viber +38 098 456 90 20 linkedin.com/in/andrey-oreshchenko  
Telegram +38 098 456 90 20 Instagramm andrey_oreshchenko  
WhatsUp +38 098 456 90 20