Открыть сервис

Scriptable Render Pipeline

Scriptable Render Pipeline (SRP, программируемый конвейер рендеринга) — это архитектурный компонент игрового движка Unity, предоставляющий разработчикам возможность создавать и настраивать конвейеры рендеринга графики с помощью C#-скриптов, в отличие от использования фиксированного, встроенного конвейера. SRP позволяет контролировать порядок и способ обработки геометрии, освещения, теней, пост-эффектов и других этапов визуализации, что даёт гибкость для оптимизации производительности под конкретные платформы и художественные задачи.

История

До появления SRP в Unity использовался встроенный конвейер рендеринга (Built-in Render Pipeline), который был закрытым и настраивался только через ограниченный набор параметров в редакторе. С ростом сложности игр и появлением новых платформ (мобильные устройства, консоли, VR) возникла потребность в более тонкой настройке рендеринга. В 2018 году компания Unity Technologies представила Scriptable Render Pipeline как часть версии Unity 2018.1. Изначально SRP был экспериментальным, но к версии 2019.3 стал стабильным и рекомендованным для новых проектов. В 2020 году Unity объявила, что встроенный конвейер будет постепенно вытесняться, а SRP станет основным способом рендеринга.

Архитектура

SRP работает на основе двух ключевых компонентов: Render Pipeline Asset (ресурс конвейера) и Render Pipeline Instance (экземпляр конвейера). Первый определяет глобальные настройки (например, качество теней, разрешение буферов), а второй — выполняет фактический рендеринг каждого кадра, вызывая методы, написанные на C#. Разработчик может переопределить стандартные этапы, такие как Render, Setup, BeginCameraRendering, EndCameraRendering, и добавить собственные проходы.

Поток выполнения

  1. Настройка камеры: очистка буферов, установка проекции.
  2. Сбор геометрии: сортировка объектов по глубине, материалу или слоям.
  3. Рендеринг проходов: выполнение шейдерных проходов (например, для непрозрачных, прозрачных, отражений).
  4. Пост-обработка: применение эффектов (размытие, тонирование, HDR).
  5. Вывод на экран: копирование финального изображения в буфер кадра.

Разновидности

Unity предоставляет две готовые реализации SRP, которые можно использовать как есть или модифицировать:

  • Universal Render Pipeline (URP) — универсальный конвейер, оптимизированный для широкого спектра платформ: от мобильных устройств до ПК. Поддерживает физически корректное освещение (PBR), динамические тени, пост-эффекты и LOD. Рекомендован для 2D- и 3D-игр средней сложности.
  • High Definition Render Pipeline (HDRP) — конвейер высокого качества, предназначенный для ПК и консолей. Поддерживает продвинутые эффекты: объёмное освещение, глобальное освещение в реальном времени, подповерхностное рассеивание, отражения с трассировкой лучей. Требует мощного оборудования.

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

Преимущества

  • Гибкость: полный контроль над каждым этапом рендеринга, включая порядок проходов, управление памятью и оптимизацию под конкретную платформу.
  • Производительность: возможность отключить ненужные функции (например, тени или отражения) без потери качества в других аспектах.
  • Масштабируемость: одна кодовая база может адаптироваться под разные устройства — от старых смартфонов до современных ПК.
  • Поддержка современных технологий: SRP интегрируется с Vulkan, DirectX 12, Metal и другими API, а также с трассировкой лучей (в HDRP).

Недостатки

  • Сложность разработки: создание кастомного SRP требует глубоких знаний графического программирования и шейдеров.
  • Совместимость: не все ассеты и плагины, написанные для встроенного конвейера, работают с SRP без адаптации.
  • Документация: на момент выпуска документация была неполной, хотя к 2024 году ситуация улучшилась.
  • Производительность по умолчанию: готовые URP и HDRP могут быть менее эффективны, чем встроенный конвейер, если не настроены должным образом.

Применение

SRP используется в большинстве современных проектов на Unity, включая:

  • Мобильные игры (например, «Genshin Impact» использует модифицированную версию URP).
  • AAA-игры на ПК и консолях (например, «Hollow Knight: Silksong» — HDRP).
  • Симуляторы и визуализации (архитектурные туры, VR-приложения).
  • Инди-игры, где требуется уникальный визуальный стиль (например, «Tunic» с кастомным SRP).

Примеры кастомных конвейеров

  • Cel-shading pipeline: конвейер для мультяшной графики с чёткими границами теней.
  • Voxel pipeline: рендеринг воксельных миров с оптимизацией под большие объёмы данных.
  • Low-poly pipeline: упрощённый рендеринг для стилизованных моделей с минимальными затратами.

Интересные факты

  • SRP позволяет использовать один и тот же код для рендеринга на разных платформах, но с разными настройками, что экономит время разработки.
  • В Unity 2022 LTS добавлена поддержка SRP в редакторе для 2D-игр, что ранее было ограничено.
  • Некоторые студии, такие как «Frogwares» (серия «Sherlock Holmes»), полностью перешли на HDRP для улучшения качества изображения.

Критика

Основные претензии к SRP связаны с его сложностью для новичков и необходимостью переписывать существующие проекты при переходе с встроенного конвейера. Кроме того, в ранних версиях наблюдались проблемы с производительностью на мобильных устройствах из-за избыточных вызовов отрисовки. Сообщество также отмечает, что Unity недостаточно активно обновляет документацию по кастомным конвейерам.

Источники

  • Unity Documentation: Scriptable Render Pipeline
  • Unity Blog: «Introduction to the Scriptable Render Pipeline» (2018)
  • Unity 2022.3 LTS Release Notes
  • Статья «Scriptable Render Pipeline: A Deep Dive» на Game Developer (2020)
  • Официальный репозиторий Unity на GitHub: примеры кастомных SRP

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →