В 3D компьютерной графики , трассировки лучей является рендеринг метод генерирования изображения путем отслеживания пути света в качестве пикселей в плоскости изображения и воспроизведения эффектов его столкновений с виртуальными объектами.
Этот метод способен обеспечить высокую степень визуального реализма, более высокую, чем обычные методы рендеринга строк развертки , [ цитата необходима ], но требует больших вычислительных затрат . Это делает трассировку лучей наиболее подходящей для приложений, в которых допускается относительно продолжительное время рендеринга, например, для неподвижных компьютерных изображений, визуальных эффектов в кино и телевидении (VFX), но, как правило, она менее подходит для приложений реального времени, таких как как видеоигры , где скорость имеет решающее значение при рендеринге каждого кадра . [1]
Однако в последние годы аппаратное ускорение для трассировки лучей в реальном времени стало стандартом для новых коммерческих видеокарт, и графические API-интерфейсы последовали его примеру, позволяя разработчикам добавлять методы трассировки лучей в реальном времени в игры и другие средства визуализации в реальном времени с помощью меньшее, хотя и существенное снижение времени рендеринга кадров.
Трассировка лучей позволяет моделировать различные оптические эффекты, такие как отражение и преломление , рассеяние и явления дисперсии (например, хроматическая аберрация ). Его также можно использовать для отслеживания пути звуковых волн аналогично световым волнам, что делает его жизнеспособным вариантом для более иммерсивного звукового дизайна в видеоиграх за счет реалистичной реверберации и эха . [2] Фактически, с помощью этих методов можно смоделировать любую физическую волну или явление частицы с приблизительно линейным движением. [ необходима цитата ]
Трассировка пути - это форма трассировки лучей, которая может создавать мягкие тени, глубину резкости , размытие движения , каустику , окружающее окклюзию и непрямое освещение. [3] Трассировка пути - это беспристрастный метод рендеринга , но для получения высококачественных эталонных изображений без зашумленных артефактов необходимо трассировать большое количество лучей.
Гибридная трассировка лучей - это комбинация трассировки лучей и растеризации . [4] [5]
История
Идея трассировки лучей возникла еще в 16 веке, когда она была описана Альбрехтом Дюрером , которому приписывают ее изобретение. [6] В « Четырех книгах по измерениям» он описал устройство, называемое дверью Дюрера, с использованием нити, прикрепленной к концу стилуса, которую помощник перемещает по контурам объекта для рисования. Нить проходит через дверную коробку, а затем через крючок на стене. Нить образует луч, а крючок действует как центр проекции и соответствует положению камеры при трассировке лучей. [7] [8]
История компьютеризированной трассировки лучей для рендеринга изображений в основном отслеживает развитие компьютерного оборудования. Первые системы были пакетными (компьютерные перфокарты или магнитная лента) и работали на относительно медленных компьютерах с основной памятью. Теперь графические процессоры ( графические процессоры ) поддерживают трассировку лучей для большей реалистичности в динамичных трехмерных компьютерных играх.
Использование компьютера для трассировки лучей для создания закрашенных изображений впервые было предпринято Гольдштейном и Нагелем из MAGI (Mathematics Applications Group, Inc.). [9] В их работе цитируется более ранняя работа Артура Аппеля по «визуальному моделированию трехмерных объектов» [10], в которой «используется« количественная невидимость »для устранения скрытых линий и дополнительная программа для создания вывода в оттенках серого», так что это не совсем так. "трассировка лучей". В статье Голдсейна и Нагеля «Трехмерное визуальное моделирование» трассировка лучей используется для создания закрашенных изображений твердых тел путем имитации фотографического процесса в обратном порядке. Для каждого элемента изображения (пикселя) на экране они пропускают через него луч света в сцену, чтобы идентифицировать видимую поверхность. Поверхность, пересекаемая лучом, найденная путем «прослеживания» по нему, была видимой. В найденной точке пересечения луча и поверхности они вычислили нормаль к поверхности и, зная положение источника света, вычислили яркость пикселя на экране. В их публикации описан короткий (30-секундный) фильм, «снятый с использованием дисплейного оборудования Мэрилендского университета, оснащенного 16-мм камерой. В фильме показан вертолет и простая установка орудия с уровня земли. Вертолет был запрограммирован на выполнение ряда маневров, включая повороты, взлет, посадку и т. Д., Пока в конечном итоге он не был сбит и разбился ». Использовался компьютер CDC 6600 .
Расширяя этот метод, MAGI разработала коммерческую систему CAD / CAM под названием SynthaVision, которая создавала закрашенные изображения и линейные чертежи, вычисляла массовые характеристики и проверяла невмешательство в операции обработки с ЧПУ. К сожалению, из-за вычислительной мощности компьютера в то время это была дорогая пакетная система. MAGI выпустила анимационный видеоролик под названием MAGI / SynthaVision Sampler в 1974 году. [11]
В 1976 году Скотт Рот создал анимационную книжку - книжку для курса компьютерной графики Боба Спроулла в Калифорнийском технологическом институте, используя трассировку лучей с помощью простой модели камеры-обскуры . Отсканированные страницы отображаются в виде видео справа. Компьютерная программа Рота отметила крайнюю точку в местоположении пикселя, если луч пересекал ограниченную плоскость, отличную от плоскости его соседей. Конечно, луч мог пересекать несколько плоскостей в пространстве, но только ближайшая к камере точка поверхности была отмечена как видимая. Края неровные, потому что только грубое разрешение было практичным с вычислительной мощностью используемого DEC PDP-10 с разделением времени . «Терминал» представлял собой дисплей Tektronix с трубкой для хранения текста и графики. К дисплею был прикреплен принтер, который создавал изображение дисплея на [катящейся] термобумаге. (Хотя нормаль к поверхности могла быть вычислена на каждом пересечении луча и поверхности для рендеринга в градациях серого, пиксели дисплея были только двоичными: зелеными или черными.) Рот расширил рамки, введя термин « луч-литье» в контексте компьютерной графики и твердотельное моделирование .
Рот ввел термин « луч-литье » до того, как услышал о «трассировке лучей»; однако оба термина описывают одну и ту же концепцию. Его разработка в GM Research Labs по трассировке лучей [12] происходила одновременно с работой Тернера Уиттеда по трассировке лучей в Bell Labs. . [13] Для каждого пикселя изображения в сцену отбрасывается луч, идентифицируется видимая поверхность, вычисляется нормаль к поверхности в видимой точке и вычисляется интенсивность видимого света. Для моделирования теней, прозрачности и общей зеркальности (например, зеркала), отливаются дополнительные лучи.
Уиттед выпустил фильм с трассировкой лучей под названием Compleat Angler [14] в 1979 году, работая инженером в Bell Labs. Он смоделировал преломление для прозрачных пленок в видео, создав вторичный луч из видимой точки поверхности под углом, определяемым показателем преломления твердого тела. Затем вторичный луч обрабатывается как зеркальный луч.
До 2013 года крупномасштабное глобальное освещение в основных фильмах с использованием компьютерных изображений имитировалось дополнительным освещением. Фильм Pixar « Университет монстров» 2013 года был первым анимационным фильмом, в котором трассировка лучей использовалась для освещения и затенения. [15]
Обзор алгоритма
Оптическая трассировка лучей описывает метод создания визуальных изображений, построенных в средах трехмерной компьютерной графики , с большей фотореалистичностью, чем методы литья лучей или рендеринга строк развертки . Он работает, отслеживая путь от воображаемого глаза через каждый пиксель на виртуальном экране и вычисляя цвет объекта, видимого через него.
Сцены в трассировке лучей математически описываются программистом или художником-оформителем (обычно с использованием промежуточных инструментов). Сцены могут также включать данные из изображений и моделей, снятых с помощью таких средств, как цифровая фотография.
Как правило, каждый луч должен быть протестирован на пересечение с некоторым подмножеством всех объектов сцены. Как только ближайший объект будет идентифицирован, алгоритм оценит падающий свет в точке пересечения, изучит свойства материала объекта и объединит эту информацию для вычисления окончательного цвета пикселя. Определенные алгоритмы освещения и отражающие или полупрозрачные материалы могут потребовать большего количества лучей для повторного отражения в сцене.
На первый взгляд может показаться нелогичным или «обратным» направлять лучи в сторону от камеры, а не в нее (как настоящий свет в действительности), но это на много порядков эффективнее. Поскольку подавляющее большинство световых лучей от данного источника света не попадают прямо в глаз зрителя, «прямое» моделирование потенциально может тратить огромное количество вычислений на световые пути, которые никогда не записываются.
Таким образом, при трассировке лучей используется сокращение, предполагающее, что данный луч пересекает рамку вида. После максимального количества отражений или после прохождения луча на определенное расстояние без пересечения луч прекращает движение и значение пикселя обновляется.
Расчет лучей для прямоугольного окна просмотра
На входе мы имеем (при расчете используем векторную нормализацию и кросс-произведение ):
- положение глаз
- целевая позиция
- поле зрения - для человека можно предположить
- количество квадратных пикселей в области просмотра по вертикали и горизонтали
- количество фактических пикселей
- вертикальный вектор, который указывает, где находится вверх и вниз, обычно (не видны на снимке) - рулонная компоненте , которые определяют видовое вращение вокруг точки С (где осью вращения является секцией ЕТ)
Идея состоит в том, чтобы найти положение центра пикселей каждого окна просмотра. что позволяет нам найти линию, идущую от глаза через этот пиксель и, наконец, получить луч, описанный точкой и вектор (или его нормализация ). Сначала нам нужно найти координаты нижнего левого пикселя области просмотра. и найдите следующий пиксель, сделав сдвиг по направлениям, параллельным области просмотра (векторы я ) умножить на размер пикселя. Ниже мы вводим формулы, которые включают расстояниемежду глазом и окном просмотра. Однако это значение будет уменьшено во время нормализации лучей. (так что вы можете принять это и убрать из расчетов).
Предварительные расчеты: найдем и нормализуем вектор и векторы которые параллельны окну просмотра (все изображено на картинке выше)
обратите внимание, что центр области просмотра , далее мы вычисляем размеры области просмотра делится на 2, включая соотношение сторон
а затем вычисляем векторы сдвига следующего пикселя вдоль направлений, параллельных области просмотра (), и центр левого нижнего пикселя
Расчеты: примечание и луч так
Вышеупомянутая формула была протестирована в этом проекте javascript (работает в браузере).
Подробное описание компьютерного алгоритма трассировки лучей и его генезиса.
Что происходит в (упрощенной) природе
В природе источник света испускает луч света, который, в конце концов, попадает на поверхность, которая прерывает его движение. Этот «луч» можно представить себе как поток фотонов, движущихся по одному и тому же пути. В идеальном вакууме этот луч будет прямой (без учета релятивистских эффектов ). С этим световым лучом может произойти любая комбинация четырех вещей: поглощения , отражения , преломления и флуоресценции . Поверхность может поглощать часть светового луча, что приводит к потере интенсивности отраженного и / или преломленного света. Он также может отражать весь или часть светового луча в одном или нескольких направлениях. Если поверхность имеет какие-либо прозрачные или полупрозрачные свойства, она преломляет часть светового луча в себя в другом направлении, поглощая часть (или весь) спектр (и, возможно, изменяя цвет). Реже поверхность может поглощать некоторую часть света и флуоресцентно переизлучать свет более длинноволновым цветом в случайном направлении, хотя это бывает достаточно редко, поэтому его можно исключить из большинства приложений визуализации. Между поглощением, отражением, преломлением и флуоресценцией необходимо учитывать весь входящий свет, и не более того. Например, поверхность не может отражать 66% падающего светового луча и преломлять 50%, так как в сумме они составят 116%. Отсюда отраженные и / или преломленные лучи могут попадать на другие поверхности, где их поглощающие, преломляющие, отражающие и флуоресцентные свойства снова влияют на продвижение входящих лучей. Некоторые из этих лучей движутся таким образом, что попадают в наш глаз, заставляя нас видеть сцену и таким образом вносить свой вклад в окончательное визуализированное изображение.
Алгоритм Ray casting
Идея построения лучей, предшествующая рекурсивной трассировке лучей, состоит в том, чтобы проследить лучи от глаза, по одному на пиксель, и найти ближайший объект, блокирующий путь этого луча. Подумайте об изображении как о двери-ширме, где каждый квадрат на экране представляет собой пиксель. Это и есть объект, который видит глаз через этот пиксель. Используя свойства материала и эффект источников света в сцене, этот алгоритм может определить затенение этого объекта. Делается упрощающее предположение, что если поверхность обращена к свету, свет достигнет этой поверхности и не будет блокироваться или находиться в тени. Затенение поверхности вычисляется с использованием традиционных моделей затенения трехмерной компьютерной графики. Одним из важных преимуществ преобразования лучей по сравнению с более старыми алгоритмами сканирования строк была его способность легко работать с неплоскими поверхностями и твердыми телами, такими как конусы и сферы . Если математическая поверхность может быть пересечена лучом, ее можно визуализировать с помощью преобразования лучей. Сложные объекты можно создавать с помощью методов твердотельного моделирования и легко визуализировать.
Алгоритм рекурсивной трассировки лучей
Более ранние алгоритмы отслеживали лучи от глаза до сцены, пока они не попадали в объект, но определяли цвет луча без рекурсивного отслеживания большего количества лучей. Рекурсивная трассировка лучей продолжает процесс. Когда луч падает на поверхность, дополнительные лучи могут испускаться из-за отражения, преломления и тени .: [16]
- Луч отражения прослеживается в направлении зеркального отражения. Ближайший объект, который он пересекает, будет виден в отражении.
- Луч преломления, проходящий через прозрачный материал, работает аналогично, с той лишь разницей, что преломляющий луч может входить в материал или выходить из него. Тернер Уиттед расширил математическую логику прохождения лучей через прозрачное твердое тело, включив в него эффекты преломления. [17]
- К каждому источнику света направляется теневой луч. Если между поверхностью и источником света находится какой-либо непрозрачный объект, это означает, что поверхность находится в тени, и свет не освещает ее.
Эти рекурсивные лучи добавляют больше реализма изображениям с трассировкой лучей.
Преимущества перед другими методами рендеринга
Популярность рендеринга на основе трассировки лучей объясняется тем, что он основан на реалистичном моделировании переноса света по сравнению с другими методами рендеринга, такими как растеризация , которые больше ориентированы на реалистичное моделирование геометрии. Такие эффекты, как отражения и тени , которые трудно смоделировать с помощью других алгоритмов, являются естественным результатом алгоритма трассировки лучей. Вычислительная независимость каждого луча делает трассировки лучей поддается базового уровня параллелизации , [18] [19] , но расхождение лучевых траекторий делает высокий коэффициент использования при параллельности довольно трудно достичь на практике. [20]
Недостатки
Серьезным недостатком трассировки лучей является производительность (хотя теоретически она может быть быстрее, чем традиционный рендеринг строк развертки, в зависимости от сложности сцены и количества пикселей на экране). До конца 2010-х годов трассировка лучей в реальном времени обычно считалась невозможной на потребительском оборудовании для нетривиальных задач. Алгоритмы развертки и другие алгоритмы используют согласованность данных для разделения вычислений между пикселями, в то время как трассировка лучей обычно запускает процесс заново, обрабатывая каждый луч глаза отдельно. Однако это разделение предлагает другие преимущества, такие как возможность испускать больше лучей по мере необходимости для выполнения пространственного сглаживания и улучшения качества изображения там, где это необходимо.
Несмотря на то, что она точно обрабатывает взаимное отражение и оптические эффекты, такие как преломление, традиционная трассировка лучей также не обязательно является фотореалистичной . Истинный фотореализм возникает, когда уравнение рендеринга близко приближено или полностью реализовано. Реализация уравнения рендеринга дает настоящий фотореализм, поскольку уравнение описывает каждый физический эффект светового потока. Однако это обычно невозможно с учетом требуемых вычислительных ресурсов.
Реалистичность всех методов рендеринга можно оценить как приближение к уравнению. Трассировка лучей, если она ограничена алгоритмом Уиттеда, не обязательно будет наиболее реалистичной. Методы, которые отслеживают лучи, но включают дополнительные методы ( фотонное картирование , отслеживание пути ), дают гораздо более точное моделирование реального освещения.
Обратное направление обхода сцены лучами
Процесс попадания лучей из глаза в источник света для рендеринга изображения иногда называют обратной трассировкой лучей , поскольку в действительности фотоны движутся в противоположном направлении. Однако с этой терминологией возникает путаница. Ранняя трассировка лучей всегда проводилась от глаза, и ранние исследователи, такие как Джеймс Арво, использовали термин обратная трассировка лучей, чтобы обозначать получение лучей от источников света и сбор результатов. Поэтому ясно различать глаз на основе в сравнении света на основе трассировки лучей.
В то время как прямое освещение обычно лучше всего измеряется с помощью трассировки лучей на основе глаз, некоторые косвенные эффекты могут выиграть от лучей, генерируемых источниками света. Каустики - это яркие узоры, вызванные фокусировкой света от широкой отражающей области на узкую область (почти) диффузной поверхности. Алгоритм, который направляет лучи непосредственно от источников света на отражающие объекты, отслеживая их пути к глазу, лучше отразит это явление. Эта интеграция лучей на основе глаз и света часто выражается как двунаправленное отслеживание пути, при котором пути отслеживаются как от глаза, так и от источников света, а пути впоследствии соединяются соединительным лучом после некоторой длины. [21] [22]
Фотонное картирование - это еще один метод, который использует трассировку лучей как по свету, так и по глазам; на начальном этапе энергетические фотоны прослеживаются вдоль лучей от источника света, чтобы вычислить оценку лучистого потока как функции трехмерного пространства (сама одноименная карта фотонов). В последующем проходе лучи прослеживаются от глаза к сцене для определения видимых поверхностей, а фотонная карта используется для оценки освещенности в точках видимой поверхности. [23] [24] Преимущество отображения фотонов перед двунаправленным отслеживанием пути заключается в возможности значительного повторного использования фотонов, сокращая объем вычислений за счет статистической погрешности.
Дополнительная проблема возникает, когда свет должен проходить через очень узкое отверстие, чтобы осветить сцену (рассмотрим затемненную комнату со слегка приоткрытой дверью, ведущей в ярко освещенную комнату) или сцену, в которой большинство точек не имеют прямой линии освещения. - прицел на любой источник света (например, потолочные светильники или торшеры ). В таких случаях только очень небольшое подмножество путей будет транспортировать энергию; Перенос света в Метрополис - это метод, который начинается со случайного поиска в пространстве путей, и когда энергетические пути обнаруживаются, повторно использует эту информацию, исследуя близлежащее пространство лучей. [25]
Справа находится изображение, показывающее простой пример пути лучей, рекурсивно генерируемых от камеры (или глаза) к источнику света с использованием вышеуказанного алгоритма. Рассеянная поверхность отражает свет во всех направлениях.
Сначала луч создается в точке взгляда и прослеживается через пиксель в сцену, где он попадает на диффузную поверхность. С этой поверхности алгоритм рекурсивно генерирует луч отражения, который прослеживается через сцену, где попадает на другую диффузную поверхность. Наконец, генерируется еще один луч отражения, который проходит через сцену, где он попадает на источник света и поглощается. Цвет пикселя теперь зависит от цветов первой и второй диффузных поверхностей и цвета света, излучаемого источником света. Например, если источник света излучал белый свет, а две диффузные поверхности были синими, то результирующий цвет пикселя будет синим.
Пример
В качестве демонстрации принципов, задействованных в трассировке лучей, рассмотрим, как найти пересечение между лучом и сферой. Это просто математика, лежащая в основе пересечения линии и сферы и последующего определения цвета вычисляемого пикселя. Конечно, есть гораздо больше общего процесса трассировки лучей, но это демонстрирует пример используемых алгоритмов.
В векторных обозначениях уравнение сферы с центром и радиус является
Любая точка луча, начинающаяся с точки с направлением (здесь - единичный вектор ) можно записать как
где это расстояние между а также . В нашей проблеме мы знаем, , (например, положение источника света) и , и нам нужно найти . Поэтому мы заменяем:
Позволять для простоты; тогда
Знание того, что d является единичным вектором, позволяет нам сделать это небольшое упрощение:
Это квадратное уравнение имеет решения
Два значения найдены путем решения этого уравнения два таких, что - это точки, в которых луч пересекает сферу.
Любое отрицательное значение лежит не на луче, а на противоположной полуоси (т.е. той, которая начинается с с противоположным направлением).
Если величина под квадратным корнем ( дискриминант ) отрицательна, то луч не пересекает сферу.
Предположим теперь, что есть хотя бы положительное решение, и пусть быть минимальным. Кроме того, давайте предположим, что сфера - это ближайший объект на нашей сцене, пересекающий наш луч, и что она сделана из отражающего материала. Нам нужно найти, в каком направлении отражается световой луч. Законы отражения гласят, что угол отражения равен углу падения падающего луча и нормали к сфере и противоположен ему .
Нормаль к сфере просто
где - найденная ранее точка пересечения. Направление отражения может быть найдено с помощью отражения от относительно , это
Таким образом, отраженный луч имеет уравнение
Теперь нам нужно только вычислить пересечение последнего луча с нашим полем обзора , чтобы получить пиксель, в который попадет наш отраженный световой луч. Наконец, для этого пикселя устанавливается соответствующий цвет с учетом того, как цвет исходного источника света и цвет сферы сочетаются с отражением.
Адаптивный контроль глубины
Адаптивное управление глубиной означает, что рендерер прекращает генерировать отраженные / проходящие лучи, когда вычисленная интенсивность становится меньше определенного порога. Всегда должна быть установлена максимальная глубина, иначе программа генерирует бесконечное количество лучей. Но не всегда нужно идти на максимальную глубину, если поверхности не обладают высокой отражающей способностью. Чтобы проверить это, трассировщик лучей должен вычислить и сохранить произведение глобальных коэффициентов и коэффициентов отражения по мере трассировки лучей.
Пример: пусть Kr = 0,5 для набора поверхностей. Тогда от первой поверхности максимальный вклад составляет 0,5, для отражения от второй: 0,5 × 0,5 = 0,25, третьей: 0,25 × 0,5 = 0,125, четвертой: 0,125 × 0,5 = 0,0625, пятой: 0,0625 × 0,5 = 0,03125. и т. д. Кроме того, мы могли бы реализовать коэффициент затухания на расстоянии, такой как 1 / D2, который также уменьшит вклад интенсивности.
Для проходящего луча мы могли бы сделать что-то подобное, но в этом случае расстояние, пройденное через объект, вызвало бы еще более быстрое уменьшение интенсивности. В качестве примера Холл и Гринберг обнаружили, что даже для очень отражающей сцены использование этого с максимальной глубиной 15 привело к средней глубине дерева лучей 1,7. [26]
Граничные объемы
Включение групп объектов в наборы иерархических ограничивающих объемов снижает объем вычислений, необходимых для трассировки лучей. Литой луч сначала проверяется на пересечение с ограничивающим объемом , а затем, если есть пересечение, объем рекурсивно делится до тех пор, пока луч не попадет в объект. Наилучший тип ограничивающего объема будет определяться формой нижележащего объекта или объектов. Например, если объекты длинные и тонкие, то сфера будет заключать в основном пустое пространство по сравнению с коробкой. С помощью прямоугольников также проще создавать иерархические ограничивающие объемы.
Обратите внимание, что использование такой иерархической системы (при условии, что это сделано осторожно) изменяет время вычисления пересечения с линейной зависимости от количества объектов на что-то среднее между линейной и логарифмической зависимостью. Это потому, что в идеальном случае каждый тест на пересечение делит возможности на два и приводит к структуре типа двоичного дерева. Этого пытаются добиться с помощью методов пространственного деления, обсуждаемых ниже.
Kay & Kajiya приводят список требуемых свойств для иерархических ограничивающих объемов:
- Поддеревья должны содержать объекты, которые находятся рядом друг с другом, и чем дальше по дереву, тем ближе должны быть объекты.
- Объем каждого узла должен быть минимальным.
- Сумма объемов всех ограничивающих объемов должна быть минимальной.
- Больше внимания следует уделять узлам рядом с корнем, поскольку обрезка ветви возле корня удалит больше потенциальных объектов, чем один дальше по дереву.
- Время, затрачиваемое на построение иерархии, должно быть намного меньше времени, сэкономленного при ее использовании.
Интерактивная трассировка лучей
Первой реализацией интерактивного трассировщика лучей была компьютерная графическая система LINKS-1, созданная в 1982 году в Инженерной школе Осакского университета профессорами Омурой Коити, Сиракавой Исао и Каватой Тору с 50 студентами. [ Править ] Это было массовым параллелизмом обработки компьютерной системой с 514 микропроцессорами (257 Zilog Z8001s и 257 iAPX 86S ), используемых для рендеринга реалистичных 3D компьютерной графики с трассировки лучей с высокой скоростью. По данным Общества обработки информации Японии : «Ядром рендеринга 3D-изображений является вычисление яркости каждого пикселя, составляющего визуализированную поверхность, с заданной точки обзора, источника света и положения объекта. Система LINKS-1 была разработана для реализации методология рендеринга изображений, при которой каждый пиксель может обрабатываться параллельно независимо с использованием трассировки лучей. Разработав новую методологию программного обеспечения специально для высокоскоростной рендеринга изображений, LINKS-1 смогла быстро рендерить очень реалистичные изображения ». Он использовался для создания раннего 3D- видео неба, похожего на планетарий, полностью сделанного с использованием компьютерной графики. Видео было представлено в павильоне Fujitsu на Международной выставке 1985 года в Цукубе » . [27] Это была вторая система, сделавшая это после Evans & Sutherland Digistar в 1982 году. Сообщалось, что LINKS-1 является самым мощным компьютером в мире. в 1984 г. [28]
Самая ранняя публичная запись о трассировке лучей «в реальном времени» с интерактивным рендерингом (т.е. обновлениями со скоростью более одного кадра в секунду) была отмечена на конференции по компьютерной графике SIGGRAPH в 2005 году как инструменты REMRT / RT, разработанные в 1986 году Майком Мууссом для Система твердотельного моделирования BRL-CAD . Первоначально опубликованный в 1987 году на USENIX , трассировщик лучей BRL-CAD был ранней реализацией параллельной сетевой распределенной системы трассировки лучей, которая обеспечивала производительность рендеринга несколько кадров в секунду. [29] Такая производительность была достигнута с помощью высокооптимизированного, но независимого от платформы движка трассировки лучей LIBRT в BRL-CAD и за счет использования твердой неявной геометрии CSG на нескольких параллельных машинах с общей памятью в стандартной сети. Трассировщик лучей BRL-CAD, включая инструменты REMRT / RT, по-прежнему доступен и разрабатывается сегодня как программное обеспечение с открытым исходным кодом. [30]
С тех пор были предприняты значительные усилия и исследования по внедрению трассировки лучей в реальном времени для различных целей в конфигурациях автономных настольных компьютеров. Эти цели включают интерактивные приложения трехмерной графики, такие как производство демонстрационных фильмов , компьютерные и видеоигры , а также рендеринг изображений. Некоторые в режиме реального времени программное обеспечение 3D - системы , основанные на трассировке лучей, были разработаны любительскими демо - программистов с конца 1990 - х годов. [31]
В 1999 году команда из Университета Юты под руководством Стивена Паркера продемонстрировала интерактивную трассировку лучей вживую на Симпозиуме по интерактивной 3D-графике 1999 года. Они визуализировали модель из 35 миллионов сфер с разрешением 512 на 512 пикселей, работающую со скоростью примерно 15 кадров в секунду на 60 процессорах. [32]
Проект OpenRT включал высокооптимизированное программное ядро для трассировки лучей вместе с API-интерфейсом, подобным OpenGL , чтобы предложить альтернативу текущему подходу, основанному на растеризации, для интерактивной 3D-графики. Оборудование для трассировки лучей , такое как экспериментальный модуль обработки лучей, разработанный Свеном Вупом из Саарландского университета , было разработано для ускорения некоторых вычислительно-ресурсоемких операций трассировки лучей. 16 марта 2007 года Саарский университет представил реализацию высокопроизводительного движка трассировки лучей, который позволяет рендерить компьютерные игры с помощью трассировки лучей без интенсивного использования ресурсов. [33]
12 июня 2008 года Intel продемонстрировала специальную версию Enemy Territory: Quake Wars под названием Quake Wars: Ray Traced , использующую трассировку лучей для рендеринга и работающую в базовом разрешении HD (720p). ETQW работал со скоростью 14–29 кадров в секунду. Демонстрация прошла на 16-ядерной (4 сокета, 4 ядра) системе Xeon Tigerton, работающей на частоте 2,93 ГГц. [34]
На SIGGRAPH 2009 Nvidia анонсировала OptiX , бесплатный API для трассировки лучей в реальном времени на графических процессорах Nvidia. API предоставляет семь программируемых точек входа в конвейере трассировки лучей, позволяя настраивать камеры, пересечения лучей-примитивов, шейдеры, затенение и т. Д. Эта гибкость позволяет выполнять двунаправленную трассировку пути, транспорт света Метрополиса и многие другие алгоритмы рендеринга, которые невозможно реализовать с помощью хвостовая рекурсия. [35] Средства визуализации на основе OptiX используются в Autodesk Arnold, Adobe AfterEffects , Bunkspeed Shot, Autodesk Maya , 3ds max и многих других средствах визуализации.
Imagination Technologies предлагает бесплатный API под названием OpenRL, который ускоряет алгоритмы рендеринга на основе хвостовой рекурсивной трассировки лучей и вместе с их запатентованным оборудованием трассировки лучей работает с Autodesk Maya, чтобы обеспечить то, что 3D World называет «трассировкой лучей в реальном времени для обычных художников». [36]
В 2014 году демонстрация видеоигры The Tomorrow Children для PlayStation 4 , разработанная Q-Games и Japan Studio , продемонстрировала новые методы освещения , разработанные Q-Games, в частности, каскадную трассировку лучей воксельного конуса , которая имитирует освещение в реальном времени и использует более реалистичные отражения , чем отражения в пространстве экрана . [37]
Nvidia предлагает аппаратно-ускоренную трассировку лучей в своих графических процессорах GeForce RTX и Quadro RTX, в настоящее время основанных на архитектуре Ampere . Аппаратное обеспечение Nvidia использует отдельный функциональный блок, публично называемый «ядром RT». Этот блок несколько сравним с текстурным блоком по размеру, задержке и интерфейсу с ядром процессора. Устройство включает обход BVH, декомпрессию сжатого узла BVH, тестирование пересечения лучей и AABB и тестирование пересечения лучей и треугольников.
AMD предлагает интерактивную трассировку лучей поверх OpenCL на видеокартах Vega через Radeon ProRender . [38] В октябре 2020 года компания представила серию Radeon RX 6000 , свои графические процессоры Navi второго поколения с поддержкой трассировки лучей с аппаратным ускорением на онлайн-мероприятии. [39] [40] [41] [42] [43]
PlayStation 5 , Xbox серии X и серии S поддерживают специализированные трассировки луча аппаратных компонентов в своих графических процессоров в режиме реального времени трассировки лучей эффектов. [44] [45] [46] [47]
Вычислительная сложность
Для некоторых формулировок задачи трассировки лучей были доказаны результаты различной сложности. В частности, если вариант решения задачи трассировки лучей определяется следующим образом [48] - учитывая начальное положение и направление светового луча и некоторую фиксированную точку, достигает ли луч в конечном итоге этой точки, тогда в упомянутой статье подтверждаются следующие результаты:
- Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или преломляющих объектов, представленных системой рациональных квадратичных неравенств, неразрешима .
- Трассировка лучей в трехмерных оптических системах с конечным набором преломляющих объектов, представленных системой рациональных линейных неравенств, неразрешима.
- Трассировка лучей в трехмерных оптических системах с конечным набором прямоугольных отражающих или преломляющих объектов неразрешима.
- Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или частично отражающих объектов, представленных системой линейных неравенств, некоторые из которых могут быть иррациональными, неразрешимы.
- Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или частично отражающих объектов, представленных системой рациональных линейных неравенств, является жесткой для PSPACE .
- Для любого измерения, равного или превышающего 2, трассировка лучей с конечным набором параллельных и перпендикулярных отражающих поверхностей, представленных рациональными линейными неравенствами, находится в PSPACE.
Смотрите также
- Трассировка луча
- Трассировка конуса
- Распределенная трассировка лучей
- Глобальное освещение
- Затенение по Гуро
- Список программного обеспечения для трассировки лучей
- Список игр с поддержкой трассировки лучей
- Параллельные вычисления
- Трассировка пути
- Затенение по Фонгу
- Прогрессивное уточнение
- Затенение
- Зеркальное отражение
- Мозаика
- Попиксельное освещение
- GPUOpen
- Nvidia GameWorks
Рекомендации
- ^ «Спонсируемая функция: изменение игры - экспериментальная облачная трассировка лучей» . www.gamasutra.com . Проверено 18 марта 2021 года .
- ^ «Следующие большие шаги в звуковом дизайне игр» . www.gamasutra.com . Проверено 18 марта 2021 года .
- ^ «Дисней объясняет, почему его 3D-анимация выглядит такой реалистичной» . Engadget . Проверено 18 марта 2021 года .
- ^ «Гибридный рендеринг для освещения в реальном времени: трассировка лучей против растеризации - воображение» .
- ^ «Реализация гибридной трассировки лучей в растеризованном игровом движке - Imagination» .
- ^ Георг Райнер Хофманн (1990). «Кто изобрел трассировку лучей?». Визуальный компьютер . 6 (3): 120–124. DOI : 10.1007 / BF01911003 . S2CID 26348610 ..
- ^ Стив Люкинг (2013). «Дюрер, рисунок и цифровое мышление - конференция FATE 2013» . brian-curtis.com . Проверено 13 августа 2020 года .
- ^ Стив Люкинг. "Стивен Дж. Люкинг" . Проверено 13 августа 2020 года .
- ^ Гольдштейн, Роберт; Nagel, Роджер (январь 1971), "3-D Визуальное моделирование", моделирование , 16 (1): 25-31, DOI : 10,1177 / 003754977101600104
- ^ Аппель А. (1968) Некоторые методы для рендеринга твердых тел с помощью теневой машины . AFIPS Conference Proc. 32 с. 37-45
- ^ [1]
- ^ Рот, Скотт Д. (февраль 1982), "Луч Кастинг для моделирования твердых тел", компьютерная графика и обработка изображений , 18 (2): 109-144, DOI : 10.1016 / 0146-664X (82) 90169-1
- ^ Уиттед Т. (1979) Улучшенная модель освещения для затемненного дисплея . Материалы 6-й ежегодной конференции по компьютерной графике и интерактивным техникам.
- ^ [2]
- ^ Г-жа (28 мая 2013 г.). «Эта одушевленная жизнь: световая скорость Pixar приносит новый свет в Университет монстров» . Эта одушевленная жизнь . Проверено 26 мая 2020 года .
- ^ Томас Никодим (июнь 2010 г.). «Алгоритм трассировки лучей для интерактивных приложений» (PDF) . Чешский технический университет, FEE .
- ^ Уиттед Т. (1979). «Улучшенная модель освещения для затемненного дисплея» . Материалы 6-й ежегодной конференции по компьютерной графике и интерактивной технике . CiteSeerX 10.1.1.156.1534 . ISBN 0-89791-004-4.
- ^ Небель, Ж.-К. (1998). «Новый параллельный алгоритм на основе модели времени вычислений». Семинар Eurographics по параллельной графике и визуализации, 24–25 сентября 1998 г., Ренн, Франция . OCLC 493481059 .
- ^ Chalmers, A .; Дэвис, Т .; Рейнхард, Э. (2002). Практический параллельный рендеринг . А.К. Петерс. ISBN 1-56881-179-9.
- ^ Айла, Тимо; Лайне, Самулий (2009). «Понимание эффективности обхода лучей на графических процессорах». HPG '09: Труды конференции по высокому Graphics Performance 2009 . С. 145–149. DOI : 10.1145 / 1572769.1572792 . ISBN 9781605586038.
- ^ Эрик П. Лафортюн и Ив Д. Виллемс (декабрь 1993 г.). «Двунаправленное отслеживание пути» . Proceedings of Compugraphics '93 : 145–153.
- ^ Петер Дорнбах (1998). «Реализация алгоритма двунаправленной трассировки лучей» (PDF) . Проверено 11 июня 2008 года .
- ↑ Глобальное освещение с использованием фотонных карт. Архивировано 8 августа 2008 г. на Wayback Machine.
- ↑ Фотонная карта - Зак Уотерс
- ^ Вич, Эрик; Гибас, Леонидас Дж. (1997). «Метрополис Легкий транспорт». SIGGRAPH '97: Материалы 24-й ежегодной конференции по компьютерной графике и интерактивным методам . С. 65–76. DOI : 10.1145 / 258734.258775 . ISBN 0897918967.
- ^ Холл, Рой А.; Гринберг, Дональд П. (ноябрь 1983 г.). «Стенд для синтеза реалистичных изображений». Компьютерная графика и приложения IEEE . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . DOI : 10,1109 / MCG.1983.263292 . S2CID 9594422 .
- ^ «【Университет Осаки】 Система компьютерной графики LINKS-1» . Компьютерный музей IPSJ . Общество обработки информации Японии . Проверено 15 ноября 2018 года .
- ^ Дефанти, Томас А. (1984). Достижения в компьютерах. Том 23 (PDF) . Академическая пресса . п. 121. ISBN. 0-12-012123-9.
- ↑ См. Труды 4-го семинара по компьютерной графике, Кембридж, Массачусетс, США, октябрь 1987 г. Ассоциация Usenix, 1987 г., стр. 86–98.
- ^ «О БРЛ-САПР» . Проверено 18 января 2019 года .
- ^ Пьеро Фоскари. «Сфера трассировки лучей в реальном времени» . Транзакции ACM на графике . Проверено 17 сентября 2007 года .
- ^ Паркер, Стивен; Мартин, Уильям (26 апреля 1999 г.). «Интерактивная трассировка лучей» . I3D '99 Труды симпозиума 1999 г. по интерактивной трехмерной графике (апрель 1999 г.): 119–126. CiteSeerX 10.1.1.6.8426 . DOI : 10.1145 / 300523.300537 . ISBN 1581130821. S2CID 4522715 . Проверено 30 октября 2019 года .
- ^ Марк Уорд (16 марта 2007 г.). «Лучи озаряют реалистичную графику» . BBC News . Проверено 17 сентября 2007 года .
- ^ Тео Валич (12 июня 2008 г.). «Intel переводит ET: Quake Wars на трассировку лучей» . TG Daily . Проверено 16 июня 2008 года .
- ^ Nvidia (18 октября 2009 г.). «Nvidia OptiX» . Nvidia . Проверено 6 ноября 2009 года .
- ^ «3DWorld: Обзор оборудования: карта ускорителя трассировки лучей Caustic Series2 R2500» . Проверено 23 апреля 2013 года .3D World, апрель 2013 г.
- ^ Катберт, Дилан (24 октября 2015 г.). «Создание прекрасных новаторских визуальных эффектов The Tomorrow Children для PS4» . Блог PlayStation . Проверено 7 декабря 2015 года .
- ^ GPUOpen Трассировка лучей в реальном времени
- ^ Гарреффа, Энтони (9 сентября 2020 г.). «28 октября AMD представит видеокарты нового поколения Big Navi RDNA 2» . Твиктаун . Проверено 9 сентября 2020 года .
- ^ Лайлс, Тейлор (9 сентября 2020 г.). «Процессоры AMD Zen 3 следующего поколения и графический процессор Radeon RX 6000 'Big Navi' будут представлены в следующем месяце» . Грань . Проверено 10 сентября 2020 года .
- ^ «AMD дразнит цифры производительности карты Radeon RX 6000: стремитесь к 3080?» . anandtech.com . AnandTech . 8 октября 2020 года . Проверено 25 октября, 2020 .
- ^ «AMD объявляет о презентациях Ryzen« Zen 3 »и Radeon« RDNA2 »в октябре: новое путешествие начинается» . anandtech.com . AnandTech . 9 сентября 2020 . Проверено 25 октября, 2020 .
- ^ Джадд, Уилл (28 октября 2020 г.). «AMD представляет три видеокарты Radeon 6000 с трассировкой лучей и высочайшей производительностью RTX» . Eurogamer . Проверено 28 октября, 2020 .
- ^ Уоррен, Том (8 июня 2019 г.). «Microsoft намекает на Xbox следующего поколения« Scarlet »в тизерах E3» . Грань . Проверено 8 октября 2019 года .
- ^ Хаим, Гартенберг (8 октября 2019 г.). «Sony подтверждает название PlayStation 5, дата выхода праздника 2020 года» . Грань . Проверено 8 октября 2019 года .
- ^ Уоррен, Том (24 февраля 2020 г.). «Microsoft раскрывает больше спецификаций Xbox Series X, подтверждает, что графический процессор 12 терафлопс» . Грань . Проверено 25 февраля 2020 года .
- ^ Уоррен, Том (9 сентября 2020 г.). «Microsoft раскрывает спецификации Xbox Series S и обещает в четыре раза большую вычислительную мощность, чем Xbox One» . Грань . Проверено 9 сентября 2020 года .
- ^ «Вычислимость и сложность трассировки лучей» (PDF) . CS.Duke.edu .
Внешние ссылки
- Интерактивная трассировка лучей: замена растеризации?
- Совершенный рыболов (1978)
- Написание простого трассировщика лучей (скретчапиксель)
- Трассировка лучей тора
- Трассировка лучей в серии книг за выходные