Создание погружающих, фотореалистичных VR-опытов с помощью High Definition Render Pipeline

SEBASTIEN LACHAMBRE / UNITY TECHNOLOGIESSenior Technical Artist
Mar 12, 2020|7 Мин
Создание погружающих, фотореалистичных VR-опытов с помощью High Definition Render Pipeline
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Мы официально представляем виртуальную реальность в High Definition Render Pipeline (HDRP). В версии 2019.3.6f1 и позже с версией пакета 7.3.1 HDRP теперь проверен и может использоваться в VR.

Этот блог-пост подробно рассматривает использование HDRP в вашем VR-проекте. Чтобы узнать больше обо всех возможностях, которые предлагает HDRP, ознакомьтесь с этим блог-постом.

VR в HDRP разработан так, чтобы:

Все функции HDRP совместимы с VR.

HDRP полностью поддерживается новым Unity XR Plugin Framework.

Однопроходная (инстансинг) является стандартным и рекомендуемым решением для рендеринга в VR.

Основные особенности

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

Вот очень краткий обзор функций, доступных для ваших VR-проектов:

  • Отложенный и прямой рендеринг
  • Все типы света, тени, декали и объемные эффекты
  • Эффекты в пространстве экрана
  • Окклюзия окружающей среды (AO)
  • Отражение в пространстве экрана (SSR)
  • Подповерхностное рассеяние (SSS)
  • Искажение и преломление
  • Постобработка
  • Цветокоррекция, сглаживание, глубина резкости и т.д.
  • Все VFX из Visual Effect Graph
Поддерживаемые платформы

VR для HDRP в настоящее время доступен для следующих платформ и устройств:

  • Oculus Rift и Rift S (Oculus XR Plugin, Windows 10, DirectX 11)
  • Windows Mixed Reality (Windows XR Plugin, Windows 10, DirectX 11)
  • PlayStationVR

OpenVR: Valve в настоящее время разрабатывает свой OpenVR Unity XR Plugin для 2019.3 и более поздних версий, и это будет доступно скоро.

Стерео-рендеринг техники

Нативная реализация VR будет обрабатывать все дважды – один раз для каждого глаза. Мы называем это решение мультипроходное рендеринг. HDRP поддерживает мультипроходное рендеринг, однако мы не рекомендуем этот метод, потому что ваше приложение будет использовать в два раза больше мощности ЦП для рендеринга, фактически удваивая количество ваших вызовов отрисовки. Кроме того, тени будут отрисовываться дважды и могут потреблять значительную часть вашего бюджета GPU.

Тем не менее, есть некоторые случаи, когда использование мультипрохода уместно:

  • Если ваша система имеет небольшое количество памяти GPU, мультипроход использует меньше памяти для целей рендеринга, чем одиночный проход.
  • Если по какой-то причине вам нужно отрисовывать значительно разные точки зрения для каждого глаза.

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

HDRP был разработан так, чтобы все функции были совместимы с VR и оптимизированы для рендеринга в один проход.

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

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

Начните с HDRP VR

Чтобы начать работу с HDRP VR, ознакомьтесь с разделом Обзор VR в документации Unity. Чтобы помочь вам настроить HDRP с VR, мы также предоставляем Мастера HDRP, который проверяет ваши настройки и может помочь вам исправить любые настройки, которые Мастер определяет как неправильные.

мастер hdrp

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

настройки xr

Сглаживание

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

Режимы сглаживания камеры описаны подробно в документации Unity. Эти параметры включают:

  • Многообразное сглаживание (MSAA) поддерживается с прямым рендерингом. Вы можете сбалансировать качество и производительность, выбрав количество образцов (2x, 4x, 8x). Эта техника может достичь отличных результатов, но она также может быть дорогой.
  • Временное сглаживание является, вероятно, лучшим решением для большинства приложений. Она очень эффективна в снижении алиасинга, но может размывать некоторые детали. Вы можете компенсировать это размытие с помощью встроенного управления фильтром резкости.
  • Некоторые более дешевые решения включают быстрое приближенное сглаживание (FXAA) или морфологическое сглаживание подпикселей (SMAA).
  • Также возможно комбинировать MSAA с TAA, FXAA или SMAA. Эта техника улучшает визуальное качество, но стоимость является кумулятивной.
  • Также доступно дополнительное сглаживание теней для каждого материала с Геометрическим Спекулярным Сглаживанием, которое вы можете настраивать непосредственно на материалах. Его использование рекомендуется для гладких и плотных поверхностей.

Производительность

Рендеринг VR крайне требователен из-за более высокой частоты обновления и разрешения, необходимых для отображения для обоих глаз. Убедитесь, что вы отключили все функции, которые вам не нужны в настройках актива HDRP. Функции, такие как объемные, не подходят для VR-приложений, поскольку их производительность не соответствует требуемым 90 fps, несмотря на поддержку. Частый мониторинг и профилирование производительности помогут вам выявить любые узкие места в вашем проекте.

Обратите внимание, что по умолчанию точность объемных эффектов (срезы по оси z) в VR будет уменьшена вдвое, чтобы сохранить более приемлемую производительность GPU. В дополнение к объемному освещению, настоятельно рекомендуется отключить поддержку HDRP Area Light при выполнении проекта VR. В отличие от других функций, Area Light должен быть отключен через файлы конфигурации шейдеров.

В HDRP доступны два метода рендеринга, которые также влияют на производительность: Режим шейдера Lit Forward и Deferred. Чтобы узнать о различиях между этими двумя режимами, пожалуйста, смотрите документацию. Выбор правильного режима для VR зависит от требований проекта. Прямое рендеринг позволяет включить MSAA и уменьшить использование памяти, в то время как отложенное рендеринг более эффективно для проектов с большим количеством источников света, но также потребляет больше памяти.

Другим фактором, влияющим на производительность GPU, является разрешение буфера рендеринга. Это разрешение изначально устанавливается плагином XR-дисплея и зависит от используемой гарнитуры. Затем вы можете настроить разрешение в своем приложении или использовать функцию динамического разрешения, чтобы управлять разрешением в зависимости от контекста текущей сцены. Например, разрешение может быть адаптировано в зависимости от текущего времени кадра GPU.

Для получения дополнительных советов ознакомьтесь с этой лекцией HDRP VR на Unite 2019 в Копенгагене.

Технический анализ HDRP VR

Чтобы поддерживать VR в HDRP, мы добавили набор макросов шейдеров, чтобы помочь обрабатывать экземплярный вид и использование массивов текстур для целевого рендеринга. Например, вы можете объявить текстуру в шейдере с помощью следующего кода:

TEXTURE2D_X(MyTexture);

На платформах, которые поддерживают массив текстур, этот макрос будет расширяться до TEXTURE2D_ARRAY. Если платформа не поддерживает массив текстур или если настройка в ShaderConfig.cs отключена, макрос будет расширяться до обычного TEXTURE2D. Аналогичные функции доступны для выборки текстур.

На стороне шейдера правильные константы вида (матрица вида, матрица проекции и т. д.) хранятся в массиве и индексируются на основе индекса глаза, который получается из instanceID примитивов. В случае вычислительных шейдеров размерность z dispatch используется для идентификации каждого глаза. Макрос UNITY_XR_ASSIGN_VIEW_INDEX обычно используется для назначения правильного индекса глаза.

Будущее HDRP VR

Будущие версии HDRP VR будут сосредоточены на:

  • Улучшении производительности с новыми аппаратными опциями, такими как переменная скорость затенения.
  • Улучшение поддержки платформ с Vulkan и DX12
  • Улучшение поддержки устройств
  • Расширение однопроходной обработки для поддержки более чем двух видов
Сообщите нам, что вы думаете

Вы можете начать использовать HDRP VR уже сегодня. Мы будем рады услышать ваши отзывы на форуме HDRP, пока продолжаем вносить улучшения.