Поясняем за RayTracing: великий обман, или великая технология?

705 прочитали
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-2

Внимание широкой общественности трассировка привлекла в 2018 году, когда компания NVIDIA презентовала линейку видеокарт 20-й серии с поддержкой RayTracing. С тех пор склоки, споры и обсуждения не утихают. Пользователи говорят, что технология бесполезна, снижает производительность, не добавляет ничего нового в игровой процесс. Но так ли это на самом деле?

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

Освещение и тени

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-3
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-4
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-5

При создании игр объекты моделируются в трехмерном пространстве. Каждая точка в нём имеет три координаты (x, y, z). Все объёмные объекты соcтоят из треугольников потому, что именно три точки, три вершины задают плоскость. Такие треугольники называются полигонами. Чем больше полигонов, тем точнее моделируется объект.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-6
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-7

Так создаются 3D-объекты, но смотрят люди на них через 2D-мониторы. Важная техническая задача – передать ощущение объёма через плоский экран. Основные инструменты для решения – перспектива и светотень.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-8

С перспективой всё относительно просто. Объекты, которое отдалены от зрителя, должны быть меньше объектов, которые находятся близко. А вот со светотенью всё посложнее.

Пиксели и растеризация

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-9
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-10
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-11

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-12
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-13

При растеризации нужно передать силуэт предмета, его цвет, свет в сцене, тени и отражения. Задача это довольно сложная.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-14

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-15
Пример некорректной обработки источников света. Разница между скринами секунда
Пример некорректной обработки источников света. Разница между скринами секунда

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

Как работает RayTracing

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-17
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-18

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-19
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-20

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-21

Важный неразделимый партнёр света – тень. При трассировке лучей свет распределяется согласно условным законам физики, и тени получаются автоматически.

Примерно так выглядит карта теней
Примерно так выглядит карта теней

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-23

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-24
Пример некорректной обработки источников света. Разница между скринами секунда
Пример некорректной обработки источников света. Разница между скринами секунда

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

Пример жёстких теней
Пример жёстких теней

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

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

Отражения

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-27
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-28

Самая большая проблема, с которой сталкивается растеризация – создание отражений и рефлектов (бликов, которые появляются на объекте от соседних предметов).

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-29

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-30
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-31

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

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

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-32

Чтобы это исправить, придумали другой подход к созданию отражений. Xтобы главный герой отражался в зеркале, за зеркалом разработчик должен был выставить камеру, направленную на него. Изображение с неё транслировалось на поверхность зеркала. Это уже выглядело более реалистично, но всё ещё не точно и часто сопровождалось багами.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-33
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-34

Современная трассировка лучей создает отражения автоматически. При чём даже для малейших отражающих поверхностей, что не может не удивлять. Разработчики при растеризации не могут позволить себе тратить время на такие мелкие детали. Иначе одна игра будет создаваться вечно.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-35
Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-36

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

Что даёт трассировка?

Трассировка позволяет рассчитывать поведение света, автоматически создавать тени, блики и отражения. Разработчикам не нужно добавлять множество мелких объектов вручную. Программа сама создает детализированное изображение. Это происходит быстро и удивительно реалистично.

Пользователь получает действительно красивую картинку. Трассировка лучей позволяет получить минимум визуальных ошибок и свето-теневых несостыковок.

Недостатки RayTracing

Основная претензия к RayTracing – потеря производительности и FPS при использовании. И она действительно обоснована. Правда, важно отметить, что компания NVIDIA это понимает и работает над оптимизацией технологии.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-37

Для этого, во-первых, карты получили специальные вычислительные блоки – RT- и Tensor-ядра.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-38

Во-вторых, компания старается снизить вычислительную нагрузку на графический процессор. Например, свет в реальной жизни состоит из миллионов лучей, производители для расчета ограничивают их число. Снижают нагрузку, стараясь сохранить прежний визуальный результат.

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-39

В-третьих, компания ищет программные улучшения, привлекает ИИ. Новая технология DLSS искусственно добавляет лучи уже после расчетов и сглаживает картинку, позволяя получать лучшее качество изображения из исходников в низком разрешении.

Все эти меры дают свои плоды, и потери в производительности снижаются.

Итоги

Немногие знают, что на самом деле технология трассировки лучей совсем не нова.-40

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

Как известно, все процессы время поворачивает вспять. Когда-то топовые видеокарты «нагибал» переход в 3D. Потом PhysX, потом тесселяция, потом продвинутые методы сглаживания. Тогда тоже ходили разговоры, мол всё это от лукавого. Но со временем эти технологии стали стандартом индустрии, видеокарты адаптировались и теряют в быстродействии незначительно. Возможно, пройдёт ещё 3-5 лет, и RayTracing тоже станет стандартом?

Также у этого материала есть видеоверсия: