Пример создания настраиваемого эффекта рендеринга с помощью функции рендеринга объектов в URP
Render Objects Renderer Feature позволяет отрисовывать объекты в определённой точке цикла рендеринга кадра. Можно по-разному интерпретировать и записывать данные рендеринга, например глубину и трафарет, либо отрисовывать набор GameObjects в заданный момент.
В следующем примере Render Objects Renderer Feature используется для отрисовки GameObject другим цветом, если он расположен позади других GameObjects.
Сначала создайте GameObject и прикрепить его к новому слой.
- Создайте GameObject в вашей сцене.
- В окне Inspector откройте раскрывающееся меню Слой и добавьте новый слой. Вы можете назвать слой DrawBehind.
- Установите GameObject на новый слой.
Затем создайте свойство Renderer Feature, которое будет рендировать только новый слой, находящийся над сценой.
- В окне Project выберите ресурс URP Renderer, используемый вашим проектом, например Настройки > PC_Renderer.
- Чтобы создать компонент Рендерер объектов рендеринга, выберите Добавить компонент рендеринга в окне Inspector, а затем выберите Рендерировать объекты.
- Чтобы функция Renderer Feature отрисовывала только слой с GameObject, откройте раскрывающийся список Render Objects (Render Objects), затем задайте для Маска слоя этот слой.
- Установите Мероприятие в точку впрыска AfterRenderingOpaques. Дополнительные сведения о точках впрыска пользовательских пропусков см. в Точки внедрения Custom Pass.
Затем настройте Renderer Feature так, чтобы он рендировал только части, скрытые за другими GameObjects, и в другом цвете.
-
Откройте раскрывающийся список Переопределения, затем выберите Глубина и установите Испытание на глубину на Большая.
Функция Renderer теперь отображает пиксель только в том случае, если его глубина больше, чем текущий пиксель в буфере глубины, что означает, что новый пиксель находится за другим GameObject.
Создайте новый материал, который использует шейдер Universal Render Pipeline/Unlit.
Установите цвет Базовой карты на цвет по вашему выбору.
В разделе Переопределения в Функции Рендерера установите Материал на созданный вами материал.
Когда вы перемещаете GameObject за другим GameObjects, Unity теперь отображает скрытые части в выбранном вами цвете.
Исправить перекрывающиеся области GameObject
Если вы используете сложный GameObject, Renderer Feature может рисовать перекрывающиеся части, как будто они скрыты. Это потому, что глубина одной части больше, чем перекрывающаяся часть.
Чтобы устранить эту проблему, отключите отображение всего GameObject и создайте новую функцию отображения, которая отображает нескрытые части. Выполните следующие действия:
-
В ресурсе URP Renderer откройте раскрывающееся меню Nepacious Layer Mask и отключите добавленный слой.
Unity теперь не рисует слой в непрозрачном рендеринге. Renderer Feature все еще рисует скрытые части, потому что он находится в другом рендеринге.
Unity не рисует символ, если он не находится за объектом Добавить новую функцию рендеринга объектов рендеринга.
Набор Маска слоя на новый слой, так что эта функция Renderer рисует GameObject.
Набор Мероприятие к Генеральной Ассамблее AfterRenderingOpaques точка впрыска.
Чтобы избежать влияния первой Функции Рендерера на расчеты глубины в новой Функции Рендерера, отключите Write Depth в разделе Переопределения первой Функции Рендерера.
Первая Функция Рендерера рисует скрытые части, а вторая Функция Рендерера рисует остальную часть GameObject.