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, и добавить собственные проходы.
Поток выполнения
- Настройка камеры: очистка буферов, установка проекции.
- Сбор геометрии: сортировка объектов по глубине, материалу или слоям.
- Рендеринг проходов: выполнение шейдерных проходов (например, для непрозрачных, прозрачных, отражений).
- Пост-обработка: применение эффектов (размытие, тонирование, HDR).
- Вывод на экран: копирование финального изображения в буфер кадра.
Разновидности
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 →