O'yin dvigatellari - 3 o’lchovli grafika imkoniyatlarini loyihalashda qo’llash reja

|
3 o’lchovli grafika imkoniyatlarini loyihalashda qo’llash reja
|
bet | 4/7 | Sana | 14.05.2024 | Hajmi | 252,32 Kb. | | #231664 |
Bog'liq 3 o’lchovli grafika imkoniyatlarini loyihalashda qo’llash rejaO'yin dvigatellari
Kompyuter o'yinlarining birinchi qoidasi - hech qanday qoidalar yo'q. An'anaga ko'ra, o'yin ishlab chiquvchilari texniklarning tavsiyalariga amal qilishdan ko'ra o'z dasturlarining ajoyib grafikalari bilan ko'proq qiziqishadi. Ishlab chiquvchilar o'z ixtiyorida ko'plab 3D API-larga ega bo'lishiga qaramay, masalan - Direct3D, ba'zi dasturchilar o'zlarining 3D o'yin interfeysi yoki dvigatelini yaratishga harakat qilmoqdalar. Xususiy o'yin dvigatellari ishlab chiquvchilar uchun ajoyib realizmga erishishning bir yo'li bo'lib, grafik dasturlash chegaralarini deyarli bosadi.
Ishlab chiquvchi uchun tizim komponentlarining apparat funktsiyalariga to'g'ridan-to'g'ri kirishdan ko'ra istalgan narsa yo'q. Bir nechta taniqli ishlab chiquvchilar o'zlarining o'yin dvigatellarini yaratdilar, bu ularga shon-shuhrat va pul olib kelgan apparat grafik tezlatkichlaridan optimal foydalanadi. Masalan, Descent II va id Software for Quake uchun Interplay dvigatellari mavjud bo‘lganda immersiv 3D apparat funksiyalaridan foydalangan holda haqiqiy 3D harakatni ta’minlaydi.
Murosasiz grafika
Ko'ngilochar va biznes kabi sohalarda 3D grafikadan foydalanish istiqbollari haqida anchadan beri davom etayotgan muzokaralar potentsial foydalanuvchilarning qiziqishini cheklab qo'ydi, yangi mahsulot turi allaqachon paydo bo'lgan. bozor. Ushbu yangi texnologik yechimlar Windows tezlatkichlari uchun bugungi kun talablariga javob beradigan 2D grafiklarni mukammal qo‘llab-quvvatlashni, 3D grafik funksiyalarini apparat ta’minotini va kerakli kadrlar tezligida raqamli videoni o‘ynatishni birlashtiradi.
Printsipial jihatdan, ushbu mahsulotlarni ish stoli hisoblash tizimlarida standart uskunalar sifatida munosib o'rin egallagan grafikani murosasiz ta'minlovchi keyingi avlod grafik quyi tizimlariga ishonch bilan bog'lash mumkin.
Yangi avlod vakillari orasida biz misol sifatida quyidagi mahsulotlarni nomlashimiz mumkin:
Markaziy protsessor Sayohatga chipta kompaniya To'qqiz raqamli vizual texnologiyalar
protsessorlar seriyasi ViRGE kompaniya S3 Inc.
Markaziy protsessor RIVA128 kompaniyalar tomonidan birgalikda ishlab chiqilgan SGS Tomson va nVidia
3D grafik texnologiyasi
Keling, sizni 3D grafikani amalda sinab ko'rishga ishontirishga muvaffaq bo'laylik (agar buni hali qilmagan bo'lsangiz) va siz 3D video kartadan foydalanish uchun mo'ljallangan 3D o'yinlardan birini o'ynashga qaror qildingiz.
Aytaylik, avtopoyga simulyatori shunday o'yin bo'lib chiqdi va sizning mashinangiz allaqachon yangi rekordlarni zabt etishga intilishga tayyor. Ishga tushirishdan oldingi ortga hisoblash davom etmoqda va siz monitor ekranida ko'rsatilgan kokpit ko'rinishi siz o'rganganingizdan biroz farq qilishini sezasiz.
Siz ilgari bunday poygalarda qatnashgansiz, lekin birinchi marta tasvir sizni favqulodda realizm bilan hayratda qoldiradi, sodir bo'layotgan voqealarning haqiqatiga ishonishga majbur qiladi. Ufq uzoqdagi narsalar bilan birga ertalabki tumanga g'arq bo'ladi. Yo'l g'ayrioddiy silliq ko'rinadi, asfalt - bu iflos kulrang kvadratchalar to'plami emas, balki yo'l belgilariga ega monoxromatik sirt. Yo'l bo'yidagi daraxtlar chindan ham bargli tojlarga ega bo'lib, ularda alohida barglar ajralib turadigan ko'rinadi. Butun ekran, umuman olganda, haqiqatni taqlid qilish uchun ayanchli urinish sifatida emas, balki haqiqiy istiqbolga ega sifatli fotosurat taassurotini beradi.
Keling, qanday texnik echimlar 3D video kartalarga virtual haqiqatni bunday realizm bilan etkazishga imkon berishini aniqlashga harakat qilaylik. Qanday qilib kompyuter vizuallari professional 3D grafika studiyalari darajasiga yetdi.
Uch o'lchovli dunyoni ko'rsatish va modellashtirish bilan bog'liq hisoblash operatsiyalarining bir qismi endi 3D video kartaning yuragi bo'lgan 3D tezlatgichga o'tkaziladi. Markaziy protsessor endi displey muammolari bilan deyarli band emas, ekran tasviri video karta tomonidan shakllantiriladi. Bu jarayon apparat darajasida bir qator effektlarni amalga oshirishga, shuningdek, oddiy matematik apparatdan foydalanishga asoslangan. Keling, 3D grafik protsessor aniq nima qila olishini aniqlashga harakat qilaylik.
Poyga simulyatorimiz misoliga qaytsak, keling, yo'lning sirtlari yoki yo'l chetidagi binolar qanday qilib real tarzda ko'rsatilishi haqida o'ylab ko'raylik. Bu tekstura xaritalash deb ataladigan keng tarqalgan texnika yordamida amalga oshiriladi.
Bu sirtni modellashtirish uchun eng keng tarqalgan effekt. Masalan, binoning jabhasi ko'plab g'ishtlar, derazalar va eshiklarni modellashtirish uchun ko'plab yuzlarni ko'rsatishni talab qiladi. Biroq, tekstura (bir vaqtning o'zida butun yuzaga qo'llaniladigan tasvir) ko'proq reallikni beradi, lekin kamroq hisoblash resurslarini talab qiladi, chunki u butun jabha bilan bitta sirt sifatida ishlashga imkon beradi. Ekranga tegmasdan oldin yuzalar teksturalanadi va soyalanadi. Barcha teksturalar xotirada saqlanadi, odatda video kartaga o'rnatiladi. Aytgancha, bu erda AGP dan foydalanish tizim xotirasida teksturalarni saqlashga imkon berishini va uning hajmini sezilarli darajada oshirishini payqash mumkin emas.
Shubhasiz, yuzalar tekstura qilinganda, masalan, ufqdan tashqariga cho'zilgan bo'linuvchi chiziqli yo'lni ko'rsatishda istiqbolni hisobga olish kerak. Teksturali ob'ektlar to'g'ri ko'rinishi uchun istiqbolni tuzatish kerak. Bu zarba xaritasi ob'ektning turli qismlariga - kuzatuvchiga yaqinroq va uzoqroq bo'lgan qismlarga to'g'ri qo'llanilishini ta'minlaydi.
Istiqbolni hisobga olgan holda tuzatish juda ko'p vaqt talab qiladigan operatsiyadir, shuning uchun ko'pincha uning to'liq to'g'ri bajarilmasligini topish mumkin.
To'qimalarni qo'llashda, printsipial jihatdan, siz ikkita eng yaqin beatmap orasidagi tikuvlarni ham ko'rishingiz mumkin. Yoki ko'pincha, ba'zi o'yinlarda miltillash haydash paytida yo'l yoki uzun koridorlarni tasvirlashda seziladi. Ushbu qiyinchiliklarni bostirish uchun filtrlash (odatda ikki yoki uch chiziqli) ishlatiladi.
Ikki chiziqli filtrlash - bu tasvir buzilishlarini olib tashlash usuli. Ob'ekt asta-sekin aylanayotganda yoki harakatlanayotganda, siz pikselning bir joydan ikkinchisiga sakrashini sezishingiz mumkin, bu esa miltillashga olib keladi. Ushbu effektni kamaytirish uchun ikki chiziqli filtrlash sirt nuqtasini ko'rsatish uchun o'rtacha to'rtta qo'shni tekstura pikselini oladi.
Uch chiziqli filtrlash biroz murakkabroq. Tasvirdagi har bir pikselni olish uchun ikki darajadagi ikki chiziqli filtrlash natijalarining o'rtacha og'irligi olinadi. Olingan tasvir yanada aniqroq va kamroq miltillovchi bo'ladi.
Ob'ektning sirti hosil bo'lgan teksturalar ob'ektdan tomoshabinning ko'zlari holatiga bo'lgan masofaning o'zgarishiga qarab tashqi ko'rinishini o'zgartiradi. Harakatlanuvchi tasvirda, masalan, ob'ekt tomoshabindan uzoqlashganda, ko'rsatilgan ob'ekt hajmining pasayishi bilan birga tekstura bitmapining hajmi ham kamayishi kerak. Ushbu transformatsiyani amalga oshirish uchun GPU ob'ekt yuzasini qoplash uchun tekstura bitmaplarini mos o'lchamga aylantiradi, lekin tasvir tabiiy bo'lib qolishi kerak, ya'ni. ob'ekt kutilmagan tarzda deformatsiyalanmasligi kerak.
Kutilmagan o'zgarishlarga yo'l qo'ymaslik uchun ko'pgina grafik boshqaruv jarayonlari qisqartirilgan piksellar sonida oldindan filtrlangan tekstura bitmaplarini yaratadi, bu jarayon mip xaritalash deb ataladi. Keyin, grafik dastur avtomatik ravishda ekranda ko'rsatilgan tasvirning tafsilotlari asosida qaysi teksturadan foydalanishni aniqlaydi. Shunga ko'ra, agar ob'ekt hajmi kichraytirilsa, uning tekstura bitmapining o'lchami ham kamayadi.
Ammo bizning poyga mashinamizga qaytaylik. Yo'lning o'zi allaqachon real ko'rinadi, ammo uning chekkalarida muammolar kuzatilmoqda! Ekranda chizilgan chiziq uning chetiga parallel emas, balki qanday ko'rinishini o'ylab ko'ring. Shunday qilib, ular bizning yo'limizda paydo bo'ladi " yirtilgan qirralar". Va bu nomukammallikka qarshi kurashish uchun tasvir qo'llaniladi.
|
|
|
Yirtilgan qirralar
|
|
Silliq qirralar
|
Bu tasvirning (ob'ektning) aniqroq qirralarini (chegaralarini) olish uchun piksellarni qayta ishlash (interpolyatsiya qilish) usuli. Eng ko'p ishlatiladigan texnika - yaratish silliq o'tish chiziq yoki chekka rangidan fon rangiga. Ob'ektlar chegarasida joylashgan nuqtaning rangi ikkita chegara nuqtasi ranglarining o'rtacha qiymati sifatida aniqlanadi. Biroq, ba'zi hollarda, anti-aliasingning yon ta'siri qirralarning xiralashishi hisoblanadi.
Biz barcha 3D algoritmlarining ishlashining asosiy nuqtasiga keldik. Aytaylik, bizning poyga mashinamiz yuradigan yo'l ko'plab ob'ektlar - binolar, daraxtlar, odamlar bilan o'ralgan.
Bu erda 3D protsessor ob'ektlarning qaysi biri ko'rish maydonida ekanligini va ular qanday yoritilganligini aniqlashning asosiy muammosiga duch keladi. Bundan tashqari, nima ko'rinishini bilish uchun bu daqiqa yetarli emas. Ob'ektlarning o'zaro joylashuvi haqida ma'lumotga ega bo'lish kerak. Ushbu muammoni hal qilish uchun z-buferlash deb ataladigan usul qo'llaniladi. Bu yashirin yuzalarni olib tashlashning eng ishonchli usuli. Z-bufer deb ataladigan narsa barcha piksellarning chuqurlik qiymatlarini (z-koordinatalarini) saqlaydi. Yangi piksel hisoblanganda (ko'rsatilganda), uning chuqurligi z-buferda saqlangan qiymatlar bilan, aniqrog'i bir xil x va y koordinatalari bo'lgan allaqachon ko'rsatilgan piksellar chuqurligi bilan taqqoslanadi. Agar yangi piksel z-buferdagi har qanday qiymatdan kattaroq chuqurlik qiymatiga ega bo'lsa, yangi piksel ko'rsatish uchun buferga yozilmaydi, agar kamroq bo'lsa, u yoziladi.
Z-buferlash apparatda qo'llanilganda ish faoliyatini sezilarli darajada yaxshilaydi. Biroq, z-bufer katta hajmdagi xotirani egallaydi: masalan, hatto 640x480 da, 24-bitli z-bufer taxminan 900 KB ni egallaydi. Ushbu xotira 3D grafik kartasiga ham o'rnatilishi kerak.
Z-buferning o'lchamlari uning eng muhim atributidir. Bu chuqurlikdagi yuqori sifatli sahnalarni ko'rsatish uchun juda muhimdir. Ruxsat qanchalik yuqori bo'lsa, z-koordinatalarining diskretligi shunchalik yuqori bo'ladi va uzoqdagi ob'ektlarni aniqroq ko'rsatish. Agar renderlash paytida ruxsat etish etarli bo'lmasa, ikkita bir-biriga o'xshash ob'ekt bir xil z koordinatasini olishi mumkin, buning natijasida uskuna qaysi ob'ekt kuzatuvchiga yaqinroq ekanligini bilmaydi, bu tasvirning buzilishiga olib kelishi mumkin.
Ushbu ta'sirlardan qochish uchun professional platalar 32 bitli z-buferga ega va katta hajmdagi xotira bilan jihozlangan.
Yuqoridagi asoslarga qo'shimcha ravishda, 3D grafik kartalari odatda bir qator qo'shimcha funktsiyalarni takrorlash qobiliyatiga ega. Misol uchun, agar siz poyga mashinasini qumga haydab ketayotgan bo'lsangiz, ko'tarilgan chang tufayli ko'rinish to'sqinlik qiladi. Bunday va shunga o'xshash effektlarni amalga oshirish uchun tumanlash qo'llaniladi. Bu effekt tumanlash chuqurligini aniqlaydigan funksiya nazorati ostida aralashgan kompyuter rangli piksellarini tuman rangi bilan birlashtirish orqali yaratiladi. Xuddi shu algoritmdan foydalanib, uzoqdagi ob'ektlar tumanga botib, masofa illyuziyasini yaratadi.
Haqiqiy dunyo shaffof, shaffof va shaffof bo'lmagan narsalardan iborat. Ushbu holatni hisobga olish uchun alfa aralashtirish qo'llaniladi - yarim shaffof ob'ektlarning shaffofligi haqidagi ma'lumotlarni uzatish usuli. Shaffoflik effekti asl piksel rangini allaqachon buferdagi piksel bilan birlashtirish orqali yaratiladi.
Natijada, nuqta rangi oldingi va fon ranglarining kombinatsiyasi hisoblanadi. Odatda, alfa har bir rang pikseli uchun 0 dan 1 gacha normallashtirilgan qiymatga ega. Yangi piksel = (alfa) (piksel A rang) + (1 - alfa) (piksel B rang).
Ko'rinib turibdiki, ekranda sodir bo'layotgan voqealarning real tasvirini yaratish uchun uning mazmunini tez-tez yangilab turish kerak. Har bir keyingi kadrning shakllanishi bilan 3D tezlatgich butun hisoblash yo'lidan yangidan o'tadi, shuning uchun u sezilarli ishlashga ega bo'lishi kerak. Ammo 3D grafikada harakatni silliq qilishning boshqa usullari mavjud. Asosiysi bu ikki marta buferlash.
Har bir keyingi varaqda biroz o'zgaruvchan joylashuvga ega bo'lgan qog'oz to'plamining burchaklariga multfilm qahramonini chizishning eski animatsion hiylasini tasavvur qiling. Butun to'plamni aylanib chiqib, burchakni egib, biz qahramonimizning silliq harakatini ko'ramiz. 3D animatsiyasida ikki marta buferlash amalda bir xil ishlash printsipiga ega, ya'ni. Belgining keyingi pozitsiyasi joriy sahifani aylantirishdan oldin allaqachon chizilgan. Ikki marta buferlashsiz tasvir kerakli silliqlikka ega bo'lmaydi, ya'ni. intervalgacha bo'ladi. Ikki marta buferlash 3D grafik ramka buferida ajratilgan ikkita maydonni talab qiladi; ikkala maydon ham ekranda ko'rsatilgan tasvir hajmiga mos kelishi kerak. Usul tasvirni olish uchun ikkita buferdan foydalanadi: biri tasvirni ko'rsatish uchun, ikkinchisi esa renderlash uchun. Bitta buferning mazmuni ko'rsatilayotganda, ikkinchisi ko'rsatilmoqda. Keyingi kadrga ishlov berilganda buferlar almashtiriladi (almashtiriladi). Shunday qilib, o'yinchi har doim ajoyib rasmni ko'radi.
3D grafik tezlatgichlarida qo'llaniladigan algoritmlarni muhokama qilish yakunida keling, barcha effektlardan alohida foydalanish qanday qilib to'liq tasvirni olishga imkon berishini aniqlashga harakat qilaylik. 3D grafikalar renderlash quvuri deb ataladigan ko'p bosqichli mexanizm yordamida amalga oshiriladi.
Quvurlarni qayta ishlashdan foydalanish hisob-kitoblarni bajarishni yanada tezlashtirishga imkon beradi, chunki keyingi ob'ekt uchun hisob-kitoblar avvalgisining hisob-kitoblari tugagunga qadar boshlanishi mumkin.
Renderlash quvur liniyasini 2 bosqichga bo'lish mumkin: geometriya va rasterizatsiya.
Geometrik ishlov berishning birinchi bosqichida koordinatalar o'zgartiriladi (barcha ob'ektlarni aylantirish, ko'chirish va masshtablash), ob'ektlarning ko'rinmas qismlarini kesish, yoritishni hisoblash, barcha yorug'lik manbalarini hisobga olgan holda har bir cho'qqining rangini aniqlash va jarayon. tasvirni kichikroq shakllarga bo'lish. Ob'ekt sirtining tabiatini tasvirlash uchun u barcha turdagi ko'pburchaklarga bo'linadi.
Ko'pincha, grafik ob'ektlarni ko'rsatishda uchburchak va to'rtburchaklarga bo'linish qo'llaniladi, chunki ularni hisoblash eng oson va ularni boshqarish oson. Bunday holda, hisob-kitoblarni tezlashtirish uchun ob'ektlarning koordinatalari haqiqiydan butun songa aylantiriladi.
Ikkinchi bosqichda barcha tasvirlangan effektlar tasvirga quyidagi ketma-ketlikda qo'llaniladi: yashirin yuzalarni olib tashlash, istiqbolni hisobga olgan holda teksturalarni qoplash (z-bufer yordamida), tuman va shaffoflik effektlarini qo'llash, antialiasing. Shundan so'ng, keyingi nuqta keyingi kadrdan buferga joylashtirishga tayyor hisoblanadi.
Yuqorida aytilganlarning barchasidan siz 3D tezlatgich platasida o'rnatilgan xotira qanday maqsadlarda ishlatilishini tushunishingiz mumkin. U teksturalarni, z-buferni va keyingi ramka buferlarini saqlaydi. PCI avtobusidan foydalanganda siz oddiy operativ xotiradan ushbu maqsadlar uchun foydalana olmaysiz, chunki video karta tezligi avtobus o'tkazish qobiliyati bilan sezilarli darajada cheklanadi. Shuning uchun AGP avtobusining rivojlanishi 3D-grafikani rivojlantirish uchun ayniqsa istiqbolli bo'lib, bu 3D chipni to'g'ridan-to'g'ri protsessorga ulash va shu bilan operativ xotira bilan tezkor ma'lumotlar almashinuvini tashkil etish imkonini beradi. Bundan tashqari, ushbu yechim 3D tezlatgichlarining narxini kamaytirishi kerak, chunki taxtada ramka buferining o'zi uchun ozgina xotira qoladi.
|
| |