Что такое трассировка лучей?

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

Трассировка лучей: основы

Трассировка лучей имитирует реальное освещение. Свет, который мы видим, является результатом фотонов, испускаемых источниками энергии, такими как солнце. Фотоны могут отскакивать и рассеиваться при столкновении с объектами. Зеркало - это все, что вам нужно, чтобы увидеть это в действии. Свет, падающий на зеркало, создает отражение.

Торговые автоматы в игре Cyberpunk 2077

CD Projekt Красный

Трассировка лучей имитирует это. Количество прослеживаемых лучей ничтожно по сравнению с реальным миром, где миллионы фотонов отражаются в нашем поле зрения. В современных играх на пиксель приходится от одного до четырех лучей. Тем не менее, этого достаточно, чтобы смоделировать реальный мир.

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

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

Трассировка лучей vs. Растеризация (или 3D-графика, как вы это знали)

Трассировка лучей в Battlefield 5

Nvidia

Вы все равно можете быть сбиты с толку, даже если поймете это объяснение. Отражения присутствовали в прошлых играх, даже в тех, которым сейчас несколько десятилетий. Чем отличается трассировка лучей?

В прошлых 3D-играх и в большинстве современных игр используется растеризация. Растеризация объединяет элементы трехмерного игрового мира, видимые игроку, в двухмерное изображение. Он отображает только то, что должно быть видно игроку, поскольку любая производительность, используемая для создания того, что игрок не видит, тратится впустую. Однако это создает проблему.

Вернемся к примеру с зеркалом. Окружение игрока и персонаж игрока не видны игроку (по крайней мере, в игре от первого лица). С растеризацией зеркалу нечего отражать.

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

Отражения в экранном пространстве - метод в популярных игровых 3D-движках - используют экранные данные для создания отражения. Этот метод идеально подходит для отражающих поверхностей под углом к ​​перспективе игрока, таких как вода. Однако отраженные объекты исчезают, если отраженный объект перемещается за пределы экрана.

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

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

Какое оборудование требуется для трассировки лучей?

Видеокарта Nvidia RTX 3080 на черном фоне

Nvidia

Трассировка лучей - не новая идея. Ученые-информатики экспериментировали с трассировкой лучей в начале 1980-х годов., создание статических изображений с реалистичным освещением, отражениями и тенями. К сожалению, на рендеринг ушли часы.

Видеоигре требуется трассировка лучей в реальном времени со скоростью 30 кадров в секунду или выше. Это возможно только с видеокартой, предназначенной для ускорения трассировки лучей.

Трассировка лучей RTX от Nvidia основана на кремнии, называемом тензорным ядром. Тензорные ядра встречаются только в видеокартах RTX. Карты Nvidia GTX могут визуализировать игру с использованием трассировки лучей, потому что, как уже говорилось, трассировка лучей не требует специального кремния. Однако производительность ужасна по сравнению с картами RTX. И некоторые игры, например Minecraft с трассировкой лучей RTX, требуется видеокарта RTX из-за особого способа включения трассировки лучей.

Карты AMD, ускоряющие трассировку лучей, не имеют особой торговой марки и не имеют специального кристалла. Вместо этого они используют аппаратные настройки и обновления программного обеспечения для достижения лучших результатов. Сложнее идентифицировать карты AMD, которые ускоряют трассировку лучей, поэтому обратите внимание на детали.

Sony PlayStation 5 и Xbox Series X и S оснащены графическим оборудованием AMD, которое ускоряет трассировку лучей. Однако разработчики должны включить эту функцию, а многие игры - нет. Ярким примером является Киберпанк 2077, который при запуске поддерживал трассировку лучей RTX на ПК, но не поддерживал трассировку лучей на консолях следующего поколения. Эта функция обещана для консолей следующего поколения в будущем патче.