Технологии: "Path Tracing и Ray Tracing" принципы работы
Трассировка пути — продвинутая технология построения изображений в компьютерной графике. Она широко применяется для создания реалистичных сцен в фильмах, и все больше становится популярной в новых играх для ПК и консолей. Как работает эта технология, и в чем ее отличия от более распространенной трассировки лучей?
Что такое трассировка пути
Компьютерная графика, используемая в современном кинематографе, основана на одной из техник трассировки лучей — трассировке пути (Path Tracing). Этот алгоритм появился в далеком 1986 году, но из-за своей сложности лишь спустя 30 лет начал массово использоваться для создания графики в фильмах.
Чтобы понять, почему все это время трассировка пути оставалась неосуществимой, ознакомимся с основами построения подобной картинки. Сначала 3D-художники вручную моделируют форму объектов в сцене, а программное обеспечение для рендера разбивает их на мелкие треугольники — полигоны.
Затем на модели накладываются текстуры, которые симулируют материалы определенного цвета и типа — например, шероховатые, гладкие или стеклянные.
Готовые объекты и источники света: солнце, небо, фонари, размещаются в нужных положениях на 3D-сцене. После этого добавляется виртуальная камера и запускается процесс рендеринга — благодаря ему картинка в кадре визуализируется в виде привычного 2D-изображения.
С помощью трассировки пути имитируются отражения света от различных материалов. К примеру, попав на матовую красную черепицу крыши, часть света ей будет поглощена, а другая часть — отразится красным. Отраженный свет от каждого объекта попадает в виртуальную камеру, внося свой вклад в создание изображения.
Для образования каждой точки конечной картинки осуществляется несколько тысяч подобных расчетов. А для формирования одного кадра изображения с разрешением 4К их потребуется несколько миллиардов.
Именно из-за этого долгое время создание изображений с использованием трассировки пути было очень медленным процессом. Например, в 2016 году рендерингом фильмов «Зверополис» и «Моана» занималась ферма из тысяч серверов, которые производили вычисления в течении нескольких месяцев — и это всего для двух часов анимации.
Формирование изображения
Для начала ознакомимся с принципом создания изображения при трассировке пути. Этот алгоритм относится к виду вычислений, которые очень хорошо распараллеливаются: точки картинки независимы друг от друга, поэтому тысячи лучей для каждой из них можно рассчитывать одновременно.
Если показать на картинке траектории всех лучей, которые просчитываются для этой сцены, то она заполнится огромным количеством линий. Поэтому рассмотрим данный процесс на примере одной точки. Первый луч испускается из ее центра и попадает на полигон какого-либо объекта в кадре.
Базовый цвет точки формируется с помощью нескольких лучей, которые попадают рядом с центральным — для этого все их цвета усредняются. Подобные лучи называются первичными.
В результате такого подхода формируется изображение с правильной перспективой.
Глобальное освещение
Мы рассмотрели, как цвет полигонов передается точкам виртуального кадра. Но для получения реалистичной сцены нужно просчитать глобальное освещение объектов — ведь яркость и оттенок цвета каждой точки зависит именно от него.
Для этой цели комбинируются два вида расчетов: прямого (Direct) и непрямого (Indirect) освещения. При первом виде вычислений просчитываются лучи непосредственно от источников освещения — солнца, неба и ламп. Они называются теневыми.
Теневые лучи отражаются от всех объектов сцены, попутно приобретая характер и окраску от их материалов. Таким образом все поверхности, на которые попадает прямое освещение, становятся источниками непрямого. Отраженный свет проникает во все области кадра. В том числе в те, которые закрыты преградами от лучей прямого освещения. На примере ниже можно увидеть, как освещенная зеленая точка на стене отражает свой свет на синюю точку столба, находящуюся в тени.
Этот луч, проходящий между двумя точками, называют вторичным. Если при первом отражении он снова попадет в тень, то от него будут просчитаны дополнительные лучи. Так будет продолжаться либо до попадания на освещенную прямым светом точку, либо до достижения лимита отскоков, при котором дальнейший поиск траектории луча прекращается.
Вместе с траекториями лучей от источников прямого освещения это создает большое количество вычислений. Например, в кадре ниже для получения 20 первичных лучей необходимо рассчитать почти сотню вторичных и теневых.
Благодаря непрямому освещению реалистично просчитывается не только изменение яркости точек, но и их взаимное влияние на цвет друг друга. К примеру, если расположить рядом со столбом красный воздушный шар, то за счет непрямого освещения в его оттенок окрасится и тень от столба.
Не менее важно и то, что направление распространения вторичных лучей зависит от свойств материала объекта. Если он идеально гладкий, то угол падения луча будет равен углу его отражения — благодаря этому поверхность будет выглядеть зеркальной. А от шероховатого материала того же цвета лучи будут отражаться в случайные стороны — из-за этого он, как и положено, будет отображаться матовым.
В случае, если материалом выступает стекло, то будет просчитываться не только отражение света, но еще и его преломление при прохождении насквозь.
Сложность трассировки пути зависит от количества источников света, количества лучей на точку и предельно допустимого числа их дополнительных отскоков. У сцены из первого примера с замком используется четыре источника света, тысяча лучей на точку и 12 отскоков. Чтобы визуализировать один ее кадр в 4К, нужно просчитать примерно 400 миллиардов лучей.
А для создания всего одной секунды такого видео их понадобится просчитать уже около триллиона. Именно поэтому в течение нескольких десятилетий трассировка пути для фильмов считалась невозможной.
Чтобы достичь приемлемой производительности, в современных играх трассировка пути реализована намного проще — один-два луча на точку и от одного до четырех отскоков. Но даже при таких параметрах и базовом разрешении Full HD для комфортной игры каждую секунду видеокарте понадобится просчитывать около полумиллиарда лучей.
Иерархия ограничивающих объемов
Еще одна ключевая трудность при трассировке пути — узнать, на какой именно полигон луч из точки попадает первым, чтобы определить ее основной цвет. В случае, если полигонов десятки или сотни, можно воспользоваться вычислением траектории луча с помощью математических уравнений. Но в современных сценах их миллионы, поэтому этот способ потребует огромных вычислительных ресурсов. Чтобы упростить данный процесс, используется иерархия ограничивающих объемов (Bounding Volume Hierarchy, BVH). При таком подходе сцена разделяется на виртуальные объемы-коробки, в каждой из которых оказывается одинаковое количество полигонов.
Коробки делятся надвое до тех пор, пока в каждой из них не останется всего несколько полигонов (обычно от 4 до 32). В нашем примере сцена состоит из трех миллионов полигонов, которые «раскладываются» в полмиллиона небольших коробочек.
Положение каждой коробки в пространстве выровнено строго по осям координат. Когда луч начинает свое путешествие из точки, его направление сравнивается с координатами первой пары больших коробок. Коробка, которую он не пересекает, исключается из расчетов — как и все более мелкие, на которые она поделена.
Затем направление луча сравнивается с координатами двух меньших коробок, на которые разделена исходная. И так до тех пор, пока луч не достигнет самой маленькой коробки.
В виду ограничения фотоматериалов
ПРОДОЛЖЕНИЕ СЛЕДУЕТ...





























![🗓 14.12.1948 — Первый патент на видеоигру [вехи_истории]](https://cs18.pikabu.ru/s/2025/12/13/22/tm5bdgnb.jpg)















