stringtranslate.com

Трассировка лучей (графика)

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

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

По спектру вычислительных затрат и визуальной точности методы рендеринга на основе трассировки лучей, такие как ray casting , рекурсивная трассировка лучей, трассировка распределенных лучей , фотонное отображение и трассировка пути , как правило, медленнее и обеспечивают более высокую точность, чем методы рендеринга сканирующей строки . [1] Таким образом, трассировка лучей была впервые развернута в приложениях, где относительно длительное время рендеринга было допустимо, например, неподвижные изображения CGI и визуальные эффекты для кино и телевидения (VFX), но она меньше подходила для приложений реального времени, таких как видеоигры , где скорость имеет решающее значение при рендеринге каждого кадра . [2]

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

Трассировка лучей способна имитировать различные оптические эффекты, [3] такие как отражение , преломление , мягкие тени , рассеивание , глубина резкости , размытость движения , каустика , окклюзия окружающей среды и явления дисперсии (такие как хроматическая аберрация ). Ее также можно использовать для отслеживания пути звуковых волн аналогично световым волнам, что делает ее жизнеспособным вариантом для более захватывающего звукового дизайна в видеоиграх путем визуализации реалистичной реверберации и эха . [4] Фактически, любое физическое явление волны или частицы с приблизительно линейным движением можно смоделировать с помощью трассировки лучей .

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

История

«Рисовальщик, делающий перспективный рисунок лежащей женщины» Альбрехта Дюрера, возможно, 1532 года, изображает человека, использующего сетку для создания изображения. Немецкий художник эпохи Возрождения считается первым, кто описал эту технику.
Гравюра на дереве Дюрера с изображением изобретения Якоба де Кейзера. С помощью устройства де Кейзера точка зрения художника фиксировалась крючком для глаз, вставленным в стену. Он был соединен шелковой нитью с инструментом в стиле прицела, с заостренным вертикальным элементом спереди и глазком сзади. Художник наводил на объект и обводил его контур на стекле, удерживая окуляр на одной линии с нитью, чтобы поддерживать правильный угол зрения.

Идея трассировки лучей появилась еще в XVI веке, когда ее описал Альбрехт Дюрер , которому приписывают ее изобретение. [5] Дюрер описал несколько методов проецирования трехмерных сцен на плоскость изображения. Некоторые из них проецируют выбранную геометрию на плоскость изображения, как это делается при растеризации сегодня. Другие определяют, какая геометрия видна вдоль заданного луча, как это делается при трассировке лучей. [6] [7]

Использование компьютера для трассировки лучей для создания затененных изображений было впервые осуществлено Артуром Аппелем в 1968 году. [8] Аппель использовал трассировку лучей для первичной видимости (определение ближайшей поверхности к камере в каждой точке изображения) путем трассировки луча через каждую точку, которая должна быть затенена в сцене, чтобы определить видимую поверхность. Ближайшая поверхность, пересекаемая лучом, была видимой. Этот нерекурсивный алгоритм рендеринга, основанный на трассировке лучей, сегодня называется « ray casting ». Затем его алгоритм трассировал вторичные лучи к источнику света от каждой затеняемой точки, чтобы определить, находится ли точка в тени или нет.

Позже, в 1971 году, Голдштейн и Нагель из MAGI (Mathematical Applications Group, Inc.) [9] опубликовали «3-D Visual Simulation», в которой трассировка лучей использовалась для создания затененных изображений твердых тел. В найденной точке пересечения лучей с поверхностью они вычисляли нормаль к поверхности и, зная положение источника света, вычисляли яркость пикселя на экране. В их публикации описывается короткий (30-секундный) фильм, «сделанный с использованием дисплейного оборудования Мэрилендского университета, оснащенного 16-миллиметровой камерой. Фильм показывал вертолет и простую огневую точку на уровне земли. Вертолет был запрограммирован на выполнение серии маневров, включая повороты, взлеты и посадки и т. д., пока в конечном итоге не будет сбит и не разобьется». Использовался компьютер CDC 6600. MAGI создала анимационное видео под названием MAGI/SynthaVision Sampler в 1974 году . [10]

Книга-перевертыш, созданная в 1976 году в Калтехе

Еще один ранний случай ray casting произошел в 1976 году, когда Скотт Рот создал анимацию перекидной книги на курсе компьютерной графики Боба Спроулла в Калтехе . Отсканированные страницы показаны в виде видео справа. Компьютерная программа Рота отмечала граничную точку в пиксельной позиции, если луч пересекал ограниченную плоскость, отличную от своих соседей. Конечно, луч мог пересекать несколько плоскостей в пространстве, но только точка поверхности, ближайшая к камере, отмечалась как видимая. Платформой была DEC PDP-10 , дисплей Tektronix с запоминающей трубкой и принтер, который создавал изображение дисплея на рулонной термобумаге. Рот расширил структуру, ввел термин ray casting в контексте компьютерной графики и твердотельного моделирования , и в 1982 году опубликовал свою работу, находясь в GM Research Labs. [11]

Тернер Уиттед был первым, кто продемонстрировал рекурсивную трассировку лучей для зеркального отражения и для преломления через полупрозрачные объекты с углом, определяемым показателем преломления твердого тела, и использовал трассировку лучей для сглаживания . [12] Уиттед также продемонстрировал тени с трассировкой лучей. Он создал фильм с рекурсивной трассировкой лучей под названием The Compleat Angler [13] в 1979 году, будучи инженером в Bell Labs. Глубоко рекурсивный алгоритм трассировки лучей Уиттеда переосмыслил рендеринг, превратив его из вопроса определения видимости поверхности в вопрос переноса света. Его статья вдохновила на ряд последующих работ других, которые включали трассировку лучей распределения и, наконец, несмещенную трассировку пути , которая обеспечивает структуру уравнения рендеринга , которая позволила компьютерным изображениям быть верными реальности.

В течение десятилетий глобальное освещение в крупных фильмах с использованием компьютерных изображений аппроксимировалось дополнительными источниками света. Рендеринг на основе трассировки лучей в конечном итоге изменил это, сделав возможным физически обоснованный перенос света. Ранние художественные фильмы, полностью визуализированные с использованием трассировки пути, включают « Дом-монстр» (2006), «Облачно, возможны осадки в виде фрикаделек» (2009), [14] и «Университет монстров» (2013). [15]

Обзор алгоритма

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

Оптическая трассировка лучей описывает метод создания визуальных изображений, созданных в трехмерных средах компьютерной графики, с большей фотореалистичностью, чем методы ray casting или scanline rendering . Он работает путем трассировки пути от воображаемого глаза через каждый пиксель на виртуальном экране и вычисления цвета видимого через него объекта.

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

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

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

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

Рассчитать лучи для прямоугольного окна просмотра

На входе имеем (при расчетах используем векторную нормализацию и векторное произведение ):

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

Предварительные вычисления: найдем и нормализуем вектор и векторы , которые параллельны окну просмотра (все изображены на рисунке выше)

обратите внимание, что область просмотра находится в центре , далее мы вычисляем размеры области просмотра, деленные на 2, включая обратное соотношение сторон

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

Расчеты: обратите внимание и луч так

Подробное описание компьютерного алгоритма трассировки лучей и его генезиса

Что происходит в природе (упрощенно)

В природе источник света испускает луч света, который в конечном итоге достигает поверхности, которая прерывает его движение. Можно представить этот «луч» как поток фотонов, движущихся по одному и тому же пути. В идеальном вакууме этот луч будет прямой линией (игнорируя релятивистские эффекты ). С этим световым лучом может произойти любая комбинация из четырех вещей: поглощение , отражение , преломление и флуоресценция . Поверхность может поглотить часть светового луча, что приведет к потере интенсивности отраженного и/или преломленного света. Она также может отразить весь или часть светового луча в одном или нескольких направлениях. Если поверхность обладает какими-либо прозрачными или полупрозрачными свойствами, она преломляет часть светового луча в себя в другом направлении, поглощая при этом часть (или весь) спектра ( и, возможно, изменяя цвет). Реже поверхность может поглощать некоторую часть света и флуоресцентно переизлучать свет с более длинной длиной волны в случайном направлении, хотя это случается достаточно редко, чтобы это можно было не учитывать в большинстве приложений рендеринга. Между поглощением, отражением, преломлением и флуоресценцией должен быть учтен весь входящий свет, и не более. Поверхность не может, например, отражать 66% входящего светового луча и преломлять 50%, поскольку эти два показателя в сумме составят 116%. Отсюда отраженные и/или преломленные лучи могут попадать на другие поверхности, где их поглощающие, преломляющие, отражающие и флуоресцентные свойства снова влияют на ход входящих лучей. Некоторые из этих лучей движутся таким образом, что попадают в наш глаз, заставляя нас видеть сцену и, таким образом, вносить вклад в окончательное визуализированное изображение.

Алгоритм рей-кастинг

Идея, лежащая в основе ray casting, предшественника рекурсивной трассировки лучей, заключается в трассировке лучей из глаза, по одному на пиксель, и поиске ближайшего объекта, блокирующего путь этого луча. Представьте себе изображение как экранную дверь, где каждый квадрат на экране является пикселем. Это объект, который глаз видит через этот пиксель. Используя свойства материала и эффект освещения в сцене, этот алгоритм может определить затенение этого объекта. Упрощающее предположение заключается в том, что если поверхность обращена к свету, свет достигнет этой поверхности и не будет заблокирован или в тени. Затенение поверхности вычисляется с использованием традиционных моделей затенения трехмерной компьютерной графики. Одним из важных преимуществ, предлагаемых ray casting по сравнению со старыми алгоритмами сканлайна, была его способность легко работать с неплоскими поверхностями и твердыми телами, такими как конусы и сферы . Если математическая поверхность может быть пересечена лучом, ее можно визуализировать с помощью ray casting. Сложные объекты могут быть созданы с использованием методов твердотельного моделирования и легко визуализироваться.

Алгоритм объемного луча

В методе объемного луча каждый луч трассируется так, чтобы цвет и/или плотность могли быть отобраны вдоль луча, а затем объединены в конечный цвет пикселя. Это часто используется, когда объекты не могут быть легко представлены явными поверхностями (такими как треугольники), например, при рендеринге облаков или 3D-медицинских сканов.

Визуализация алгоритма марширования лучей SDF

Алгоритм марширования лучей SDF

В SDF-прохождении лучей или трассировке сферы [16] каждый луч прослеживается в несколько шагов для аппроксимации точки пересечения между лучом и поверхностью, определяемой функцией расстояния со знаком (SDF). SDF оценивается для каждой итерации, чтобы иметь возможность делать как можно большие шаги, не пропуская ни одной части поверхности. Порог используется для отмены дальнейшей итерации при достижении точки, которая достаточно близка к поверхности. Этот метод часто используется для 3-D фрактальной визуализации. [17]

Рекурсивный алгоритм трассировки лучей

Трассировка лучей позволяет создавать фотореалистичные изображения.
Помимо высокой степени реалистичности, трассировка лучей позволяет имитировать эффекты камеры за счет глубины резкости и формы апертуры (в данном случае шестиугольника ).
Количество отражений или отскоков, которые может сделать «луч», и то, как это влияет на него каждый раз, когда он сталкивается с поверхностью, контролируется настройками в программном обеспечении. На этом изображении каждому лучу было разрешено отражаться до 16 раз. Таким образом, в этих сферах можно увидеть множественные «отражения отражений». (Изображение создано с помощью Cobalt .)
Число преломлений, которые может сделать «луч», и то, как это влияет на него каждый раз, когда он сталкивается с поверхностью, которая позволяет пропускать свет , контролируется настройками в программном обеспечении. Здесь каждый луч был настроен на преломление или отражение («глубина») до 9 раз . Использовались отражения Френеля , и видны каустики . (Изображение создано с помощью V-Ray .)

Более ранние алгоритмы отслеживали лучи от глаза в сцену до тех пор, пока они не попадут на объект, но определяли цвет луча без рекурсивного отслеживания большего количества лучей. Рекурсивная трассировка лучей продолжает процесс. Когда луч попадает на поверхность, могут быть отброшены дополнительные лучи из-за отражения, преломления и тени.: [18]

Эти рекурсивные лучи добавляют больше реализма изображениям, полученным с помощью трассировки лучей.

Преимущества перед другими методами рендеринга

Популярность рендеринга на основе трассировки лучей обусловлена ​​его основой в реалистичном моделировании переноса света , по сравнению с другими методами рендеринга, такими как растеризация , которые больше фокусируются на реалистичном моделировании геометрии. Такие эффекты, как отражения и тени , которые трудно моделировать с помощью других алгоритмов, являются естественным результатом алгоритма трассировки лучей. Вычислительная независимость каждого луча делает трассировку лучей поддающейся базовому уровню распараллеливания , [ 20] но расхождение траекторий лучей делает высокую утилизацию при параллелизме довольно труднодостижимой на практике. [21]

Недостатки

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

Рекурсивная трассировка лучей в стиле Уиттеда обрабатывает взаимное отражение и оптические эффекты, такие как преломление, но в целом не является фотореалистичной . Улучшенный реализм достигается, когда уравнение рендеринга полностью оценено, поскольку уравнение концептуально включает в себя каждый физический эффект светового потока. Однако это неосуществимо, учитывая требуемые вычислительные ресурсы и ограничения на точность геометрического и материального моделирования. Трассировка пути — это алгоритм для оценки уравнения рендеринга, который, таким образом, обеспечивает более высокую точность моделирования реального освещения.

Обратное направление прохождения сцены лучами

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

В то время как прямое освещение обычно лучше всего сэмплируется с помощью трассировки лучей на основе глаза, некоторые косвенные эффекты могут выиграть от лучей, генерируемых источниками света. Каустики — это яркие узоры, вызванные фокусировкой света с широкой отражающей области на узкую область (почти) диффузной поверхности. Алгоритм, который направляет лучи непосредственно от источников света на отражающие объекты, отслеживая их пути к глазу, лучше сэмплирует это явление. Эта интеграция лучей на основе глаза и света часто выражается как двунаправленная трассировка пути, в которой пути отслеживаются как от глаза, так и от источников света, а затем пути соединяются соединительным лучом через некоторое время. [22] [23]

Картирование фотонов — это еще один метод, который использует как световую, так и глазную трассировку лучей; на начальном этапе энергичные фотоны трассируются вдоль лучей от источника света, чтобы вычислить оценку потока излучения как функции трехмерного пространства (сама одноименная карта фотонов). На последующем этапе лучи трассируются от глаза в сцену для определения видимых поверхностей, а карта фотонов используется для оценки освещенности в точках видимой поверхности. [24] [25] Преимущество картирования фотонов по сравнению с двунаправленной трассировкой пути заключается в возможности достижения значительного повторного использования фотонов, что сокращает вычисления за счет статистического смещения.

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

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

Справа находится изображение, показывающее простой пример пути лучей, рекурсивно сгенерированных от камеры (или глаза) к источнику света с использованием вышеуказанного алгоритма. Диффузная поверхность отражает свет во всех направлениях.

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

Пример

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

В векторной записи уравнение сферы с центром и радиусом имеет вид

Любая точка на луче, начинающемся с точки с направлением (здесь — единичный вектор ), может быть записана как

где — расстояние между и . В нашей задаче мы знаем , , (например, положение источника света) и , и нам нужно найти . Поэтому мы заменяем :

Пусть для простоты; тогда

Знание того, что 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. [27]

Ограничивающие объемы

Заключение групп объектов в наборы иерархических ограничивающих объемов уменьшает объем вычислений, необходимых для трассировки лучей. Сначала отбрасываемый луч проверяется на пересечение с ограничивающим объемом , а затем, если пересечение есть, объем рекурсивно делится до тех пор, пока луч не попадет в объект. Лучший тип ограничивающего объема будет определяться формой базового объекта или объектов. Например, если объекты длинные и тонкие, то сфера будет закрывать в основном пустое пространство по сравнению с коробкой. Коробки также легче генерировать иерархические ограничивающие объемы.

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

Кей и Каджия приводят список желаемых свойств для иерархических ограничивающих объемов:

Интерактивная трассировка лучей

Первой реализацией интерактивного трассировщика лучей стала система компьютерной графики LINKS-1, созданная в 1982 году в Школе инженерии Университета Осаки профессорами Омура Коити, Сиракавой Исао и Каватой Тору с 50 студентами. [ требуется ссылка ] Это была вычислительная система с массивной параллельной обработкой данных с 514 микропроцессорами (257 Zilog Z8001 и 257 iAPX 86 ), используемая для трехмерной компьютерной графики с высокоскоростной трассировкой лучей. Согласно Японскому обществу обработки информации : «Основой трехмерного рендеринга изображений является расчет яркости каждого пикселя, образующего визуализированную поверхность, с заданной точки обзора, источника света и положения объекта. Система LINKS-1 была разработана для реализации методологии рендеринга изображений, в которой каждый пиксель может параллельно обрабатываться независимо с использованием трассировки лучей. Разработав новую программную методологию специально для высокоскоростного рендеринга изображений, LINKS-1 смогла быстро рендерить высокореалистичные изображения». Она использовалась для создания раннего трехмерного планетарного видео небес, полностью созданного с помощью компьютерной графики. Видео было представлено в павильоне Fujitsu на Международной выставке 1985 года в Цукубе ». [28] Это была вторая система, сделавшая это после Evans & Sutherland Digistar в 1982 году. Разработчики заявили, что LINKS-1 является самым мощным компьютером в мире в 1984 году. [29]

Следующий интерактивный трассировщик лучей, и первый, который был отмечен как «в реальном времени», был отмечен на конференции по компьютерной графике SIGGRAPH 2005 года как инструменты REMRT/RT, разработанные в 1986 году Майком Мууссом для системы твердотельного моделирования BRL-CAD . Первоначально опубликованный в 1987 году на USENIX , трассировщик лучей BRL-CAD был ранней реализацией параллельной сетевой распределенной системы трассировки лучей, которая достигала нескольких кадров в секунду в производительности рендеринга. [30] Эта производительность была достигнута с помощью высокооптимизированного, но независимого от платформы движка трассировки лучей LIBRT в BRL-CAD и с помощью использования твердотельной неявной геометрии CSG на нескольких параллельных машинах с общей памятью через стандартную сеть. Трассировщик лучей BRL-CAD, включая инструменты REMRT/RT, по-прежнему доступен и разрабатывается сегодня как программное обеспечение с открытым исходным кодом . [31]

С тех пор были предприняты значительные усилия и исследования по внедрению трассировки лучей в реальном времени для различных целей на автономных конфигурациях настольных компьютеров. Эти цели включают интерактивные 3-D графические приложения, такие как демосцены , компьютерные и видеоигры и рендеринг изображений. Некоторые программные 3-D движки реального времени, основанные на трассировке лучей, были разработаны программистами-любителями демо с конца 1990-х годов. [32]

В 1999 году команда из Университета Юты под руководством Стивена Паркера продемонстрировала интерактивную трассировку лучей вживую на Симпозиуме по интерактивной 3D-графике 1999 года. Они визуализировали модель из 35 миллионов сфер с разрешением 512 на 512 пикселей, работая примерно со скоростью 15 кадров в секунду на 60 процессорах. [33]

Проект Open RT включал в себя высокооптимизированное программное ядро ​​для трассировки лучей вместе с API, подобным OpenGL , чтобы предложить альтернативу текущему подходу, основанному на растеризации, для интерактивной 3D-графики. Аппаратное обеспечение для трассировки лучей , такое как экспериментальный Ray Processing Unit, разработанный Свеном Вупом в Саарском университете , было разработано для ускорения некоторых вычислительно интенсивных операций трассировки лучей.

Quake Wars: трассировка лучей

Идея о том, что видеоигры могут трассировать свою графику в реальном времени, привлекла внимание СМИ в конце 2000-х годов. В то время исследователь по имени Даниэль Поль под руководством профессора графики Филиппа Слусаллека и в сотрудничестве с Университетом Эрлангена и Саарландским университетом в Германии оснастил Quake III и Quake IV движком , который он сам запрограммировал, и который Саарландский университет затем продемонстрировал на выставке CeBIT 2007. [34] Intel , покровитель Саара, был настолько впечатлен, что нанял Поля и приступил к исследовательской программе, посвященной трассировке лучей в графике, которую он считал оправданием увеличения числа ядер своих процессоров. [35] : 99–100  [36] 12 июня 2008 года Intel продемонстрировала специальную версию Enemy Territory: Quake Wars под названием Quake Wars: Ray Traced , использующую трассировку лучей для рендеринга, работающую в базовом разрешении HD (720p). ETQW работал со скоростью 14–29 кадров в секунду на 16-ядерной (4 сокета, 4 ядра) системе Xeon Tigerton, работающей на частоте 2,93 ГГц. [37]

На SIGGRAPH 2009 Nvidia анонсировала OptiX , бесплатный API для трассировки лучей в реальном времени на графических процессорах Nvidia. API предоставляет семь программируемых точек входа в конвейере трассировки лучей, позволяя использовать пользовательские камеры, пересечения примитивов лучей, шейдеры, затенение и т. д. Эта гибкость позволяет использовать двунаправленную трассировку пути, перенос света Metropolis и многие другие алгоритмы рендеринга, которые невозможно реализовать с помощью хвостовой рекурсии. [38] Рендереры на основе OptiX используются в Autodesk Arnold, Adobe AfterEffects , Bunkspeed Shot, Autodesk Maya , 3ds max и многих других рендерерах.

В 2014 году в демоверсии видеоигры The Tomorrow Children для PlayStation 4 , разработанной Q-Games и Japan Studio , были продемонстрированы новые методы освещения, разработанные Q-Games, в частности каскадная воксельная трассировка конусных лучей, которая имитирует освещение в реальном времени и использует более реалистичные отражения, а не отражения в пространстве экрана . [39]

Nvidia представила свои графические процессоры GeForce RTX и Quadro RTX в сентябре 2018 года, основанные на архитектуре Turing , которая позволяет выполнять аппаратно-ускоренную трассировку лучей. Аппаратное обеспечение Nvidia использует отдельный функциональный блок, публично называемый «ядро RT». Этот блок в некоторой степени сопоставим с текстурным блоком по размеру, задержке и интерфейсу с ядром процессора. Блок включает обход BVH , декомпрессию сжатых узлов BVH, тестирование пересечения лучей AABB и тестирование пересечения лучей треугольников. [40] GeForce RTX в виде моделей 2080 и 2080 Ti стала первым ориентированным на потребителя брендом видеокарт, который может выполнять трассировку лучей в реальном времени, [41] а в ноябре 2018 года Battlefield V от Electronic Arts стала первой игрой, которая использовала преимущества своих возможностей трассировки лучей, которые она достигает с помощью нового API Microsoft, DirectX Raytracing . [42] AMD, которая уже предлагала интерактивную трассировку лучей поверх OpenCL через свой Radeon ProRender , [43] [44] представила в октябре 2020 года серию Radeon RX 6000 , свои графические процессоры Navi второго поколения с поддержкой аппаратно-ускоренной трассировки лучей на онлайн-мероприятии. [45] [46] [47] [48] [49] С тех пор появились последующие игры, которые визуализируют свою графику такими средствами, что было приписано улучшениям в аппаратном обеспечении и усилиям по обеспечению большего количества API и игровых движков, совместимых с этой технологией. [50] Современные домашние игровые консоли реализуют специальные аппаратные компоненты трассировки лучей в своих графических процессорах для эффектов трассировки лучей в реальном времени, которые начались с консолей девятого поколения PlayStation 5 , Xbox Series X и Series S. [ 51] [52 ] [53] [54] [55]

4 ноября 2021 года компания Imagination Technologies анонсировала свой графический процессор IMG CXT с аппаратным ускорением трассировки лучей. [56] [57] 18 января 2022 года компания Samsung анонсировала свой чипсет Exynos 2200 AP с аппаратным ускорением трассировки лучей. [58] 28 июня 2022 года компания Arm анонсировала свой Immortalis-G715 с аппаратным ускорением трассировки лучей. [59] 16 ноября 2022 года компания Qualcomm анонсировала свой процессор Snapdragon 8 Gen 2 с аппаратным ускорением трассировки лучей. [60] [61] 12 сентября 2023 года компания Apple анонсировала свой Apple A17 с аппаратным ускорением трассировки лучей. [62]

Сложность вычислений

Различные результаты по сложности были доказаны для определенных формулировок проблемы трассировки лучей. В частности, если версия решения проблемы трассировки лучей определяется следующим образом [63] – заданы начальное положение и направление светового луча и некоторая фиксированная точка, достигает ли луч в конечном итоге этой точки, то указанная статья доказывает следующие результаты:

Архитектура программного обеспечения

Промежуточное ПО

API

Смотрите также

Ссылки

  1. ^ Ширли, Питер (9 июля 2003 г.). Реалистичная трассировка лучей . AK Peters/CRC Press; 2-е издание. ISBN 978-1568814612.
  2. ^ «Спонсируемая статья: Изменение правил игры — экспериментальная облачная трассировка лучей». www.gamasutra.com . Получено 18 марта 2021 г. .
  3. ^ "Disney объясняет, почему его 2D-анимация выглядит настолько реалистично". Engadget . Получено 18 марта 2021 г. .
  4. ^ «Следующие большие шаги в игровом звуковом дизайне». www.gamasutra.com . 28 января 2010 г. Получено 18 марта 2021 г.
  5. ^ Георг Райнер Хофманн (1990). «Кто изобрел трассировку лучей?». The Visual Computer . 6 (3): 120–124. doi :10.1007/BF01911003. S2CID  26348610..
  6. ^ Стив Люкинг (2013). «Дюрер, рисунок и цифровое мышление — Конференция FATE 2013». brian-curtis.com . Получено 13 августа 2020 г. .
  7. ^ Стив Люкинг. "Stephen J Luecking" . Получено 13 августа 2020 г.
  8. ^ Аппель, Артур (30 апреля 1968 г.). "Некоторые методы машинной визуализации тел с помощью затенения". Труды весенней совместной компьютерной конференции 30 апреля - 2 мая 1968 г. по теме - AFIPS '68 (весна) (PDF) . стр. 37–45. doi :10.1145/1468075.1468082. S2CID  207171023.
  9. ^ Голдштейн, Роберт; Нагель, Роджер (январь 1971), «Трехмерное визуальное моделирование», Simulation , 16 (1): 25–31, doi :10.1177/003754977101600104, S2CID  122824395
  10. ^ Syntha Vision Sampler. 1974 – через интернет-архив .
  11. ^ Рот, Скотт Д. (февраль 1982 г.), «Лучевое литье для моделирования твердых тел», Компьютерная графика и обработка изображений , 18 (2): 109–144, doi :10.1016/0146-664X(82)90169-1
  12. ^ Уиттед Т. (1979) Улучшенная модель освещения для затененного дисплея . Труды 6-й ежегодной конференции по компьютерной графике и интерактивным технологиям
  13. The Compleat Angler. Bell Laboratories. 1978 – через интернет-архив .
  14. ^ "Пища для смеха". Мир компьютерной графики .
  15. Ms (28 мая 2013 г.). «Эта анимированная жизнь: Pixar's Lightspeed привносит новый свет в Университет монстров». Эта анимированная жизнь . Получено 26 мая 2020 г.
  16. ^ Харт, Джон К. (июнь 1995 г.), «Трассировка сферы: геометрический метод сглаженной трассировки лучей неявных поверхностей» (PDF) , The Visual Computer
  17. ^ Харт, Джон К.; Сэндин, Дэниел Дж.; Кауффман, Луис Х. (июль 1989 г.), «Трассировка лучей детерминированных трехмерных фракталов» (PDF) , Компьютерная графика , 23 (3): 289–296, doi :10.1145/74334.74363
  18. ^ Томаш Никодим (июнь 2010 г.). "Алгоритм трассировки лучей для интерактивных приложений" (PDF) . Чешский технический университет, FEE . Архивировано из оригинала (PDF) 3 марта 2016 г.
  19. ^ Уиттед, Т. (1979). "Улучшенная модель освещения для затененного дисплея". Труды 6-й ежегодной конференции по компьютерной графике и интерактивным технологиям . CiteSeerX 10.1.1.156.1534 . ISBN  0-89791-004-4.
  20. ^ Чалмерс, А.; Дэвис, Т.; Рейнхард, Э. (2002). Практический параллельный рендеринг . AK Peters. ISBN 1-56881-179-9.
  21. ^ Aila, Timo; Laine, Samulii (2009). «Понимание эффективности обхода лучей на графических процессорах». HPG '09: Труды конференции по высокопроизводительной графике 2009. стр. 145–149. doi :10.1145/1572769.1572792. ISBN 9781605586038. S2CID  15392840.
  22. ^ Эрик П. Лафортюн и Ив Д. Виллемс (декабрь 1993 г.). «Двунаправленная трассировка пути». Труды Compugraphics '93 : 145–153.
  23. ^ Петер Дорнбах (1998). "Реализация алгоритма двунаправленной трассировки лучей" (PDF) . Получено 11 июня 2008 г. .
  24. ^ Глобальное освещение с использованием фотонных карт. Архивировано 08.08.2008 на Wayback Machine.
  25. ^ «Фотонное картирование — Зак Уотерс».
  26. ^ Вич, Эрик; Гибас, Леонидас Дж. (1997). «Metropolis Light Transport». SIGGRAPH '97: Труды 24-й ежегодной конференции по компьютерной графике и интерактивным технологиям . стр. 65–76. doi :10.1145/258734.258775. ISBN 0897918967. S2CID  1832504.
  27. ^ Холл, Рой А.; Гринберг, Дональд П. (ноябрь 1983 г.). «Тестовый стенд для синтеза реалистичных изображений». IEEE Computer Graphics and Applications . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . doi :10.1109/MCG.1983.263292. S2CID  9594422. 
  28. ^ "【Университет Осаки】 Система компьютерной графики LINKS-1". Музей компьютеров IPSJ . Японское общество обработки информации . Получено 15 ноября 2018 г.
  29. ^ Дефанти, Томас А. (1984). Достижения в области компьютеров. Том 23 (PDF) . Academic Press . стр. 121. ISBN 0-12-012123-9.
  30. См. Труды 4-го семинара по компьютерной графике, Кембридж, Массачусетс, США, октябрь 1987 г. Usenix Association, 1987. стр. 86–98.
  31. ^ "О BRL-CAD" . Получено 18 января 2019 г. .
  32. ^ Пьеро Фоскари. "The Realtime Raytracing Realm". ACM Transactions on Graphics . Получено 17 сентября 2007 г.
  33. ^ Паркер, Стивен; Мартин, Уильям (26 апреля 1999 г.). «Интерактивная трассировка лучей». Труды симпозиума 1999 г. по интерактивной 3-D графике . I3D '99. Том 5. С. 119–126. CiteSeerX 10.1.1.6.8426 . doi :10.1145/300523.300537. ISBN  1581130821. S2CID  4522715 . Получено 30 октября 2019 г. .
  34. Марк Уорд (16 марта 2007 г.). «Лучи освещают реалистичную графику». BBC News . Получено 17 сентября 2007 г.
  35. ^ Педди, Джон (2019). Трассировка лучей: инструмент для всех. Springer Nature Switzerland . ISBN 978-3-030-17490-3. Получено 2 ноября 2022 г. .
  36. ^ Abi-Chahla, Fedy (22 июля 2009 г.). «Когда трассировка лучей заменит растеризацию?». Tom's Hardware . Архивировано из оригинала 3 ноября 2022 г. Получено 4 ноября 2022 г.
  37. ^ Valich, Theo (12 июня 2008 г.). "Intel преобразует ET: Quake Wars в трассировку лучей". TG Daily. Архивировано из оригинала 2 октября 2008 г. Получено 16 июня 2008 г.
  38. Nvidia (18 октября 2009 г.). "Nvidia OptiX". Nvidia . Получено 6 ноября 2009 г. .
  39. Катберт, Дилан (24 октября 2015 г.). «Создание прекрасной, новаторской визуальной составляющей The Tomorrow Children на PS4». Блог PlayStation . Получено 7 декабря 2015 г.
  40. ^ Килгарифф, Эмметт; Мортон, Генри; Стэм, Ник; Белл, Брэндон (14 сентября 2018 г.). «NVIDIA Turing Architecture In-Depth». Nvidia Developer . Архивировано из оригинала 13 ноября 2022 г. Получено 13 ноября 2022 г.
  41. ^ Такахаши, Дин (20 августа 2018 г.). «Nvidia представляет графические чипы GeForce RTX для игр с трассировкой лучей в реальном времени». VentureBeat . Архивировано из оригинала 13 ноября 2022 г. Получено 13 ноября 2022 г.
  42. ^ Чакос, Брэд (14 ноября 2018 г.). «RTX включен! Battlefield V становится первой игрой с поддержкой трассировки лучей в реальном времени DXR». PCWorld . Архивировано из оригинала 13 ноября 2022 г. . Получено 13 ноября 2018 г. .
  43. ^ "Трассировка лучей в реальном времени с помощью Radeon ProRender". GPUOpen . 20 марта 2018 г. Архивировано из оригинала 13 ноября 2022 г. Получено 13 ноября 2022 г.
  44. ^ Харада, Такахиро (23 ноября 2020 г.). «Аппаратно-ускоренная трассировка лучей в AMD Radeon™ ProRender 2.0». GPUOpen . Архивировано из оригинала 13 ноября 2022 г. Получено 13 ноября 2022 г.
  45. ^ Гарреффа, Энтони (9 сентября 2020 г.). «AMD представит видеокарты следующего поколения Big Navi RDNA 2 28 октября». TweakTown . Получено 9 сентября 2020 г. .
  46. ^ Лайлс, Тейлор (9 сентября 2020 г.). «Процессоры AMD Zen 3 следующего поколения и графический процессор Radeon RX 6000 'Big Navi' будут представлены в следующем месяце». The Verge . Получено 10 сентября 2020 г. .
  47. ^ "AMD Teases Radeon RX 6000 Card Performance Numbers: Aiming For 3080?". anandtech.com . AnandTech . 8 октября 2020 г. . Получено 25 октября 2020 г. .
  48. ^ "AMD анонсирует презентации Ryzen "Zen 3" и Radeon "RDNA2" в октябре: начинается новое путешествие". anandtech.com . AnandTech . 9 сентября 2020 г. . Получено 25 октября 2020 г. .
  49. ^ Джадд, Уилл (28 октября 2020 г.). «AMD представляет три видеокарты Radeon 6000 с трассировкой лучей и производительностью, превосходящей RTX». Eurogamer . Получено 28 октября 2020 г. .
  50. ^ Маррс, Адам; Ширли, Питер ; Уолд, Инго (2021). Ray Tracing Gems II: рендеринг в реальном времени следующего поколения с DXR, Vulkan и OptiX . Apress . С. 213–214, 791–792. hdl :20.500.12657/50334. ISBN 9781484271858.
  51. ^ Уоррен, Том (8 июня 2019 г.). «Microsoft намекает на Xbox следующего поколения „Scarlet“ в тизерах E3». The Verge . Получено 8 октября 2019 г. .
  52. ^ Хаим, Гартенберг (8 октября 2019 г.). «Sony подтверждает название PlayStation 5, дату выпуска в праздничные дни 2020 года». The Verge . Получено 8 октября 2019 г. .
  53. Уоррен, Том (24 февраля 2020 г.). «Microsoft раскрывает больше спецификаций Xbox Series X, подтверждает 12 терафлопс GPU». The Verge . Получено 25 февраля 2020 г. .
  54. ^ Уоррен, Том (9 сентября 2020 г.). «Microsoft раскрывает характеристики Xbox Series S, обещает в четыре раза большую вычислительную мощность, чем Xbox One». The Verge . Получено 9 сентября 2020 г. .
  55. ^ Вандервелл, Энди (4 января 2020 г.). «Разъяснение бурлящей мельницы слухов о Xbox Series X». Wired . Архивировано из оригинала 13 ноября 2022 г. Получено 13 ноября 2022 г.
  56. ^ 93digital (4 ноября 2021 г.). «Imagination запускает самый передовой графический процессор для трассировки лучей». Imagination . Получено 17 сентября 2023 г. .{{cite web}}: CS1 maint: numeric names: authors list (link)
  57. ^ "Трассировка лучей". Воображение . Получено 17 сентября 2023 г. .
  58. ^ "Samsung представляет революционный процессор Exynos 2200 с графическим процессором Xclipse на базе архитектуры AMD RDNA 2". news.samsung.com . Получено 17 сентября 2023 г. .
  59. ^ «Игровая производительность раскрыта с новыми графическими процессорами Arm — Анонсы — Блоги сообщества Arm — Сообщество Arm». community.arm.com . 28 июня 2022 г. . Получено 17 сентября 2023 г. .
  60. ^ «Snapdragon 8 Gen 2 определяет новый стандарт для премиальных смартфонов». www.qualcomm.com . Получено 17 сентября 2023 г. .
  61. ^ «Новый, Snapdragon 8 Gen 2: 8 необычных мобильных впечатлений, представлено». www.qualcomm.com . Получено 17 сентября 2023 г. .
  62. ^ Боншор, Райан Смит, Гэвин. «Прямой эфир мероприятия Apple 2023 Fall iPhone (начало в 10:00 по тихоокеанскому времени/17:00 по всемирному координированному времени)». www.anandtech.com . Получено 17 сентября 2023 г.{{cite web}}: CS1 maint: multiple names: authors list (link)
  63. ^ "Вычислимость и сложность трассировки лучей" (PDF) . CS.Duke.edu .

Внешние ссылки