stringtranslate.com

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

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

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

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

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

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

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

История

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

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

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

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

Раскладная книга, созданная в 1976 году в Калифорнийском технологическом институте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Расчеты: отметить и луч так

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

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

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

Алгоритм приведения лучей

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

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

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

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

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

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

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

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

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

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

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

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

Недостатки

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

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

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

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

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

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

Дополнительная проблема возникает, когда свет должен проходить через очень узкую апертуру, чтобы осветить сцену (представим затемненную комнату со слегка приоткрытой дверью, ведущей в ярко освещенную комнату), или сцену, в которой большинство точек не имеют прямой линии света. -вид на любой источник света (например, светильники, направленные на потолок, или торшеры ). В таких случаях только очень небольшое подмножество путей будет транспортировать энергию; Световой транспорт Метрополиса — это метод, который начинается со случайного поиска пространства путей, а когда энергетические пути найдены, повторно использует эту информацию, исследуя близлежащее пространство лучей. [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 году. самый мощный компьютер 1984 года. [29]

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

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

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

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

Трассировка лучей 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 года Electronic Arts ' Battlefield V стала первой игрой, воспользовавшейся возможностями трассировки лучей, которых она достигает с помощью нового 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 анонсировала свою SoC 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] – учитывая начальное положение и направление светового луча, а также некоторую фиксированную точку, достигает ли луч в конечном итоге этой точки, то в указанной статье доказываются следующие результаты:

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

Рекомендации

  1. Ширли, Питер (9 июля 2003 г.). Реалистичная трассировка лучей . АК Петерс/CRC Press; 2-е издание. ISBN 978-1568814612.
  2. ^ «Спонсируемая функция: Изменение игры — экспериментальная облачная трассировка лучей» . www.gamasutra.com . Проверено 18 марта 2021 г.
  3. ^ «Дисней объясняет, почему его 2D-анимация выглядит такой реалистичной» . Engadget . Проверено 18 марта 2021 г.
  4. ^ «Следующие большие шаги в звуковом дизайне игр» . www.gamasutra.com . 28 января 2010 года . Проверено 18 марта 2021 г.
  5. ^ Георг Райнер Хофманн (1990). «Кто изобрел трассировку лучей?». Визуальный компьютер . 6 (3): 120–124. дои : 10.1007/BF01911003. S2CID  26348610..
  6. ^ Стив Люкинг (2013). «Дюрер, рисунок и цифровое мышление - Конференция FATE 2013». Брайан-Кёртис.com . Проверено 13 августа 2020 г.
  7. ^ Стив Люкинг. «Стивен Джей Люкинг» . Проверено 13 августа 2020 г.
  8. Аппель, Артур (30 апреля 1968 г.). «Некоторые методы затенения машинной визуализации твердых тел». Материалы весенней совместной компьютерной конференции AFIPS '68 (весна) (PDF) , состоявшейся 30 апреля — 2 мая 1968 г. . стр. 37–45. дои : 10.1145/1468075.1468082. S2CID  207171023.
  9. ^ Гольдштейн, Роберт; Нагель, Роджер (январь 1971 г.), «Визуальное трехмерное моделирование», Simulation , 16 (1): 25–31, doi : 10.1177/003754977101600104, S2CID  122824395
  10. ^ Сэмплер Syntha Vision. 1974 — через Интернет-архив .
  11. ^ Рот, Скотт Д. (февраль 1982 г.), «Ray Casting для моделирования твердых тел», Компьютерная графика и обработка изображений , 18 (2): 109–144, doi : 10.1016/0146-664X(82)90169-1
  12. ^ Уиттед Т. (1979) Улучшенная модель освещения для затененного дисплея . Материалы 6-й ежегодной конференции «Компьютерная графика и интерактивные технологии».
  13. ^ Настоящий рыболов. Лаборатории Белла. 1978 — через Интернет-архив .
  14. ^ «Еда для смеха». Мир компьютерной графики .
  15. ^ Г-жа (28 мая 2013 г.). «Эта анимированная жизнь: скорость света от Pixar проливает новый свет на Университет монстров». Эта анимированная жизнь . Проверено 26 мая 2020 г.
  16. ^ Харт, Джон К. (июнь 1995 г.), «Трассировка сфер: геометрический метод трассировки лучей со сглаживанием неявных поверхностей» (PDF) , The Visual Computer
  17. ^ Харт, Джон К.; Сандин, Дэниел Дж.; Кауфман, Луи Х. (июль 1989 г.), «Детерминированные трехмерные фракталы трассировки лучей» (PDF) , Компьютерная графика , 23 (3): 289–296, doi : 10.1145/74334.74363
  18. ^ Томас Никодим (июнь 2010 г.). «Алгоритм трассировки лучей для интерактивных приложений» (PDF) . Чешский технический университет, ФЭУ . Архивировано из оригинала (PDF) 3 марта 2016 г.
  19. ^ Уиттед, Т. (1979). «Улучшенная модель освещения для затененного дисплея». Материалы 6-й ежегодной конференции «Компьютерная графика и интерактивные технологии» . CiteSeerX 10.1.1.156.1534 . ISBN  0-89791-004-4.
  20. ^ Чалмерс, А.; Дэвис, Т.; Рейнхард, Э. (2002). Практический параллельный рендеринг . АК Петерс. ISBN 1-56881-179-9.
  21. ^ Айла, Тимо; Лайне, Самулий (2009). «Понимание эффективности прохождения лучей на графических процессорах». HPG '09: Материалы конференции по высокопроизводительной графике 2009 . стр. 145–149. дои : 10.1145/1572769.1572792. ISBN 9781605586038. S2CID  15392840.
  22. ^ Эрик П. Лафортюн и Ив Д. Виллемс (декабрь 1993 г.). «Двунаправленное отслеживание пути». Proceedings of Compugraphics '93 : 145–153.
  23. ^ Петер Дорнбах (1998). «Реализация алгоритма двунаправленной трассировки лучей» (PDF) . Проверено 11 июня 2008 г.
  24. ^ Глобальное освещение с использованием фотонных карт. Архивировано 8 августа 2008 г. в Wayback Machine.
  25. ^ «Фотонное картирование - Зак Уотерс».
  26. ^ Вич, Эрик; Гибас, Леонидас Дж. (1997). «Метрополис Легкий Транспорт». SIGGRAPH '97: Материалы 24-й ежегодной конференции по компьютерной графике и интерактивным методам . стр. 65–76. дои : 10.1145/258734.258775. ISBN 0897918967. S2CID  1832504.
  27. ^ Холл, Рой А.; Гринберг, Дональд П. (ноябрь 1983 г.). «Испытательный стенд для синтеза реалистичных изображений». IEEE Компьютерная графика и приложения . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . дои : 10.1109/MCG.1983.263292. S2CID  9594422. 
  28. ^ «【Университет Осаки 】 Система компьютерной графики LINKS-1» . Компьютерный музей IPSJ . Общество обработки информации Японии . Проверено 15 ноября 2018 г.
  29. ^ Дефанти, Томас А. (1984). Достижения компьютеров. Том 23 (PDF) . Академическая пресса . п. 121. ИСБН 0-12-012123-9.
  30. ^ См. материалы 4-го семинара по компьютерной графике, Кембридж, Массачусетс, США, октябрь 1987 г. Usenix Association, 1987. стр. 86–98.
  31. ^ «О BRL-CAD» . Проверено 18 января 2019 г.
  32. ^ Пьеро Фоскари. «Сфера трассировки лучей в реальном времени». Транзакции ACM с графикой . Проверено 17 сентября 2007 г.
  33. ^ Паркер, Стивен; Мартин, Уильям (26 апреля 1999 г.). «Интерактивная трассировка лучей». Материалы симпозиума 1999 года по интерактивной трехмерной графике . I3D '99. Том. 5. С. 119–126. CiteSeerX 10.1.1.6.8426 . дои : 10.1145/300523.300537. ISBN  1581130821. S2CID  4522715 . Проверено 30 октября 2019 г.
  34. ^ Марк Уорд (16 марта 2007 г.). «Лучи освещают реалистичную графику». Новости BBC . Проверено 17 сентября 2007 г.
  35. ^ Педди, Джон (2019). Трассировка лучей: инструмент для всех. Шпрингер Природа Швейцария . ISBN 978-3-030-17490-3. Проверено 2 ноября 2022 г.
  36. Аби-Чахла, Феди (22 июля 2009 г.). «Когда трассировка лучей заменит растеризацию?». Аппаратное обеспечение Тома . Архивировано из оригинала 3 ноября 2022 года . Проверено 4 ноября 2022 г.
  37. ^ Валич, Тео (12 июня 2008 г.). «Intel преобразует ET: Quake Wars в трассировку лучей». ТГ Дейли. Архивировано из оригинала 2 октября 2008 года . Проверено 16 июня 2008 г.
  38. ^ Nvidia (18 октября 2009 г.). «Нвидиа Оптикс». Нвидия . Проверено 6 ноября 2009 г.
  39. Катберт, Дилан (24 октября 2015 г.). «Создание красивой, революционной графики The Tomorrow Children на PS4». Блог PlayStation . Проверено 7 декабря 2015 г.
  40. ^ Килгарифф, Эммет; Мортон, Генри; Стэм, Ник; Белл, Брэндон (14 сентября 2018 г.). «Подробное описание архитектуры NVIDIA Turing». Разработчик Нвидиа . Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2022 г.
  41. Такахаши, декан (20 августа 2018 г.). «Nvidia представляет графические чипы GeForce RTX для игр с трассировкой лучей в реальном времени» . ВенчурБит . Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2022 г.
  42. Чакос, Брэд (14 ноября 2018 г.). «RTX включен! Battlefield V становится первой игрой, поддерживающей трассировку лучей в реальном времени DXR». ПКМир . Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2018 г.
  43. ^ «Трассировка лучей в реальном времени с помощью Radeon ProRender» . GPUОткрыть . 20 марта 2018 года. Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2022 г.
  44. Харада, Такахиро (23 ноября 2020 г.). «Аппаратное ускорение трассировки лучей в AMD Radeon™ ProRender 2.0». GPUОткрыть . Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2022 г.
  45. Гарреффа, Энтони (9 сентября 2020 г.). «28 октября AMD представит видеокарты Big Navi RDNA 2 следующего поколения» . ТвикТаун . Проверено 9 сентября 2020 г.
  46. Лайлс, Тейлор (9 сентября 2020 г.). «Процессоры AMD следующего поколения Zen 3 и графический процессор Radeon RX 6000 Big Navi будут представлены в следующем месяце». Грань . Проверено 10 сентября 2020 г.
  47. ^ «AMD сообщает показатели производительности карты Radeon RX 6000: нацелены на 3080?» anandtech.com . АнандТех . 8 октября 2020 г. Проверено 25 октября 2020 г.
  48. ^ «AMD объявляет о презентациях Ryzen «Zen 3» и Radeon «RDNA2» в октябре: новое путешествие начинается» . anandtech.com . АнандТех . 9 сентября 2020 г. . Проверено 25 октября 2020 г.
  49. Джадд, Уилл (28 октября 2020 г.). «AMD представляет три видеокарты Radeon 6000 с трассировкой лучей и производительностью, превосходящей RTX». Еврогеймер . Проверено 28 октября 2020 г.
  50. ^ Маррс, Адам; Ширли, Питер ; Вальд, Инго (2021). Ray Tracing Gems II: рендеринг нового поколения в реальном времени с помощью DXR, Vulkan и OptiX . Апресс . стр. 213–214, 791–792. hdl : 20.500.12657/50334. ISBN 9781484271858.
  51. Рианна Уоррен, Том (8 июня 2019 г.). «Microsoft намекает на Xbox следующего поколения Scarlet в тизерах E3» . Грань . Проверено 8 октября 2019 г.
  52. Хаим, Гартенберг (8 октября 2019 г.). «Sony подтверждает название PlayStation 5 и дату выпуска в 2020 году» . Грань . Проверено 8 октября 2019 г.
  53. Уоррен, Том (24 февраля 2020 г.). «Microsoft раскрывает дополнительные характеристики Xbox Series X и подтверждает производительность графического процессора 12 терафлопс». Грань . Проверено 25 февраля 2020 г.
  54. Уоррен, Том (9 сентября 2020 г.). «Microsoft раскрывает характеристики Xbox Series S и обещает в четыре раза большую вычислительную мощность, чем Xbox One». Грань . Проверено 9 сентября 2020 г.
  55. Вандервелл, Энди (4 января 2020 г.). «Разбираемся в безудержной мельнице слухов о Xbox Series X». Проводной . Архивировано из оригинала 13 ноября 2022 года . Проверено 13 ноября 2022 г.
  56. 93digital (4 ноября 2021 г.). «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» . сообщество.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 iPhone 2023 (начинается в 10:00 по тихоокеанскому времени / 17:00 по всемирному координированному времени)» . www.anandtech.com . Проверено 17 сентября 2023 г.{{cite web}}: CS1 maint: multiple names: authors list (link)
  63. ^ «Вычислимость и сложность трассировки лучей» (PDF) . CS.Duke.edu .

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