Какво е проследяване на пътя и проследяване на лъчи? И защо подобряват графиката?

Ако напоследък сте хвърлили дори и най-малък поглед към новините от игрите и графиките, тогава сте чули най-новата и най-популярна дума: проследяване на лъчи. Може също да сте чували подобна звучаща дума, наречена проследяване на пътя. И може да ви бъде напълно простено, че не разбирате напълно какво представлява някой от процесите.

Простото обяснение е, че както проследяването на пътя, така и проследяването на лъчите са графични техники, които водят до по-реалистично изглеждащи изображения с цената на значително по-голяма изчислителна мощност. В YouTube има видеоклип на Minecraft , който демонстрира конкретните аспекти на проследяването на лъчи по ясен начин, но също така илюстрира стреса, който поставя върху системата.

Ако това е единственото обяснение, от което се нуждаете, страхотно! Но ако искате да копаете дълбоко и да разберете как работи всяка техника и защо компаниите за GPU хардуер таксуват малко състояние за карти с възможност за проследяване на лъчи, прочетете нататък.

Растеризация и компютърна графика

Всяко изображение, което виждате изведено на екрана на компютъра, не е започнало като това изображение. Започва като растер или векторно изображение. Растерното изображение се състои от колекция от засенчени пиксели.

Векторното изображение се основава на математически формули, които означават, че изображението може да се увеличава почти за неопределено време. Недостатъкът на векторните изображения е, че е трудно да се постигнат по-точни детайли. Векторните(Vector) изображения се използват най-добре, когато са необходими само няколко цвята.

Основната сила на растеризацията е нейната скорост, особено в сравнение с техники като проследяване на лъчи. Вашият графичен процесор(GPU) или графичен процесор ще каже на играта да създаде 3D изображение от малки форми, най-често триъгълници. Тези триъгълници се превръщат в отделни пиксели и след това се поставят през шейдър, за да се създаде изображението, което виждате на екрана.

Растеризацията беше предпочитаната опция за графиката на видеоигри от дълго време поради това колко бързо може да бъде обработена, но тъй като настоящата технология започва да се сблъсква с нейните граници, са необходими по-напреднали техники, за да се пробие към следващото ниво. Ето къде идва проследяването на лъчите.

Проследяването на лъчи(Ray) изглежда много по-реалистично от растеризацията, както илюстрира изображението по-долу. Вижте отраженията върху чайника и лъжицата.

Какво е трасиране на лъчи?

На повърхностно ниво трасирането на лъчи е общ термин, който означава всичко от едно пресичане на светлина и обект до пълен фотореализъм. В най-разпространения контекст, използван днес, обаче, трасирането на лъчи се отнася до техника за изобразяване, която следва лъч светлина (в пиксели) от зададена точка и симулира как реагира, когато срещне обекти.

Отделете малко и погледнете стената на стаята, в която се намирате. Има ли източник на светлина на стената или светлината се отразява от стената от друг източник? Графиките с трасирани лъчи(Ray) ще започнат от окото ви и ще следват линията на зрението ви до стената, а след това ще следват пътя на светлината от стената обратно към източника на светлина.

Диаграмата по-горе илюстрира как работи това. Причината за симулираните „очи“ (камерата на тази диаграма) е да се намали натоварването на графичния процесор(GPU) .

Защо? Е, проследяването на лъчи не е съвсем ново. Всъщност съществува от доста време. Pixar използва техники за проследяване на лъчи, за да създаде много от своите филми, но висококачествената графика кадър по кадър при резолюциите, които Pixar постига, отнема време.

Много(A lot) време. Някои кадри в Monsters University отнеха по 29 часа всеки. Toy Story 3 отне средно 7 часа на кадър, като някои кадри отнемат 39 часа според история на Wired от 2010 г.(Wired. )

Тъй като филмът илюстрира отражението на светлината от всяка повърхност, за да създаде графичния стил, който всички познават и обичат, работното натоварване е почти невъобразимо. Чрез ограничаване на техниките за проследяване на лъчи само до това, което окото може да види, игрите могат да използват техниката, без да причиняват (буквално) срив на вашия графичен процесор.

Разгледайте изображението по-долу.

Това не е снимка, независимо колко истинска изглежда. Това е изображение с трасирани лъчи. Опитайте се да си представите колко мощност е необходима, за да създадете изображение, което изглежда така. Един лъч може да бъде проследен и обработен без много проблеми, но какво да кажем, когато този лъч отскочи от обект?

Един лъч може да се превърне в 10 лъча, а тези 10 да се превърнат в 100 и т.н. Увеличението е експоненциално. След точка отскачане и отражения отвъд третичния и кватернерния дисплей намаляват възвръщаемостта. С други думи, те изискват много повече мощност за изчисляване и показване, отколкото си струват. За да се изобрази изображение, някъде трябва да се начертае граница.  

Сега си представете да правите това от 30 до 60 пъти в секунда. Това е количеството енергия, необходимо за използване на техники за проследяване на лъчи в игрите. Определено е впечатляващо, нали?

Достижимостта на графичните карти, способни на проследяване на лъчи, ще нараства с течение на времето и в крайна сметка тази техника ще стане толкова леснодостъпна, колкото 3D графиката. Засега обаче трасирането на лъчи все още се счита за авангарда на компютърната графика. И така, как влиза в игра проследяването на пътя?

Какво е проследяване на пътя?

Проследяването на пътя(Path) е вид проследяване на лъчи. Той попада под този чадър, но там, където трасирането на лъчи първоначално беше теоретизирано през 1968 г., проследяването на пътя не се появи на сцената до 1986 г. (и резултатите не бяха толкова драматични, колкото тези сега.)

Спомняте ли си експоненциалното увеличение на лъчите, споменато по-рано? Проследяването на пътя(Path) предоставя решение за това. Когато използвате трасиране на пътя за изобразяване, лъчите произвеждат само един лъч на отскок. Лъчите не следват определена линия на отскок, а по-скоро изстрелват в произволна посока.

След това алгоритъмът за проследяване на пътя взема произволна извадка от всички лъчи, за да създаде крайното изображение. Това води до вземане на проби от различни видове осветление, но особено глобално осветление.

Интересно нещо при проследяването на пътя е, че ефектът може да се емулира чрез използването на шейдъри. Наскоро се появи пач за шейдър за емулатор на Nintendo Switch , който позволи на играчите да емулират глобално осветление, проследено по пътя в заглавия като The Legend of Zelda: Breath of the Wild и Super Mario Odyssey. Въпреки че ефектите изглеждат добре, те не са толкова пълни, колкото истинското проследяване на пътя.

Проследяването на пътя(Path) е само една от формите на проследяване на лъчи. Въпреки че беше приветствано като най-добрият начин за изобразяване на изображения, проследяването на пътя идва със свои собствени недостатъци.

Но в крайна сметка както трасирането на пътя, така и проследяването на лъчите водят до абсолютно красиви изображения. Сега, когато хардуерът в машините от потребителски клас е достигнал точката, че проследяването на лъчи е възможно в реално време във видеоигрите, индустрията е готова да направи пробив, който е почти толкова впечатляващ, колкото стъпката от 2D към 3D графика.

Все пак ще мине известно време – поне няколко години – преди необходимият хардуер да се счита за „достъпен“. Към момента дори необходимите графични карти струват над $1000.



About the author

Аз съм компютърен програмист, специализиран в разработването на софтуер за MacOS. Използвам уменията си, за да пиша професионални рецензии и да давам съвети как да подобрите уменията си за програмиране на Mac. Имам и уебсайт, който предлага подробни инструкции стъпка по стъпка за създаване на успешен уеб сайт.



Related posts