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

click fraud protection

След обявяването на Nvidia през 2018 г. за своите 20-серия RTX графични карти, нейната убийствена функция, „проследяване на лъчи“ е популярен термин в кръговете на видео игрите. Но може да е трудно да се разбере какво е проследяване на лъчи, как работи и защо изглежда по-добре от предишните техники.

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

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

Слънцето излъчва широка гама от цветове на светлината, всяка повърхност поглъща част от светлината и отразява друга. Това, което виждаме като зелена повърхност, като листо, изглежда така, защото отразява предимно зелена светлина. Ако светлината, отразяваща се от листа, удари друга повърхност, като бяла стена, тогава тази повърхност ще изглежда малко по-различно, отколкото ако беше чисто бяла светлина, която свети върху нея. Всяко отражение засяга всяка бъдеща повърхност, с която взаимодейства светлината, променяйки нейния интензитет и видимия цвят.

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

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

Например, лъч се хвърля от гледната точка на зрителя, когато удари бяла стена, алгоритъмът рекурсивно генерира отразен лъч, който след това преминава през стъкло от синьо стъкло, накрая, отразеният лъч удря източник на бяла светлина и е абсорбира. Синьото стъкло поглъща цялата светлина освен синята, която хвърля синя светлина върху стената, в резултат на което пикселът е оцветен в синьо.

Защо Ray Tracing изглежда толкова по-добре?

Стандартният метод за изобразяване на сцени в реално време включва използване на предварително изчислени светлинни карти и осветление на цялата сцена. Някои игри използват ограничено обемно осветление, за да включват движещи се източници на светлина и да позволяват динамични сенки, тази техника се използва пестеливо, въпреки че е доста процесорно интензивна.

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

Проследяването на лъчи позволява прецизни отражения и сенки като част от процеса на изобразяване. при традиционните методи за изобразяване и двата ефекта са напълно незадължителни и могат да причинят значителни постижения в производителността.

Самото трасиране на лъчи идва с огромен хит на производителността. Докато RTX графичните карти на Nvidia не бяха обявени с хардуерно ускорение за проследяване на лъчи, се смяташе че необходимата процесорна мощност за извършване на проследяване на лъчи в реално време в софтуер е била повече от десетилетие далеч. Дори и с хардуерното ускорение, проследяването на лъчи все още причинява значително намаляване на производителността, тъй като все още е най-бавната част от изобразяването на кадър.