Визуализация дождя в TimeShift Роман Лебедев KRI Saber Interactive
/30 Эффекты дождя Сложный эффект Разделяется на множество составляющих Каждая составляющая требует индивидуального подхода Обеспечивает насыщенность сцены
/30 Существующие real-time методы Система частиц Плоскость перед камерой (ATI ToyShop) Полигональная поверхность Два конуса (N. Wang 2004)
/30 Требования 1 Генерация данных для визуализации - единожды Дождь идет только под открытым небом Настройки параметров дождя художниками (скорость, расстояние видимости)
/30 Требования 2 Быстрая отрисовка Минимальные затраты памяти Полная определенность в каждой точке сцены, в каждый момент времени (TStop, TSlow, TRev) Капли в TStop, TSlow
/30 Составляющие дождя 1 Мокрые материалы Капли на камере Туман Облака Вспышки молнии
/30 Составляющие дождя 2 Лужи Льющаяся вода (из труб, с различных поверхностей) Струи дождя Брызги на земле и на оружии
/30 Мокрые материалы
/30 Капли на камере
/30 Туман
/30 Облака, гроза
/30 Лужи, льющаяся вода
/30 Брызги 1 Изменяется scale, position, color, distortion scale
/30 Брызги 2 Дополнительный скейл в красной полосе
/30 Струи дождя Time NormalTime Stop
/30 Визуализация струй дождя 1 Генерация плоскостей Рендеринг color+distortion Изменение скорости течения времени
/30 Визуализация струй дождя 2 Геометрия генерируется вокруг камеры Невидимые плоскости не генерируются Уход в прозрачность на расстоянии
/30 Подготовка текстур Hi-res модели капель Текстура с альфой и нормалями готовилась в Maya Затайленость Размер текстуры – 512x512
/30 Предобработка уровня 1 Определение высоты струй, сдвига u/v координат для рядов и колонок плоскостей y1y1 y2y2 y3y3 Y Z
/30 Pos(R,a,t) Предобработка уровня 2 (t) R(t) Определение точек брызг, сдвига, фазы, радиуса pos(R,,t)
/30 Предобработка уровня 3 Упаковка данных float2int и т.п. Укладка в структуры с учетом выравнивания Сетка демо-уровня Брызги – 313 х 399 упаковка 22 байта -> 10 байт 2683 Кб Кб = 1.5 Мб экономии
/30 Средства отладки Визуализация геометрии дождя Крестики в узлах сетки Привязка к игроку\к камере
/30 Особые случаи 1 Коллижн со сложной геометрией – ставится специальное свойство материала
/30 Особые случаи 2 Недостаток крупной сетки
/30 Особые случаи 3 Дырки в крыше принудительный коллижн с крышей
/30 Производительность (x360) CPUGPU Color GPU Normals брызги0.3 ms0.2 ms0.05 ms струи0.2 ms1.4 ms0.1 ms
/30 Затраты на разработку 6 человекомесяцев 1 художник 1 программист Помощь рендер-отдела Первые тесты в Maya Быстро прототип в движке Оптимизация и исправление ошибок
/30 TimeShift demo
/30 Если Вы тоже хотите программировать next-gen спецэффекты, приходите к нам работать
/30 Спасибо за внимание Вопросы?