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

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1Все 242 услуг
Профессиональная настройка динамических теней и отражений
Сложный
~3 дня
Часто задаваемые вопросы

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

Какие этапы разработки игры?

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

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

Динамические тени и отражения — самые прожорливые части рендер-пайплайна по 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 недели
Документация и передача настроек включено

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

Какие проблемы решает настройка освещения?

Освещение в играх — это не только красиво, но и дорого. Типичная ситуация: художник запекает лайтмапы час, видит артефакт на стыке UV, правит развёртку и запекает ещё час. Такой цикл повторяется 3–5 раз за день. В масштабе проекта с десятком сцен теряются недели. Хуже того, неправильная стратегия освещения на старте (например, все источники в Realtime) на релизе выливается в 30–50% просадки FPS на мобильных устройствах и консолях.

Наша услуга по настройке освещения и рендеринга под ключ решает две главные боли: время запекания и производительность рантайм. Мы работаем с Unity и Unreal Engine — от аудита текущей системы до финальной оптимизации. За 5 лет мы реализовали более 30 проектов, включая инди и AA-тайтлы. Сертифицированные специалисты Unity (Unity Certified Developer) гарантируют результат.

Динамическое, статическое и смешанное освещение: как выбрать?

Прежде чем браться за инструменты, нужно определиться с моделью. В Unity три режима для каждого источника света — вот как они влияют на производительность:

Режим Тени Нагрузка GPU Нагрузка CPU Применение
Realtime Динамические Высокая Средняя Персонажи, движущиеся объекты
Baked Запечённые в текстуру Минимальная Нет Статичные декорации
Mixed Гибрид Средняя Низкая Ключевые источники с тенями

Ошибка, которую мы видим регулярно: студия выставляет всё освещение в Realtime и получает сцену с 12 источниками теней на экране. На мобильных платформах это гарантированный провал по производительности. Mixed Lighting с подрежимами Subtractive или Shadowmask — рабочий компромисс для большинства проектов. Статичные объекты получают запечённые тени, динамические — реалтаймовые от тех же источников.

Как оптимизировать запечённое освещение без потери качества?

Это та часть, где теряется больше всего времени. Вот как мы это делаем.

Выбор между Enlighten и Progressive Lightmapper

Unity поддерживает два бэкенда для запекания:

  • Enlighten — старый движок для реального времени, даёт менее точный GI. Формально устарел, но всё ещё используется на мобильных платформах.
  • Progressive Lightmapper (CPU/GPU) — современный path-tracing бэкенд. GPU-вариант на хорошей карте работает в 5–10 раз быстрее CPU.

По умолчанию мы используем Progressive Lightmapper (GPU) для PC и консолей. Ключевые параметры:

Lightmap Resolution:    10–20 texels/unit для большинства сцен
Max Bounces:            2–4 (не 8, как стоит по умолчанию)
Samples (Direct):       32–64
Samples (Indirect):     512–1024
Denoiser:               OIDN (Intel) или OptiX (NVIDIA)

Деноизер обязателен. Без него для чистого результата нужны тысячи сэмплов. С деноизером хватает 256–512, и итерация занимает минуты, а не часы. “Progressive Lightmapper — recommended for high-quality baked lighting in Unity” — Unity Documentation.

Типичные артефакты и их причины

  • Светлые швы между объектами (seams). Причина — разные UV-острова не согласованы на границах. Решение: выставить Stitch Seams или использовать Auto UV Charts с запасом отступа (Pack Margin).
  • Тёмные пятна у основания объектов. Пересечение коллайдера с полом. Решение: поднять объект на 0.01–0.05 unit или настроить Backface Tolerance.
  • Засвет на стыках лайтмап-атласов. UV-острова от разных объектов слишком близко в атласе. Решение: увеличить Pack Margin или вручную раскладывать крупные объекты в отдельные атласы через Lightmap Parameters.

Организация сцены для быстрого запекания

Большой масштаб сцены — главный враг скорости. Вот пошаговый процесс, который мы применяем:

  1. Исключаем мелкие объекты (меньше 0.5 unit) — они получают освещение через Light Probes.
  2. Используем Instanced Meshes для повторяющихся объектов — деревья, камни, заборы шарят один UV-атлас.
  3. Terrain запекаем отдельно с пониженным разрешением (2–5 texels/unit) — на земле детализация всё равно не читается.
  4. Проверяем Backface Tolerance на сложной геометрии — это предотвращает тёмные пятна.

Соблюдение этих правил сокращает время запекания на 50–70% без потери качества. Wikipedia: Lightmap

Light Probes и Reflection Probes: зачем и как настраивать?

Light Probes — система, дающая динамическим объектам иллюзию запечённого освещения. Пробы нужно расставлять каждые 2–4 метра в зонах с перепадом освещения. Слишком редкая расстановка даёт резкие скачки при перемещении персонажа.

Probe Volumes (в современных версиях Unity с HDRP) заменяют ручную расстановку на объёмную сетку. Для больших открытых сцен это существенная экономия времени.

Reflection Probes — корректные отражения на PBR-материалах. Без них металл и зеркала отражают скайбокс вместо окружения. Настройка:

  • Baked для статичных помещений
  • Realtime для зон с изменяемым окружением (телевизор, экраны)
  • Box Projection для корректного отражения геометрии комнаты

Wikipedia: Screen Space Ambient Occlusion

Пост-обработка: SSAO и SSR

SSAO (Screen Space Ambient Occlusion) добавляет затемнение в щелях и углах. Типичная ошибка — слишком высокий Radius и Intensity. Рабочие значения: Radius 0.5–1.5, Intensity 1.0–2.0.

SSR (Screen Space Reflections) даёт динамические отражения на горизонтальных поверхностях. Техника работает только с видимым на экране — это и ограничение, и плюс по производительности.

Что входит в работу по настройке освещения

В рамках услуги «настройка освещения и рендеринга» мы предоставляем:

  1. Аудит текущей системы — профилирование через Frame Debugger и RenderDoc, выявление узких мест.
  2. Стратегия освещения — документация с выбором режимов (Mixed/Baked/Realtime) под вашу платформу.
  3. Оптимизация запекания — настройка Progressive Lightmapper, UV-развёртки, Light Probes.
  4. Настройка Reflection Probes и пост-обработки (SSAO, SSR, Bloom) под стилистику.
  5. Финальный отчёт с результатами замеров производительности (FPS budget, draw calls).
  6. Онлайн-консультация — разбор вашей сцены в прямом эфире.
Пример экономии: проект на Unity с открытым миром Исходное время запекания одной сцены — 4 часа. После оптимизации снижено до 1 часа 20 минут. Экономия времени за месяц разработки — 40+ часов, что эквивалентно ~70 000 ₽.

Процесс работы и сроки

Мы работаем по чёткому регламенту:

  • Аналитика (1–2 дня) — разбор вашей сцены, скриншоты, профилирование.
  • Проектирование (1 день) — выбор стратегии, план оптимизации.
  • Реализация (3–7 дней в зависимости от сложности) — правки UV, настройка Lightmapper, Light Probes, пост-обработка.
  • Тестирование (1–2 дня) — замеры производительности, устранение артефактов.
  • Деплой — передача файлов сцены, документация, чек-лист.

Сроки ориентировочно: от 5 до 15 рабочих дней. Стоимость рассчитывается индивидуально — напишите нам для оценки вашего проекта.

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