Каустика в реальном времени

Каустика в реальном времени

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

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

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

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

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

Другие статьи по теме

Работа с цветом. Основные свед...

Глаза человека способные воспринимать огромную гамму цветов — являются мощным инструментом для...

Простая машинка в Unity

Как создать простую машину в Unity? Рассмотрим по шаговое создание машинки в среде Unity, используя...

Работа с цветом. Числа не врут

Всем любителям программы Photoshop весьма полезной станет книга «Ретуширование и обработка...

Работа с цветом. Идентификация...

Программа Photoshop представлена независимыми цветовыми пространствами, с наличием контейнеров,...

Комментарии

Добавить комментарий