stringtranslate.com

Рэй марширует

Ray marching — это класс методов рендеринга для 3D-компьютерной графики , где лучи проходят итеративно, эффективно разделяя каждый луч на более мелкие сегменты луча, выбирая некоторую функцию на каждом шаге. Например, при объемном сканировании лучей функция будет получать доступ к точкам данных из 3D-скана. При трассировке сферы функция оценивает расстояние до следующего шага. Ray marching также используется в физических симуляциях в качестве альтернативы трассировке лучей , где решаются аналитические решения траекторий световых или звуковых волн. Ray marching для компьютерной графики часто использует преимущества SDF для определения максимального безопасного размера шага, хотя это менее распространено в физических симуляциях, аналогичный метод адаптивного шага может быть достигнут с помощью адаптивных методов Рунге-Кутты .

Дальномерный лучевой марш

Трассировка сферы

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

При трассировке сферы [ 1] или прохождении лучей с помощью сферы точка пересечения аппроксимируется между лучом и поверхностью, определяемой функцией расстояния со знаком (SDF). SDF оценивается для каждой итерации, чтобы иметь возможность делать как можно большие шаги, не пропуская ни одной части поверхности. Порог используется для отмены дальнейшей итерации, когда достигнута точка, достаточно близкая к поверхности. Поскольку мощное аппаратное обеспечение GPU стало более доступным, этот метод был популяризирован демосценой и Иниго Килесом, [ требуется ссылка ] соавтором Shadertoy .

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

Для многих примитивных 3D-форм существуют функции расстояния со знаком. [2] Их можно комбинировать с использованием математических операций, таких как modulo и booleans, для формирования более сложных поверхностей. Например, взятие модуля входных координат SDF разбивает его объем на все пространство, а взятие максимального из двух SDF дает поверхность пересечения их объемов. Поскольку SDF можно определить для многих фракталов, трассировка сферы часто используется для рендеринга 3D-фракталов. [3]

С помощью куба

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

Объемный лучевой марш

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

Отложенное затенение

При рендеринге эффектов экранного пространства , таких как отражение в экранном пространстве (SSR) и тени в экранном пространстве, лучи трассируются с использованием G-буферов , где данные глубины и нормали поверхности хранятся для каждого 2D-пикселя.

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

В статье Кена Перлина «Гипертекстура» [4], опубликованной в 1989 году, содержится ранний пример метода лучевого марширования.

Ссылки

  1. ^ Харт, Джон К. (июнь 1995 г.), «Трассировка сферы: геометрический метод сглаженной трассировки лучей неявных поверхностей» (PDF) , The Visual Computer
  2. ^ Quilez, Inigo. "3D distance functions". Inigo Quilez . Получено 2022-07-08 .
  3. ^ Харт, Джон К.; Сэндин, Дэниел Дж.; Кауффман, Луис Х. (июль 1989 г.), «Трассировка лучей детерминированных трехмерных фракталов» (PDF) , Компьютерная графика
  4. ^ Перлин, Кен (июль 1989), «Гипертекстура» (PDF) , Компьютерная графика