Сегодня я расскажу, какие бывают трассировки лучей. Рассмотрю кратко по текстурам и по геометрии.
1. Трассировки по текстуре
Одним из методов трассировки лучей это трассировка по текстуре. Лучи трассируются по двух-мерной текстуре и маске глубины. Главное достоинство это возможность оптимизации. Одним из недостатков можно считать это многочисленные артефакты, которые лечатся только при помощи уменьшению луча т.е. размер луча должен быть меньше размера пикселя. А тут, извините, никакая оптимизация не поможет. Поможет только новое железо и совершенно другой API.
В целом применяется для игр вроде Crysis и некоторых других, так как это один из самых дешевых методов.
2. Трассировка, используя массив геометрических фигур
В этом методе достаточно находить пересечения луча и фигуры. Но! Этих фигур может быть так много, что поиск фигуры может продолжаться всю жизнь. Достоинство — максимальное качество изображения. Это означает, что для real time должна быть или достаточно простая сцена, или достаточно мощное железо и оптимизация.
Применяется для создания реалистичных изображений и анимации. Пока не предназначено для игр.
3. Трассировка по вокселям
Схожа с первым пунктом. Используется трехмерная текстура. Минус очевиден — очень низкая производительность. Однако может выиграть пункт 2, поскольку фигур может быть больше чем клеток трехмерной текстуры.
Примеров не знаю. Используется в экспериментах.
Методы трассировки — общая картина и мой опыт
На сегодняшний день вы можете подбирать сотни алгоритмов. Но ни один не сможет реализовать трассировку в реальном времени. Опыт невелик, поскольку я лишь делаю отражения для шейдеров в Minecraft. С одной стороны я добился качества, с другой — я так и не смог повысить производительность. Я думаю, что трассировка лучей на сегодняшний день не такая уж и нужная вещь. Стоит ли переплачивать? Думаю, можно обойтись тем, что у нас есть. По крайней мере пока.
Постараюсь в скором времени проработать тему, добавить картинок, отображающие примеры.
Автор: acterHD