Проследяване на пътя срещу. Проследяване на лъчи, обяснено

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

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

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

Краткият и сладък отговор на този въпрос е…”проследяването на пътя е просто проследяване на лъчи.” Уравненията за моделиране на поведението на светлината са същите, използването на структури от данни за ускоряване на търсенето на взаимодействия лъч-триъгълник също е същото и съвременните графични процесори използват същите единици за ускоряване на процеса. Освен това е много изчислително интензивен.

Но почакай. Ако наистина е същото, защо проследяването на пътя има различно име и каква полза предлага на програмистите на игри? Проследяването на пътя се различава от проследяването на лъчи по това, че вместо да следва много лъчи в цялата сцена, алгоритъмът проследява само най-вероятния път за светлината.

Проследяването на пътя се различава от проследяването на лъчи по това, че вместо да следва много лъчи в цялата сцена, алгоритъмът проследява само най-вероятния път за светлината.

Проучихме как работят лъчите (вижте: По-дълбоко гмуркане: растеризация и проследяване на лъчи), но тук е необходим кратък преглед на процеса. Кадърът започва както обикновено: графичната карта изобразява цялата геометрия — всички триъгълници, които изграждат сцената — и я записва в паметта.

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

Е, не в буквалния смисъл – генерира се векторно уравнение с параметри, зададени въз основа на това къде са камерата и пикселът. След това всеки лъч се сравнява с геометрията на сцената и това е първата част от сложността на проследяването на лъчи. За щастие най-новите графични процесори от AMD и Nvidia идват със специални хардуерни модули за ускоряване на този процес.

Ако лъч и обект си взаимодействат, се прави друго изчисление, за да се определи точно какъв триъгълник в модела е включен и цветът на триъгълника ефективно ще промени цвета на пиксела.

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

На свой ред тези лъчи се проследяват, докато не ударят и обект, и последователността продължава, докато верига от лъчи най-накрая се отскочи обратно до източник на светлина в сцената. От първоначалния първичен лъч, общият брой лъчи, проследени през сцената, нараства експоненциално с всяко отскачане.

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

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

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

Когато повече работа означава по-малко работа

Първоначалната концепция за проследяване на пътя беше въведено от Джеймс Каджия още през 1986 г., докато беше изследовател в Калтек. Той показа, че проблемът с спирането на процесора, работещ през все по-голям брой лъчи, може да бъде решен чрез използването на статистическо вземане на проби от сцената (по-специално, алгоритми на Монте Карло).

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

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

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

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

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

Сега, ако сцената съдържа много повърхности, които ще отразяват и пречупват светлина, като стъкло или вода, тогава тези вторични лъчи стават важни. За да се преодолее този проблем, или алгоритъмът е променен, за да отчете разпределението на типовете лъчи, които човек трябва да получи в дадена сцена, или тези специфични повърхности се обработват в техния собствен пропуск за изобразяване с „пълно проследяване на лъчи“.

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

Защо проследяването на пътя е в новините точно сега?

Няколко пъти през последните няколко години видяхме заглавия в новините за модове, добавящи проследяване на лъчи към стари класики, но повечето от тях всъщност се отнасят за проследяване на пътя. Чухме го през 2019 г. с експериментален мод за Crysis и Quake 2или по-скоро с неофициален Half-Life режим за проследяване на лъчи и Класически Doom мод. Проследяване на всички пътища.

Имаше и туит от Дихара Виетунга, старши графичен инженер в R&D в AMD, който обяви своя проект за актуализиране на оригиналната игра Return to Castle Wolfenstein с рендеринг с трасиран път.

Пример 1

След това, използвайки проследяване на пътя…

Пример 2

Използване на проследяване на пътя…

Проба 3

Както беше отбелязано по-горе, през 2019 г. Nvidia обяви ремастър на Quake II, включващ рендеринг с проследяване на лъчи, за да помогне за популяризирането на RTX технологията. Първоначално това беше работа на един човек, Кристоф Шийдкойто създаде ремастъра (технически известен като Q2VKPT) като част от изследователски проект. С приноса на други експерти в областта на графичните технологии, Quake II RTX се роди и беше първата известна игра, която използва проследяване на пътя за цялото си осветление.

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

Подреждане на готини фрази като стохастична извадка с многократна важност и алгоритми за намаляване на дисперсията, проектът подчерта две неща: първо, проследяването на пътя изглежда наистина страхотно, и второ, все още е сериозно трудно както за разработчиците, така и за хардуера. Ако искате да видите колко сложна е математиката, прочетете Глава 47 от Скъпоценни камъни за проследяване на лъчи II.

Но там, където подобните на Quake II RTX показват какво може да се постигне, проследявайки всичко, подобните на контрол и Киберпънк 2077 демонстрират, че невероятни графики са постижими чрез смесване на всички методи за осветяване и засенчване — растеризацията и шейдърите все още управляват мястото, с проследяване на лъчи за отражения и сенки.

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

Следвайки пътя към по-добро бъдеще

Въпреки относителната си новост в света на изобразяването в реално време, проследяването на пътя определено е тук, за да остане. Вече видяхме резултатите в една игра и проследяването на пътя вече се използва широко в офлайн рендери, като Blender, както и във филмовата индустрия, като Autodesk Арнолд и на Pixar RenderMan.

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

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

Има и настоящите конзоли, които трябва да се вземат предвид. Xbox Series X и PlayStation 5 предлагат поддръжка за „традиционно“ проследяване на лъчи, но като се има предвид, че техните графични процесори ще бъдат относително остарели само след няколко години, разработчиците ще се стремят да използват всеки възможен пряк път, за да изцедят последните остатъци от изключете захранването на тези машини, преди да преминете към следващото поколение конзоли.

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

Продължавай да четеш. Обяснители в TechSpot