Отражательные зонды в URP
URP использует следующие свойства для определения вклада отраженных зондов в GameObject:
- Объем отражательного зонда
- Расстояние смеси
Примечание: Пути рендеринга Отложенный и Прямой используют зонды отражения по объектам, установленные со стороны CPU на основе границ объекта. При выполнении вызовов косвенного рисования GPU не имеет необходимой информации для поиска зонда отражения. Unity поддерживает зонды отражения с косвенными рисунками в путях рендеринга Прямой+ и Отложенный+.
Объемы отражательного зонда
Каждый зонд отражения имеет объем коробки. Зонд отражения влияет только на те части GameObject, которые находятся внутри объема коробки. Когда пиксель объекта находится вне любого объема зонда отражения, Unity использует отражение skybox.
В URP, Unity оценивает вклад каждого зонда для каждого отдельного пикселя, в зависимости от положения пикселя относительно границы объема зонда, когда включена функция Reflection Probe Blending.
Это поведение отличается от Built-in Render Pipeline, где Unity оценивает вклад зонда для всего объекта.
Расстояние смешивания
Каждый зонд отражения имеет свойство Расстояние смешивания. Это свойство представляет собой расстояние от поверхности объема отражающей коробки к центру объема коробки.
Unity использует свойство Blend Distance для определения вклада зонда отражения. Когда пиксель объекта находится на поверхности объема зонда отражения, этот пиксель получает 0% отражений от зонда. Когда пиксель находится внутри объема зонда отражения и его расстояние от каждой поверхности превышает значение Blend Distance, пиксель получает 100% отражений.
Если значение расстояния смешения больше половины расстояния между поверхностями объема зонда отражения, то зонд отражения не может обеспечить 100% вклад в любой пиксель в объеме.
Какие отражательные зонды влияют на GameObject
Когда GameObject находится в пределах нескольких объемов отражательного зонда, максимум два зонда могут влиять на GameObject. Unity выбирает, какие зонды влияют на GameObject, используя следующие критерии:
Свойство Значение зонда отражения. Unity выбирает два зонда с более высокими значениями Importance и игнорирует остальные.
Если значения Важности одинаковы, Unity выбирает зонды, имеющие наименьшие объемы коробки.
Если значения Importance и объемы коробки одинаковы, Unity определяет, какие из двух объемов отраженных зондов содержат больше площадей поверхности GameObject, и выбирает зонды этих объемов.
Когда два отражающих зонда воздействуют на GameObject, для каждого пикселя, Unity рассчитывает вес каждого зонда в зависимости от расстояния этого пикселя от поверхностей объемов коробки зонда и значений свойств Расстояние смешивания.
Если пиксель находится относительно близко к поверхностям обоих объемов коробки и сумма весов обоих зондов меньше 1, Unity присваивает оставшийся вес _GlossyEnvironmentCubeMap. Это кубическое отображение содержит отражение от источника света, установленного в окне Освещение под Освещение окружающей среды > Источник. В большинстве случаев этим источником является skybox.
Если пиксель находится в пределах обоих блоков и дальше, чем значения Расстояния Слияния от поверхностей обоих блоков:
Если свойства Важность отраженных зондов одинаковы, Unity объединяет отражения от зондов с равными весами.
Если свойство Значение одного из зондов выше, Unity применяет отражения только от этого зонда.