Тънкостите на 3D графиката – id’s MegaTexture
Още от началото на своето съществуване id Software начело с Джон Кармак е сред компаниите, въвеждащи нови технологии в компютърната графика. Ако си спомним отдавнашните дни на играта Doom, ще открием, че тя беше сред първите игри, предлагащи отклоняване на играча по вертикала (т.е. подобие на триизмерна карта). Тази традиция продължава и до днес, като последните поколения на игровите енджини на фирмата въвеждат нови методики, с които подобряват както визията, така и производителността на играта.
С представянето на игровия енджин id Tech 4 в играта Doom III id Software за пръв път демонстрира някои от неговите възможности – Unified Light and Shadows. Благодарение на това графиката на играта изглеждаше впечатляващо реалистична, макар и прекалено тъмна на определени места според критиките на повечето потребители. Развитието на графичния хардуер позволи на фирмата да усъвършенства id Tech 4 чрез пълното прехвърляне на неговите функции към шейдърните модули на графичния процесор, работещи с числа с плаваща запетая. Крайният резултат на това усъвършенстване може да се види в играта Enemy Territory: Quake Wars, където освен на еднородно осветяване на обектите в сцената сме свидетели и на изцяло нов начин за текстуриране на нивата – MegaTexture. В какво се състоят разликите между MegaTexture и класическите методи за текстуризиране, използвани до момента, и какви предимства и недостатъци има този нов процес?
Повторяемост при текстурите – обекти и сцени в нивото
До момента използваните технологии за текстуриране на всеки един триизмерен обект са еднакви както за отделните герои и предмети в сцената, така и за самата основа и терена около тях. Процедурата по „обличането“ на всеки един обект с неговата текстура е следната: след създаването на обекта от полигоните, които го изграждат, към всяка негова страна се присвоява съответната отговаряща за нея текстура. Всяка от тези текстури от своя страна се съхранява под формата на най-обикновено изображение, запазено в отделен или общ файл.
![]()
Проблемът пред този метод се състои в следното – съхраняването на всяка от текстурите за малките обекти става лесно, но съхраняването на текстурата, използвана за терена на сцената, би изисквало огромни обеми информация на твърдия диск, както и памет на системата. Причината за това се явява принципът, по който се изгражда сцената. Подобно на всеки от обектите нейната обработка се извършва последователно. След създаването на сцената следва прилагането на съответните за нея текстури. Както вече споменахме, съхраняването на едно цяло неделимо изображение за нивото (терена на сцената) би изисквало огромни обеми памет и пропускателна способност. По тази причина разработчиците използват значително по-малки изображения, които биват нареждани едно до друго подобно на плочки. За да се създаде илюзията за естествен вид на терена, тези мини-текстури са с неангажиращи шарки, което позволява неограниченото им полагане една до друга. Тъй като постигането на такава шарка на практика е невъзможно, в крайна сметка потребителите забелязват тенденцията на повтаряне в така оформения терен.
Макар и нарочно засилено за по-лесно забелязване, на това изображение може да се види принципният недостатък на метода, използващ минитекстури.
Следващата стъпка е полагането на друго ниво текстури (процес, извес-тен като multitexturing), чрез които се постига илюзията за определен тип осветление. След завършването на този процес, следващата стъпка е добавянето на различните типове елементи, характерни за сцената – следи от гуми, петна от вода, боя или други течности и т.н. Всеки от тези елементи представлява допълнителна текстура, нанасяща се върху вече изградената основна текстура. За да се избегне или поне намали ефектът на повторяемост върху терена на нивото, разработчиците се стремят да добавят колкото е възможно повече обекти върху него – трева, дървета, езера и т.н. Другият начин за преодоляване на този принципен недостатък е използването на текстури с по-голяма разделителна способност, както и повече на брой разнообразни текстури, чието редуване значително намалява този ефект. И двата споменати метода се използват в последните поколения игри, каквато е например Crysis. Въпреки това тенденцията на еднаквост на терените остава, като на моменти прави визията на играта твърде изкуствена.
В допълнение към тези недостатъци значителната обработка, от която се нуждае процесът на текстуриране, за да се премахне илюзията за „изкуственост“, натоварва системата, с което намалява нейната производителност. За да се премахнат тези недостатъци, id Software начело с Джон Кармак разработва концепцията MegaTexture. За да се заобиколи този проблем, Джон Кармак създава изцяло нова концепция за текстуриране на терените в триизмерните сцени, отделяйки ги напълно от текстурирането на обектите в тях. Технологията на използване на MegaTexture, най-просто казано, означава употреба на една-единствена цяла текстура, налагаща се върху нивото без нужда от подреждане на мини- текстури. По този начин всяко ниво в играта (например Enemy Territory: Quake Wars) притежава уникална собствена текстура, която не може да се види в никое друго ниво. Нещо повече, всяка част на терена притежава собствена текстура, която също не се повтаря с никоя друга част от него. За да се постигне това, се създава изключително голяма мегатекстура (оттук и името), понякога достигаща до обем от 4GB. Допълнителното полагане на ефекти, като следи от гуми, локви, следи от течности и др., става ненужно, тъй като те са изрисувани още върху самата мегатекстура при създаването й. Същото важи и за сенките на обектите, които са неподвижни – изрисуването им като едно цяло с текстурата спестява огромно количество ресурси на системата, а в допълнение към това позволява значителната им детайлност.
![]()
След създаването на цялостната мегатекстура за съответното ниво тя се подлага на определени процедури на компресиране, след което обемът й се понижава до около 300 до 500МВ. Така обработената текстура се съхранява в отделен файл, като всяка точка от нея съответства на определена точка от триизмерното пространство в картата, където се намира част от терена. Тъй като от гледна точка на героя отдалечените от него обекти и терени трябва да са с по-неясен вид, id Software въвеждат изцяло нов начин за филтрация на текстурите. При него около героя съществуват няколко зони, в които всяка текстура бива подлагана на различна филтрация. Намиращите се в по-отдалечената от погледа зона терени се обработват с минимално ниво на детайлност, при което се печели време и се пести производителност. Колкото по-близо до гледната точка на играча идва всеки обект или част от терена, толкова по- интензиво и прецизно се обработва, а самите зони се движат заедно с играча по време на придвижването му в нивото. Допълнителен бонус от този метод се явява фактът, че при доближаването към далечните обекти тяхната детайлност се увеличава значително по-плавно в сравнение с класическата обработка.
![]()
Тук виждаме визуално демонстрирани зоните на детайлност около играча. На лявото изображение е цялостният завършен вид на нивото, докато при дясното виждаме отделните зони на детайлност, като в центъра на най-вътрешната се намира самият играч.
MegaTexture – предимства и недостатъци
Както всяка друга технология id Software MegaTexture има своите предимства и недостатъци. Предимствата на новия метод са доста на брой, затова ще се спрем само на по-сериозните и значими от тях.
На първо и най-основно място е значително по-добрият външен вид на терените в нивата. При използването на техниката на MegaTexture в терена на нивото липсва наблюдаваната в другите методи на обработка повторяемост и еднаквост на текстурата. Макар другите производители и разработчици да се старят да прикрият или избегнат тези ефекти, дори в най- новите поколения игрови енджини, какъвто е например използваният в Crysis CryENGINE2, те са налице.
![]()
Второто предимство е директно следствие от по-добрия вид на текстурите – при използване на мегатекстури отпада необходимостта от прикриване на повторяемостта с добавяне на множество обекти, като трева, скали, камъни, цялостна допълнителна обработка и т.н. Така системата не се задръства с излишни задачи, позволявайки на добре изглеждаща графика да се реализира при по-слаби откъм производителност системи. В допълнение към това този метод позволява значително по-качествени сенки на неподвижните обекти, тъй като те са „слети“ със самата текстура, нанесена на терена.
Както отбелязахме в началото, използването на една цялостна текстура би имало като изисквания значителен обем памет от видеоплатката. При реализацията на MegaTexture това не е така, тъй като id въвежда описаните по-горе зони с различна детайлност. Така според зоната, в която се намира наблюдаваната от нас текстура, нейното качество е различно, а оттам и обемът памет, която тя заема. В крайна сметка при използването на MegaTexture id постига такава ефективност, че всяка една сцена изисква не повече от 13 - 20МВ за съхраняването на текстурите си. Впечатляващо!
Друг положителен аспект при употребата на този метод е потенциалът за оползотворяване на повече от едно ядро на централния процесор. До момента доста игри без особен успех се опитваха да постигнат реална употреба на повече от едно ядро на дву- и четириядрените процесори. При MegaTexture операцията по извличане на текстурите за всеки район би могла да се прехвърли на някое от ядрата, докато другото се занимава с останалите изчисления.
Разбира се, като всяка новаторска технология MegaTexture си има своите недостатъци, някои от които по-сериозни, докато други от тях – не чак толкова. Нека се спрем на по-важните, които се отразяват на визуалното представяне или производителността на системата.
Един от най-основните недостатъци на метода се корени в необходимостта от наистина огромни по обем носители на информация, на които да се записват текстурите. Дори и подложени на разумна компресия, текстурите за всяко от нивата заемат огромен обем – за сравнение бъдещата игра Rage на id ще изисква поне 2 DVD диска за съхраняване на всички свои текстури. Докато при компютрите това не е проблем, игровите конзоли биха изпитали сериозни трудности в такъв случай, тъй като те не разполагат със собствен твърд диск.
При използването на MegaTexture възникват някои противоречия в системата на филтрация и обработка на текстурите, касаещи местоположението на играча. Един доста подходящ пример е погледът през прицела на снайпер, когато играчът вижда отблизо далечна част от терена. Проблемът се състои в това, че според описаната по-горе зонална система на обработка играчът стои на едно място, следователно областта, виждаща се през прицела на оръжието, няма нужда да се филтрира и обработи. В крайна сметка се получава така, че независимите обекти (хора, предмети, машини), видени през прицела, имат детайлна текстура, докато теренът, на който се намират – не. Според id Software този проблем ще бъде преодолян в следващата версия на MegaTexture.
Друг недостатък, който предстои да бъде преодолян, се явява фактът, че за момента файлът, в който се съхранява единичната мегатекстура за нивото, е с двузимерна координатна система. Това се превръща в проблем, когато част от текстурата трябва да бъде положена върху област, в която има рязка промяна на височината за малко линейно разстояние. Така текстурата се разтяга, предизвиквайки артефакти и визуални недостатъци на изображението. В следващата версия на технологията това ще бъде поправено чрез въвеждане на триизмерна координатна система във файла, съхраняващ мегатекстурата.
В заключение
Бъдещото доразвиване на този метод показва, че той притежава огромен потенциал за промяна на външния вид на нивата в триизмерните компютърни игри. Считаните за нормални до момента нискокачествени изображения, създаващи илюзия за скали или земя, ще бъдат заменени от висококачествени и детайлни текстури, благодарение на които удоволствието от играта ще се промени изцяло. Сред промените, които можем да очакваме в следващата версия на MegaTexture, която ще бъде анонсирана с енджина id Tech 5 в играта Rage, е още и въвеждането на penumbra сенки, които сега не са налични. Благодарение на това ще можем да се насладим на още по-голяма фотореалистичност на графиката.
Използването на penumbra сенки позволява далеч по-голяма реалистичност на изображението. Penumbra (от umbra, лат. „сянка“) е областта, явяваща се преход между напълно засенчената и незасенчената област.