Unity 6.3
0 онлайн 102 гостей 3 в системе
Вход
Конвейеры отображения Шаг 25 из 129

Включить точные нормы G-буфера в пути отображения Deferred и Deferred+ в URP

В путях отображения Deferred и Deferred+, Unity хранит нормали в G-буфере.

По умолчанию, Unity кодирует каждую нормальную в канале RGB нормальной текстуры, используя 8 бит для x, y и z. Значения квантизируются с потерей точности. Это повышает производительность, особенно на мобильных GPUs, но может привести к артефактам цветовых полос на гладких поверхностях.

Чтобы улучшить качество нормалей, можно включить свойство Точные нормали G-буфера в ассете Universal Renderer. Выполните следующие действия:

  1. В окне Project выберите ассет Universal Renderer.
  2. В окне Inspector перейдите в раздел Рендерер.
  3. Установить Точные нормали G-буфера до На.

При установке Точные нормы G-буфера до НаUnity использует октаэдральное кодирование. Значения нормальных векторов более точны, но операции кодирования и декодирования накладывают дополнительную нагрузку на GPU. Точность кодированных нормальных векторов аналогична точности выборочных значений в пути отображения Forward.

На следующей иллюстрации показана визуальная разница между двумя вариантами, когда Camera очень близко к GameObject:

Точные нормы G-буфера, визуальная разница между двумя вариантами.
Точные нормы G-буфера, визуальная разница между двумя вариантами.

Этот параметр не поддерживает следующие элементы:

  • Наклейки нормального смешивания при использовании с Screen Space наклейки техники.
  • Смешивание рельефа с более чем четырьмя слоями рельефа, поскольку нормы в различных слоях, кодированных с помощью октаэдрального кодирования, не могут быть смешаны из-за битовой природы кодирования (2 x 12 бит).

Дополнительные ресурсы