Датчики отражения

Введение

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

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

Хотя эти зонды являются эффективным способом хранения отражений, у них есть несколько недостатков:

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

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

Настройка

Создайте узел ReflectionProbe и оберните его вокруг области, где вы хотите иметь отражения:

../../_images/refprobe_setup.png

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

По умолчанию в интерьерах, отражения могут выглядеть не очень однородными. В этом случае обязательно отметьте свойство "Box Correct".

../../_images/refprobe_box_property.png

Эта настройка изменяет отражение с бесконечного скайбокса на отражение коробки размером с зонд:

../../_images/refprobe_boxcorrect.png

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

Зонд фиксирует окружающее из центра гизмо. Если по какой-то причине форма комнаты или ее содержимое закрывают центр, его можно переместить на свободное место, передвинув ручки в центре:

../../_images/refprobe_center_gizmo.png

По умолчанию отображение теней отключено при рендеринге зондов (только на отрисованном изображении внутри зонда, а не на реальной сцене). Это простой способ экономии производительности и памяти. Если вам нужны тени в зонде, их можно включить/выключить с помощью параметра Enable Shadow:

../../_images/refprobe_shadows.png

Наконец, имейте в виду, что вы можете не захотеть, чтобы зонд отражения рендерил некоторые объекты. Типичный сценарий - враг внутри комнаты, который будет перемещаться. Чтобы объекты не отображались в отражениях, используйте параметр Cull Mask:

../../_images/refprobe_cullmask.png

Интерьер против экстерьера

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

../../_images/refprobe_ambient.png

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

По желанию, вы можете смешать окружающий свет с диффузным захватом зонда, настроив свойство Ambient Contribution (0.0 означает чистый окружающий цвет, а 1.0 - чистый диффузный захват).

Смешивание

Можно использовать несколько зондов отражения, и Godot смешает их в местах наложения с помощью интеллектуального алгоритма:

../../_images/refprobe_blending.png

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

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

../../_images/refprobe_ssr.png

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

Атлас отражений

В текущей реализации рендерера все зонды имеют одинаковый размер и помещаются в атлас отражений. Размер и количество зондов можно настроить в Настройки проекта -> Качество -> Отражения

Значение по умолчанию Atlas Subdiv: 8 позволяет использовать в сцене до 16 зондов отражения. Это значение необходимо увеличить, если вам нужно больше зондов отражения.

../../_images/refprobe_atlas.png