В течение следующих нескольких недель я и мои товарищи по команде опубликуем серию статей, в которых подробно рассказывается о работе, которую мы проделали над Clive, нашим независимым проектом для Силиконовой долины 42. Clive - это движок трассировки пути, который позволяет визуализировать высокореалистичные изображения из 3D-моделей. Он медленнее, чем растровая графика (например, видеоигры и другие 3D-модели в реальном времени), но результаты потрясающие. Это технология, которую выбирают для высокопроизводительных приложений рендеринга, таких как компьютерная графика фильмов, архитектурное моделирование и другие ситуации, когда очень высокий уровень реализма важнее скорости. Мы подробно рассмотрим каждый аспект нашей программы, но сегодня я начну с быстрого мотивирующего объяснения того, чем трассировка пути отличается от традиционной графики.

Растр и трассировка пути

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

Трассировка пути рассматривает экран как камеру. Мы сопоставляем пиксели экрана с точками на плоскости «камеры» внутри сцены и моделируем фактические лучи света, выходящие через эту плоскость в сцену. Мы используем геометрию, физику, реальные данные о материалах и статистику, чтобы точно моделировать возможные пути, по которым может пройти свет. Мы записываем результаты, когда путь луча соединяет камеру с источником света. Эта операция выполняется на пиксель, потому что нам нужен (как минимум) один результат для каждого пикселя изображения.

Из этих описаний вы можете понять, почему растр намного быстрее, чем трассировка пути. Вы можете создать довольно реалистичную объектную модель, скажем, из 10 000 полигонов, но экран HD имеет чуть более 2 миллионов пикселей. Если ваша рабочая нагрузка будет определяться одним из этих двух чисел, выбор очевиден. Производительность трассировки не полностью зависит от количества полигонов, но в больших масштабах ее производительность гораздо больше зависит от разрешения. Порог немного меняется по мере улучшения оборудования, но где-то около 100 миллионов полигонов трассировка может опередить растр.

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

Если отслеживание происходит намного медленнее, в чем выгода? Одним словом, свет. Тонкости освещения объектов, комнат и мира вокруг нас сложны и трудно воспроизвести точно, но наше подсознание глубоко настроено на это. Мы можем отличить прозрачное стекло от прозрачного пластика, даже не касаясь его и не измеряя каким-либо образом, потому что мы подсознательно запомнили, как они отражают свет. Если вы сильно подозреваете, что изображение было обработано в фотошопе, но не понимаете, почему, это, скорее всего, связано с тем, что добавленный объект или человек был получен из слегка разных условий освещения. Растровая графика обычно разбивает освещение на отдельные компоненты на основе различных явлений (прямое освещение, тени, блестящие блики) и вычисляет их по частям. Трассировка пути - это решение проблемы глобального освещения, которое не разделяет различные аспекты, а скорее описывает весь поток света в сцене как одно сложное уравнение.

За исключением большой центральной шторки, эти два скриншота работают с одной и той же начальной информацией, но результаты сильно различаются. Обратите внимание на изображение с трассировкой пути, что часть цвета баннеров «растекается» на близлежащие поверхности; Это один из примеров явления, которое довольно сложно реализовать в других графических подходах, но которое естественным образом проявляется при трассировке пути. Окружающий свет постоянен на растровом изображении, но реалистично меняется на прослеживаемом изображении. На создание этого образа ушло много работы, и наша работа значительно продвинулась вперед, но это хорошая отправная точка для демонстрации технологии.

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