Трассировка лучей как метод рендеринга оставалась долгое время инструментом только кинопроизводства, но с появлением новых высокопроизводительных графических чипов теперь и игровая индустрия претерпевает значительный скачок в плане реализма, благодаря реализации этой технологии в современных играх.
Трассировка лучей или рейтрейсинг — это метод рендеринга в видеоиграх, позволяющий максимально точно имитировать отражение света от объектов, что в свою очередь создает более реалистичные тени, отражения и световые эффекты.
Впервые об исследованиях трассировки лучей и искусственного интеллекта и их применении в визуализации графики заговорили в 80-х годах прошлого века. Однако проблема заключалась в нехватке вычислительной мощности процессоров тех времен. Потребовалось несколько десятилетий для появления таких видеочипов, как NVIDIA Turing, которые ликвидировали этот пробел и позволили воплотить идеи прошлого в жизнь.
В реальности все, что находится в поле нашего зрения, по сути, является результатом попадания света на объекты, которые мы наблюдаем. Различная степень поглощения, отражения и преломления света этими объектами формирует картинку для человеческого глаза.
Трассировка лучей представляет собой фактически обратный процесс, о чем свидетельствует само название: это метод создания изображения с помощью компьютера путем «отслеживания» пути света от воображаемого глаза или камеры к объектам на этом изображении.
Алгоритм трассировки лучей учитывает как тип материала, так и источник света. Например, два баскетбольных мяча одинакового оттенка не будут выглядеть одинаково, если один выполнен из кожи, а другой из резины, потому что свет будет взаимодействовать с ними по-разному. Объекты, попадающие на пути любых световых лучей, будут отбрасывать тени. А прозрачное или полупрозрачное вещество, такое как стекло или вода, будет преломлять свет.
Для понимания метода трассировки лучей представим сетку на схеме как монитор компьютера. Чтобы визуализировать сцену из современной видеоигры, компьютер отображает трехмерный виртуальный мир игры на двухмерной плоскости — мониторе. При этом компьютер должен определить цвет для каждого пикселя на экране.
Процесс начинается с проецирования одного или нескольких лучей со стороны наблюдателя и проверки на пересечение лучами треугольников — составных частей виртуальных объектов в компьютерной графике. Если луч действительно попадает в треугольник, алгоритм использует такие данные, как цвет треугольника и его расстояние от наблюдателя, чтобы вычислить финальный результат — цвет пикселя.
Кроме того, лучи могут отражаться от треугольника или проходить через него, создавая все больше и больше лучей, которые также нужно учесть. Чем больше таких лучей, тем выше качество изображения, но вместе с тем требуется больше вычислительных ресурсов.
Одной из первых игр, поддерживающих трассировку лучей, стала компьютерная инди-игра Minecraft.
На ее примере рассмотрим, как включить или отключить рейтрейсинг в настройках игры.
В зависимости от модели видеокарты, расстояние рендеринга трассировки лучей по умолчанию может быть меньше 24. Измените этот параметр по своему усмотрению, чтобы изменить расстояние трассировки лучей и найти баланс между качеством графики и частотой кадров.
Методы рендеринга, применяемые раньше, как, например, Screen Space Reflections (SSR), обладали некоторыми изъянами — это в первую очередь невозможность отображать предметы, не находящиеся в определенный момент в кадре. В рейтрейсинге же учитывается весь трехмерный мир, тем самым обеспечиваются максимально точные отражения.
Из-за отсутствия отражающей способности некоторых поверхностей эффект зачастую не столь заметен, но при этом ресурсозатратен. Для осуществления задач рейтрейсинга по отражениям необходим как минимум один луч на отражающий пиксель.
Наряду с прорисовкой отражений есть целый ряд приемов моделирования теней методами рейтрейсинга. Чтобы понять, как формируется изображение, достаточно представить исходящий луч в сторону источника света. Если исходящий луч попадает на поверхность предмета, прежде чем доберется до источника света, такой пиксель должен приобрести более темный оттенок. При вычислениях учитываются как расстояние до источника света, так и яркость, и цветовая температура.
Рейтрейсинг способен в том числе реалистично отбрасывать тени сквозь прозрачные поверхности, такие как разного рода ткани. В результате таких вычислений получаются более мягкие и точные тени со сложной неструктурированной полутенью.
Модель затенения позволяет повторять сероватые тени, наблюдаемые в углах, щелях и небольших местах внутри и вокруг предметов. Алгоритм работает путем наблюдения за рядом коротких лучей в пределах одной области и проверки их на факт пересечения с ближайшими объектами — чем больше таких пересечений, тем более темной будет эта область.
Трассировка лучей открывает возможность визуализировать результат отражения и преломления света, отраженного от изогнутых поверхностей. Каустики вычисляются по аналогии с обычными отражениями. Метод сводится к тому, что генерируются лучи, выделяются места их взаимодействия с поверхностью и рисуются отражения и преломления.
Несмотря на то, что 2D-каустика не требует существенных вычислительных мощностей, 3D-каустика может уже значительно нагрузить видеокарту.
Отрисовка освещения — самое важная и при этом наиболее ресурсоемкая часть метода трассировки лучей. В ходе работы алгоритм отбрасывает лучи попиксельно на всю сцену и следит за всеми трансформациями, чтобы учесть даже малейшие изменения освещения.
NVIDIA. Для поддержки метода рендеринга видеокарты NVIDIA серии RTX 20 оборудованы специальным аппаратным решением, созданным для трассировки лучей. Архитектура Turing от NVIDIA на графических процессорах серии 20 использует ядра RT наряду с ядрами CUDA и Tensor от NVIDIA. Ядра RT предназначены исключительно для обработки трассировки лучей в реальном времени.
Выделенные ядра RT в графических процессорах серии RTX 20 на первый взгляд больше подходят для обеспечения рейтрейсинга, однако производительность такого решения оказалась недостаточной. Даже карта 2080Ti последнего поколения не справлялся с поддержкой игр с трассировкой лучей при запуске.
Новые графические процессоры RTX 3080 и 3090 имеют усовершенствованные ядра RT, благодаря чему достигается существенный прирост производительности. Эти карты не только быстрее, чем их аналоги последнего поколения — новые ядра RT также превосходят своих предшественников.
AMD. В течение последних нескольких лет AMD в своих продуктах пыталась обеспечить трассировку лучей с аппаратным ускорением, что по итогу вылилось в выпуск видеокарт серий RX 6800, 6800 XT и 6900 XT. Эти новые графические процессоры поддерживают трассировку лучей DirectX 12 и обеспечивают отличную производительность, хотя AMD пока все еще уступает NVIDIA в области трассировки лучей.
Кроме того, архитектура Big Navi, на которой работают карты AMD RX 6000, в значительной степени стала первым решением с поддержкой трассировки лучей. Это та же архитектура, которая обеспечивает визуальные эффекты в PlayStation 5 и Xbox Series X, обеспечивая в целом более низкий уровень производительности, чем флагманские карты NVIDIA.
Однако поскольку трассировка лучей все еще остается функцией консолей следующего поколения, значительное улучшения поддержки и оптимизации ожидается уже в обозримом будущем с появлением AMD FidelityFX Super Resolution (FSR) для игровых ПК, а также последних версий Microsoft Xbox.
Трассировка лучей быстро становится предпочтительным способом рендеринга. Одним из преимуществ трассировки лучей является то, что это более реалистичный режим рендеринга. Многие физически правильные явления можно легко смоделировать с помощью алгоритма трассировки лучей, поскольку алгоритм имитирует движение света в реальном мире.
Во многом этому способствуют значительные достоинства этого метода:
Поддержка рендеринга гладких объектов напрямую без вспомогательного полигонального приближения;
Возможность параллельной трассировки лучей, что существенно ускоряет вычисления;
Сложность сцены в трехмерном мире менее выраженно коррелируется со сложностью вычислений.
С другой стороны, по-прежнему огромным недостатком метода трассировки лучей является его скорость, которая сказывается на производительности в играх. Трассеры лучей и по сей день работают довольно медленно. В этой области проводится большая работа по распараллеливанию и разного рода оптимизации, однако вычислительная мощность оборудования играет гораздо большую роль в скорости рендеринга, чем возможные программные решения этой проблемы. Из соображений повышения производительности большинство 3D-приложений используют гибрид движков рендеринга с трассировкой лучей и сканирования строк.
Трассировка лучей в реальном времени в видеоиграх только зарождается. Видеокарты NVIDIA RTX в настоящее время являются единственными графическими процессорами потребительского уровня, которые предлагают аппаратную поддержку этой технологии, поэтому количество игр, использующих эту функцию, невелико.
Но по мере того, как все больше и больше производителей начнет внедрять технологии рейтрейсинга, реализм в видеоиграх со временем может выйти на совершенно новый уровень. Вполне вероятно, что со временем AMD догонит своего конкурента в области рейтрейсинга, что создаст прочную основу для разработчиков игр и вескую причину для создания игр, поддерживающих функции трассировки лучей. В свою очередь в перспективе даже 5-10 лет это сулит будущим играм достичь беспрецедентного уровня реализма
Что такое моноблок? Моноблок - представляет собой компьютер, в корпус которого входят все необходимые устройства…
Телевизор - представляет собой специальное устройство, главной задачей которого является прием и отображение ТВ-сигнала в…
Что такое глубина цвета, FRC? Глубина цвета - важный параметр любого монитора или телевизора. Это…
Что такое широкоформатный монитор? Широкоформатный монитор - это монитор с соотношением сторон 16:9 и диагональю…
Что такое S/PDIF? S/PDIF представляет собой разъем для передачи цифрового звука между аудио оборудованием. Здесь…
Что такое монитор? Монитор является устройством, которое визуально отображает информацию, идущую от компьютеров, гаджетов и…