Трассировка лучей - это метод рендеринга компьютерной графики, который создает изображение, отслеживая путь лучей через сцену. Лучи могут взаимодействовать с объектами в сцене, отражаясь от них и приобретая свойства, такие как цвет.
Трассировка лучей: основы
Трассировка лучей имитирует реальное освещение. Свет, который мы видим, является результатом фотонов, испускаемых источниками энергии, такими как солнце. Фотоны могут отскакивать и рассеиваться при столкновении с объектами. Зеркало - это все, что вам нужно, чтобы увидеть это в действии. Свет, падающий на зеркало, создает отражение.
Трассировка лучей имитирует это. Количество прослеживаемых лучей ничтожно мало по сравнению с реальным миром, где миллионы фотонов отскакивают от нашего поля зрения. Современные игры отслеживают от одного до четырех лучей на пиксель. Тем не менее, этого достаточно, чтобы смоделировать реальный мир.
Отслеживание пути луча также позволяет ему взаимодействовать с игровым миром. Луч, отражающийся от красного объекта, может подвергнуться влиянию этого цвета, отбрасывая поблизости красное свечение. Лучи могут рассеиваться по-разному в зависимости от свойств, которые художники игры придают объектам, что позволяет создавать реалистичные полуотражающие или шероховатые поверхности.
Трассировка лучей - это значительный шаг вперед для 3D-графики. Он создает реалистичное изображение, имитируя путь лучей по мере их движения в игре. Это приводит к тому, что освещение может взаимодействовать с окружающей средой, даже если окружающая среда не видна игроку. Для работы трассировки лучей не требуется специальное оборудование, но она практична только на видеокарте или игровой консоли, которые могут ускорить трассировку лучей, потому что она очень требовательна.
Трассировка лучей против растеризации (или 3D-графики, какой вы ее знали)
Вы все равно можете запутаться, даже если поймете это объяснение. Отражения присутствовали в прошлых играх, даже в тех, которым уже несколько десятков лет. Чем отличается трассировка лучей?
Прошлые 3D-игры и большинство современных игр используют растеризацию. Растеризация объединяет элементы трехмерного игрового мира, видимые игроку, в двухмерное изображение. Он отображает только то, что должно быть видно игроку, поскольку любая производительность, используемая для создания того, что игрок не может видеть, тратится впустую. Однако это создает проблему.
Вернемся к примеру с зеркалом. Окружение игрока и персонаж игрока не видны игроку (по крайней мере, в игре от первого лица). При растеризации зеркалу нечего отражать.
Конечно, в современных играх есть зеркала. Они рендерят сцену дважды. Один проход выполняется с точки зрения игрока, а другой - с другой точки зрения. Однако это удваивает производительность, необходимую для рендеринга сцены.
Отражение экранного пространства, техника популярных движков 3D-игр, использует данные на экране для создания отражения. Этот метод идеально подходит для отражающих поверхностей под углом к перспективе игрока, таких как вода. Однако отраженные объекты исчезают, если отраженный объект перемещается за пределы экрана.
Трассировка лучей не разделяет этих проблем, потому что, в отличие от растеризации, она может выполнять трассировку вне точки зрения игрока.
Кроме того, в играх, которые позволяют лучам взаимодействовать с поверхностями, трассировка лучей может отображать реалистичные цветовые искажения и полуотражающие поверхности, которые трудно обрабатывать при растеризации.
Какое оборудование требуется для трассировки лучей?
Трассировка лучей - не новая идея. Ученые-компьютерщики экспериментировали с трассировкой лучей в начале 1980-х годов, создавая статические изображения с реалистичным освещением, отражениями и тенями. К сожалению, на их рендеринг ушло несколько часов.
В видеоигре требуется трассировка лучей в реальном времени со скоростью 30 кадров в секунду или выше. Это возможно только с видеокартой, предназначенной для ускорения трассировки лучей.
Трассировка лучей RTX от Nvidia основана на кремнии, называемом тензорным ядром. Тензорные ядра есть только в видеокартах RTX. Карты GTX от Nvidia могут отображать игру с использованием трассировки лучей, потому что, как уже говорилось, для трассировки лучей не требуется специально созданный кремний. Однако производительность ужасна по сравнению с картами RTX. А для некоторых игр, таких как Minecraft с трассировкой лучей RTX, требуется видеокарта RTX из-за особого способа, которым они включают трассировку лучей.
Карты AMD, которые ускоряют трассировку лучей, не имеют определенного бренда и не имеют специального кремния. Вместо этого они используют аппаратные настройки и обновления программного обеспечения для достижения лучших результатов. Определить карты AMD, ускоряющие трассировку лучей, сложнее, поэтому обратите внимание на детали.
Sony PlayStation 5 и Xbox Series X и S имеют графическое оборудование от AMD, которое может ускорить трассировку лучей. Однако это зависит от разработчиков, а многие игры этого не делают. Ярким примером является Cyberpunk 2077, которая поддерживала трассировку лучей RTX на ПК при запуске, но не поддерживала трассировку лучей на консолях следующего поколения. Эта функция обещается для консолей следующего поколения в будущем патче.