Как работает трассировка лучей RX реального времени от Nvidia

Как работает трассировка лучей RX реального времени от Nvidia

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

Nvidia стремится изменить все это с помощью RTX, своей высокопроизводительной библиотеки трассировки лучей, которая может отображать подробные сцены в достойных игре кадрах. Мы рассмотрим более глубокий взгляд на то, что сильно искажает трассировку лучей, и RTX от Nvidia.

Как луч каста превращается в трассировку лучей

Теоретически, трассировка лучей включает в себя испускание лучей из каждого источника света в сцене, генерирование (обычно случайным образом) световых лучей от него и последующее за ними, когда они попадают и отражаются от поверхностей. На каждой поверхности свойства света сочетаются со свойствами материала, который он поражает, и, конечно, углом, на котором он пересекается. Свет, который, возможно, подобрал другой цвет от отражения от объекта, затем прослеживается дальше, используя несколько лучей, которые имитируют отраженный свет - таким образом, трассировку лучей. Процесс отслеживания продолжается до тех пор, пока лучи не покинут сцену.

Хотя этот процесс велик в теории, он невероятно трудоемкий, поскольку большинство лучей не поражают ничего, что нас интересует, а другие лучи могут отскочить почти бесконечно. Таким образом, решения в реальном мире делают умную оптимизацию. Они используют принцип света, называемый взаимностью, который утверждает, что обратный луч света работает так же, как оригинал, чтобы отбрасывать лучи из виртуальной камеры в сцену. Это означает, что только лучи, которые будут способствовать финальной сцене, будут отлиты, что значительно повысит эффективность. Затем эти лучи следуют (отслеживаются), когда они отскакивают, пока они не попадут на источник света или не покинут сцену. Даже когда они выходят из сцены, это может быть в точке, которая добавляет свет (например, небо), поэтому в любом случае количество освещенности, добавленное к каждой поверхности, попадает на сцену лучей. Программное обеспечение может также ограничить количество отражений, которое оно будет следовать за лучом, если легкий вклад, вероятно, будет небольшим.

Генеральный директор Nvidia Джен-Хсун Хуан объясняет, как легкая выпечка использовалась как более эффективная альтернатива некоторым возможностям, доступным при трассировке лучей.
Генеральный директор Nvidia Джен-Хсун Хуан объясняет, как легкая выпечка использовалась как более эффективная альтернатива некоторым возможностям, доступным при трассировке лучей.

Ray Casting Massively Processor Intensive

Общее количество лучей света, падающих на сцену, превышает то, что могут моделировать мощные компьютеры, используемые для трассировки лучей. Практически это означает, что лучеры должны выбирать уровень качества, который определяет, сколько лучей выбрано из каждого пикселя сцены в разных направлениях. Затем, вычисляя, где каждый луч пересекает объект в сцене, он должен следить за некоторым количеством лучей от каждого пересечения до модели отраженного света. Вычисление этих пересечений относительно дорого. До недавнего времени он также ограничивался процессорами. Перемещение его на GPU, как и некоторые современные трассирующие лучи, способствовало значительному улучшению скорости, но результаты Голливуда по-прежнему требуют почти 10 часов за кадр на мини-суперкомпьютере высокого класса с несколькими GPU.

Поскольку трассировка лучей настолько интенсивен для процессора, интерактивные приложения, как игры, не могут использовать его, кроме как для создания привлекательных сцен заранее. Для рендеринга в режиме реального времени они полагаются на растеризацию, где поверхности каждого объекта заштрихованы на основе их свойств материала и огни падают на них. Умные оптимизации, такие как легкая выпечка, позволяют игрокам делать снимки с высокой частотой кадров, но при этом выглядят великолепно. Но они падают, когда дело доходит до тонких взаимодействий, таких как рассеяние подповерхности. Таким образом, для окончательного воссоздания реалистичных сцен, целью всегда была трассировка лучей в реальном времени.

Как сделала Nvidia

Как работает трассировка лучей RX реального времени от Nvidia

Кроме того, Nvidia рекламирует модный новый модуль шумоподавления. Denoising очень важна при трассировке лучей, потому что вы можете использовать только ограниченное количество лучей из каждого пикселя в виртуальной камере. Поэтому, если вы не оставите свой трассировщик луча достаточно длинным, чтобы заполнить сцену, у вас много неприятных «лысинок» или «шум». Есть несколько отличных исследовательских проектов, которые помогают оптимизировать, какие лучи подаются, но вы все еще ведете с большим количеством шума. Если этот шум может быть уменьшен отдельно, вы можете производить качественный вывод намного быстрее, чем если бы вам нужно было решить проблему, отправив это еще много лучей. Nvidia использует этот метод, чтобы быстрее создавать кадры. Вероятно, эта возможность основывается на работе Nvidia, работающей на AI, представленной на SIGGRAPH в прошлом году.

У RTX есть объекты ускорения, поэтому могут быть и другие умные трюки, которые он использует. Например, некоторые ускорители трассировки лучей кэшируют текущие пересечения и делают относительно простые преобразования, чтобы предсказать, где они будут происходить в следующем кадре. Это быстро и часто невидимо для человеческого глаза, но не технически точно. Демо-версия на сцене, в то время как причудливая, также отличалась только синтетическими объектами, поэтому мы не знаем, может ли RTX в настоящее время решить проблему визуализации человеческих лиц в реальном времени. Поэтому, хотя я уверен, что мы увидим некоторые действительно классные игровые приложения, тем, кто хочет использовать RTX для научных исследований, нужно будет убедиться, что он будет генерировать точный результат, который им нужен.

Динамическая сцена из прототипа с использованием Microsoft DXR, Unreal Engine 4 и Nvidia RTX
Динамическая сцена из прототипа с использованием Microsoft DXR, Unreal Engine 4 и Nvidia RTX

Нет, у вас не может быть RTX, по крайней мере, еще нет

Такие впечатляющие, как игровые демонстрации, вы пока не можете им воспользоваться. RTX требует графический процессор семейства Volta, и ни один из них не был представлен для потребительского рынка. Nvidia и игровые компании утверждают, что к концу этого года у них будут игры с поддержкой RTX, но нет слов, когда вы сможете их запускать. Я мог видеть, что они размещены на мощной облачной игровой услуге, но арендные ставки для необходимых Voltas для запуска игры, вероятно, превышают бюджет большинства игроков. Первоначально также вероятно, что элементы, связанные с лучом, будут отображаться как специфические функции, смешанные с играми, как удовольствие для тех, кто может их видеть, а не использовать для создания целых игр, поскольку подавляющее большинство геймеров не смогут запустите RTX довольно долгое время.