Профессиональная настройка динамических теней и отражений

Динамические тени и отражения — самые прожорливые части рендер-пайплайна по GPU-времени. В нашей практике мы часто сталкиваемся с тем, что настроить их «по умолчанию» не выйдет: каждый проект требует своего баланса между качеством и производительностью. На мобильном устройстве 2-мегапиксельный Shado

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    142

Динамические тени и отражения — самые прожорливые части рендер-пайплайна по GPU-времени. В нашей практике мы часто сталкиваемся с тем, что настроить их «по умолчанию» не выйдет: каждый проект требует своего баланса между качеством и производительностью. На мобильном устройстве 2-мегапиксельный Shadow Map для одного Directional Light — это катастрофа. На десктопе отсутствие Screen Space Reflections в шутере от первого лица бросается в глаза сразу.

Почему настройка динамических теней и отражений критически важна?

Ошибки в настройках приводят к провалу FPS budget или к откровенно плохой картинке. Наши сертифицированные инженеры Unity имеют опыт работы с проектами под Android, iOS, PC и консоли. Мы гарантируем стабильный FPS после оптимизации. Свяжитесь с нами для оценки вашего проекта.

Динамические тени и отражения: где теряется производительность

Shadow Casting работает через дополнительный рендер-проход — Shadow Caster Pass. Каждый объект, входящий в зону видимости тени, рендерится повторно с depth-шейдером в Shadow Map текстуру. Чем больше источников с тенями, тем больше дополнительных проходов.

Самое болезненное — Spot Light или Point Light с включёнными Shadow Casting на мобильных платформах. Point Light рендерит Shadow Map в виде cubemap — 6 граней, 6 рендер-проходов для одного источника. На сцене с 5 такими источниками это 30 дополнительных рендер-проходов каждый кадр. На мобильных устройствах это не влезает в 16-ms бюджет.

Практический подход: оставляем Shadow Casting только на Directional Light (основной направленный источник), Point и Spot Lights переводим в режим без теней и компенсируем их отсутствие через Blob Shadow проектор или Decal с мягкой тенью под персонажем. Игрок не замечает, что тень «ненастоящая», если её форма правдоподобна.

Для Shadow Distance критически важно выставить адекватное значение. В Unity это Quality Settings → Shadow Distance. Типичная ошибка — оставить дефолтные 150 единиц для мобильного проекта с видом сверху, где дальняя видимость — 30 единиц. Всё лишнее за этим расстоянием Unity всё равно рендерит в Shadow Map, но никогда не показывает.

Shadow Cascades для Directional Light

Directional Light с одним Shadow Map без каскадов даёт либо детальные тени вблизи при потере качества вдали, либо охватывает всю дальность при низком разрешении вблизи. Shadow Cascades делят Shadow Map на зоны: ближняя зона получает высокое разрешение, дальняя — низкое.

Для PC-проектов 4 каскада — стандарт. Для мобильных — 2 каскада максимум, а лучше 1 с небольшим Shadow Distance. Распределение каскадов (Cascade Split) по умолчанию в Unity равномерное, но лучше работает логарифмическое: 0.05 / 0.15 / 0.35 — большая часть разрешения Shadow Map уходит на первые метры перед камерой, где детализация тени заметнее всего.

Shadow Normal Bias и Shadow Bias — параметры, которые определяют, есть ли «тенеакне» (shadow acne, полосатые артефакты самозатенения) или «летающие тени» (peter panning, тени оторваны от объектов). Normal Bias 0.4, Bias 0.05 — отправная точка для большинства сцен. Для тонких объектов (листья, решётки) Normal Bias нужно снижать до 0.1–0.2, иначе тень исчезает полностью.

Отражения: Screen Space vs Probe-based

Screen Space Reflections (SSR) — постпроцессинговый эффект, работающий только с тем, что находится в кадре. Дёшево и убедительно для горизонтальных поверхностей (пол, вода), но ломается на краях экрана и не показывает то, что находится за камерой. В HDRP настраивается через Volume → Screen Space Reflection, ключевой параметр — Minimum Smoothness (поверхности ниже этого значения не получают SSR, что правильно — матовые поверхности не отражают).

Reflection Probes работают везде, где SSR не справляется: вертикальные поверхности, отражение потолка в полу, интерьеры. Baked Reflection Probe — снимок кубической панорамы в конкретной точке пространства, запечённый заранее. Realtime Reflection Probe пересчитывается во время игры.

Проблема Baked Probes — статичность. Если в сцене есть анимированные объекты (флаги, вода, персонажи), они не попадают в отражение. Компромисс: Realtime Probe с Refresh Mode On Awake для объектов, которые меняются редко (открывающаяся дверь), и Baked для всего остального.

Box Projection — обязательная настройка для интерьеров. Без неё Reflection Probe ведёт себя как бесконечно удалённый источник, и отражение не совпадает с реальной геометрией комнаты. С Box Projection и правильно настроенным Box Size зеркало на стене будет показывать корректную перспективу.

Как избежать типичных ошибок при настройке отражений?

Из нашей практики: на проекте с изометрическим видом требовалась река с правдоподобными отражениями на Android. SSR — недоступен (OpenGL ES 3.0 на целевых устройствах плохо переваривает postprocess stack). Baked Reflection Probe давал статичную картинку без неба.

Решение: кастомный шейдер воды на ShaderGraph с искажением UV через Normal Map (имитация волнения) + Reflection Probe в Realtime режиме с Refresh Mode Every Frame, но с очень низким Shadow Resolution (128×128) — он отражал только небо и горизонт. Для динамических объектов (лодки) добавили Planar Reflection Camera — отдельная камера рендерит сцену с перевёрнутой Y-осью в Render Texture, которую шейдер воды смешивает с Reflection Probe через Fresnel-зависимость. Результат выглядел убедительно при стоимости одного дополнительного рендер-прохода в 60% разрешении.

Диагностика и инструменты

Frame Debugger разбирает Shadow Caster Pass по каждому источнику — сразу видно, кто «жрёт» время. GPU Usage в Profiler показывает мс на каждый рендер-проход с Shadow Casting.

Для Reflection Probes — Rendering Debugger в режиме просмотра Reflections → Probe Volume: видно, какой зонд влияет на конкретную поверхность и корректен ли Box Projection.

Метод Преимущества Недостатки
Screen Space Reflections Работает быстро, хорошо для горизонтальных поверхностей Зависит от кадра, не показывает за камерой
Baked Reflection Probes Низкая стоимость, работает везде Статично, не отражает динамику
Realtime Reflection Probes Динамическое отражение Высокая стоимость, часто требует снижения разрешения

Что входит в настройку теней и отражений

  • Аудит текущей сцены и выявление проблем производительности
  • Выбор оптимальных параметров теней (Shadow Distance, Cascades, Bias)
  • Настройка Reflection Probes с Box Projection
  • Создание кастомных шейдеров при необходимости
  • Интеграция и профилирование
  • Документация и передача настроек в команду
Этап Сроки
Анализ рендер-пайплайна и производительности 1–2 дня
Настройка теней для одной сцены (PC/console) 1–3 дня
Настройка теней с оптимизацией под мобильные 3–7 дней
Reflection Probes для комплекса интерьеров 3–5 дней
Полный пайплайн теней + отражений, несколько платформ 2–4 недели
Документация и передача настроек включено

Оценим ваш проект и предложим набор настроек под ключ за сроки, указанные в таблице. Пишите — мы проконсультируем и сориентируем по стоимости. Получите консультацию по настройке графики в вашей игре. Свяжитесь с нами.