Услуги по разработке шейдеров и визуальных эффектов

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

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

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

Посетить персонализированный сайт
Показано 7 из 7 услугВсе 242 услуг
Сложная
от 3 рабочих дней до 2 недель
Сложная
от 2 рабочих дней до 2 недель
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Шейдеры и визуальные эффекты

Программист добавляет в сцену воду — и получает синий плоский прямоугольник. Asset Store даёт что-то из 2018 года с артефактами на мобиле. Написать нормальный водный шейдер своими руками — задача нетривиальная: нужно понимать, как работает depth buffer, как семплировать нормали в несколько слоёв, как организовать foam на пересечении с геометрией. Без этого понимания шейдер либо не работает, либо убивает производительность.

Шейдеры и VFX — область, где визуальное качество напрямую зависит от технических знаний рендер-пайплайна.

URP vs HDRP: выбор определяет инструментарий

URP (Universal Render Pipeline) — оптимизирован под широкий диапазон платформ, включая мобайл. ShaderGraph в URP поддерживает большинство нод, но некоторые возможности ограничены (например, объёмное освещение — только через кастомные решения, Screen Space Reflections — в ограниченном виде с версии 14+).

HDRP (High Definition Render Pipeline) — PC и консоли, фотореалистичный рендеринг. Полный набор: Screen Space Reflections, Contact Shadows, Volumetric Fog, Decal Projectors, Water System (с Unity 2022.2). ShaderGraph в HDRP имеет дополнительные ноды, специфичные для пайплайна (Diffusion Profile для SSS, Eye шейдер).

Это принципиальный момент: шейдер, написанный под HDRP, не будет работать в URP и наоборот. Выбор пайплайна фиксируется на старте проекта.

ShaderGraph: разработка кастомных шейдеров

ShaderGraph — нодовый редактор шейдеров в Unity. Позволяет создавать шейдеры без написания HLSL-кода. Но понимание того, что происходит «под капотом», необходимо — иначе граф будет работать непредсказуемо.

Водный шейдер в деталях

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

1. Нормали с движением Два слоя normal map текстур, семплированных с разными скоростями и направлениями движения UV:

Time → Multiply (speed1) → Add → Sample Texture 2D (normalMap)
Time → Multiply (speed2) → Add → Sample Texture 2D (normalMap)
→ Normal Blend (оба слоя) → Normal (фрагментный шейдер)

Два разнонаправленных слоя создают эффект бегущих волн без тайловой периодичности.

2. Глубина и foam

Через нод Scene Depth (только URP/HDRP, Opaque texture должна быть включена) получаем глубину под водой. Разница между глубиной сцены и позицией фрагмента воды даёт water depth:

  • Малая глубина (пересечение с берегом, камнями) → пена (foam). Через Step или Smoothstep по этому значению создаётся маска пены.
  • Большая глубина → более насыщенный синий, непрозрачнее.

3. Рефракция (искажение дна)

Scene Color нод + смещение UV по normal map. Дно через воду «плывёт». Важно: Scene Color захватывает opaque-объекты, поэтому вода должна рендериться в Transparent очереди, после всей непрозрачной геометрии.

4. Fresnel и отражения

Fresnel Effect нод — вблизи нормали к камере поверхность прозрачнее, под острым углом — отражает. Это физически корректно для диэлектриков. Поверх Fresnel-маски добавляется кубмап-отражение или Reflection Probe.

Шейдер растительности

Анимация кустов и травы без физической симуляции — через вертексный шейдер. В ShaderGraph:

  • Нод Position (Object Space) → берём XZ-координаты вершины как фазовый сдвиг.
  • TimeSine с фазовым сдвигом — получаем разную фазу для каждой вершины.
  • Умножаем на Vertex Color канал R (белый = качается, чёрный = закреплён к земле) — основание куста не двигается.
  • Add к позиции вершины по XZ.

Результат: трава качается волнами, основание зафиксировано. Для «ветра при беге игрока» — добавляем CPU-параметр _PlayerPosition, вычисляем направление и силу воздействия в шейдере.

VFX Graph: система частиц на GPU

VFX Graph — система частиц, исполняемая полностью на GPU через Compute Shaders. Принципиальное отличие от Particle System (Shuriken): Shuriken работает на CPU, VFX Graph — на GPU. Это означает возможность управлять миллионами частиц без нагрузки на CPU.

Архитектура VFX Graph

Граф делится на контексты:

  • Spawn Context — условия спауна: burst (залп), constant rate (поток), событийный триггер.
  • Initialize Context — начальные значения атрибутов частицы: позиция, скорость, размер, цвет, lifetime.
  • Update Context — логика на каждом кадре: гравитация, турбулентность, коллизии, аттракторы.
  • Output Context — как рисовать частицу: Quad, Mesh, Lit/Unlit, Distortion.

Пример: взрыв с шрапнелью

Spawn: Single Burst (count: 200)
  ↓
Initialize:
  Position: Sphere Volume (radius: 0.1)  // точка взрыва
  Velocity: Spherical направление * Random(5, 15)  // разброс скоростей
  Size: Random(0.05, 0.3)
  Lifetime: Random(0.5, 2.0)
  Color: Gradient по lifetime (белый → оранжевый → серый)
  ↓
Update:
  Gravity (force: -9.8)
  Drag (coefficient: 0.2)  // торможение воздухом
  Turbulence (intensity: 2.0)  // хаотичность
  Collision (SDF сцены или Depth Buffer)  // искры от пола
  ↓
Output Quad (Unlit):
  Texture: искра/горящая точка
  Blend Mode: Additive

Turbulence через VFX Graph использует Noise Field — текстуру трёхмерного шума в пространстве. Частицы отклоняются по этому полю, создавая органичное движение дыма, огня, магии.

Flipbook анимации в Output контексте — анимация спрайта для каждой частицы (огонь, взрыв, дым в виде последовательности кадров). Параметр Flipbook Size задаёт сетку, Flipbook Index Blend — плавное смешение между кадрами.

Post-Processing

Post-processing — эффекты на финальном изображении после основного рендера. В Unity — через Volume система (Local/Global Volume).

Стек для типичного action-проекта:

Эффект Назначение
Bloom Свечение ярких источников. Threshold и intensity — важно не переусердствовать.
Tonemapping ACES filmic — стандарт для реалистичных проектов. Нейтральный — для стилизации.
Color Adjustments Коррекция контраста, насыщенности, Color Filter для биома.
Vignette Затемнение краёв — усиливает фокус на центре.
Motion Blur Размытие по вектору движения. На мобайле — отключить.
Depth of Field Боке. В VR — осторожно: DOF ломает восприятие глубины.
Screen Space Ambient Occlusion SSAO / HBAO — затемнение в углах геометрии в рантайме.

Amplify Shader Editor — альтернатива ShaderGraph для Unity, популярная до того, как ShaderGraph стал стабильным. Ряд проектов всё ещё использует ASE из-за большего количества готовых примеров и совместимости со старыми версиями Unity. По функциональности сопоставим с ShaderGraph.

Что мы делаем в рамках услуги

  • Разработка кастомных шейдеров в ShaderGraph (URP / HDRP): вода, растительность, персонажные эффекты, голограммы, dissolve.
  • VFX Graph эффекты: взрывы, огонь, дым, магия, окружение.
  • Настройка и оптимизация Particle System (Shuriken) для мобильных платформ.
  • Построение Post-Processing стека под визуальный стиль проекта.
  • Портирование шейдеров между URP и HDRP при смене пайплайна.
  • Оптимизация VFX для целевой платформы: GPU instancing, LOD частиц, culling.