Publish @Ivan Gavrenkov: Как работает новое демо Square Enix

Да-да, то самое демо. Новое поколение консолей за углом, поэтому пришло время смотреть too good to be true tech demos. Под катом Ваня Гавренков рассказывает некоторые технические подробности и они, как мне кажется, хорошо показывают, почему итоговая реальность так от них отличается.
Спойлер: обмана нет, там действительно реалтайм.


People in this conversation:
Ivan Gavrenkov Add
Работал в CREAT Studios, потом в Японии в tri-Ace, Square-Enix. Сейчас в Sony Santa Monica.
Yuriy O’Donnell Add
Programmer at Creative Assembly UK
Simon Kozlov Add
Engineer at ROBLOX (www.roblox.com), previously at Microsoft. And ClosedCircles was my idea.

Simon Kozlov: @All
Мужики, как пьянка на E3 прошла? Рассказывайте интересного!

Ivan Gavrenkov: reply @Simon Kozlov
Я с Алексеем посидел пообедал. Что вечером было не знаю, потому что из Токио товарищ мне рассказывал, как и чего там.
Про демо кратко: для постпроцесса используется библиотека yebis (http://www.siliconstudio.co.jp/english/yebis_e.html), за авторством М. Кавасе (товарищ, который написал давно-давно rthdribl).
Все анимация (лицевая, одежда) – сбейкана. Были планы бейкать в низком разрешении и в реалтайме делать ACC (approximate catmull-clark), но не успели.
Волосы (борода) используют базовые кривые, сделаные художниками и потом генерят дополнительных + тесселяция в духе дем Sarah Tariq.
Тени совсем обычные – PCF адаптивный: берет 9 самплов, смотрит не все ли в тени/на свету, если надо самплит больше.
А, про волосы еще забыл, что там с АА – типа они рендерятся в отдельный буфер с МСАА (with alpha to coverage).
А потом композит.
Рендер – форвард. В какой-то момент был деферред, но так случилось, что он был медленне в этом конкретном случае.
Частицы динамические, не сбейканы. Молнии сделаны частицами.
Кожа скрин-спейс – берет сколько-то самплов рядом, разные веса для RGB – что-то такое, подбирали по ходу. Полный блер в ув-спейсе очень медленный, а не отличишь от скрин-спейса (о чем и было много статей).
Бэкграунд использует SH лайтмапы (2 банда). Хотели иррадианс волюм для персонажей, но как-то забили.
Тени для волос там “что-то типа ЕСМ”, не очень понял. Как-то видимо блерится то, что в шедоумапе. В общем не opacity shadow maps и друзья, нет там лееров.

Simon Kozlov: reply @Ivan Gavrenkov
Можно подробнее про кожу и вообще лайтмапы?
Т.е. в лайтмапе 2 SH гармоники?

Yuriy O’Donnell: reply @Ivan Gavrenkov
3 SH для R, G и B или 1 SH для интенсивности + просто RGB цвет отдельно?

Ivan Gavrenkov: reply @Yuriy O’Donnell
2SH (2 bands) – 4 коэффициента для Р, Г и Б (всего 12).

Ivan Gavrenkov: reply @Simon Kozlov
Да.

Simon Kozlov: reply @Ivan Gavrenkov
А какие вообще порядки ассетов? Т.е. какого там разрешения лайтмапы, насколько сложные анимации?

Ivan Gavrenkov: reply @Simon Kozlov
Такой дешевый способ сделать глосси-спекуляр (считай у тебя кубемап в каждом текселе с полным оклюженом).
Миллионы полигонов, тысячи объектов
Анимации произвольно сложные, они сбейканы.

Simon Kozlov: reply @Ivan Gavrenkov
А сбейкана – в смысле, в keyframes?

Ivan Gavrenkov: reply @Simon Kozlov
Да, там где не хватало костей.
Нет, в вертексы.

Simon Kozlov: reply @Ivan Gavrenkov
А-а-а-а-а-а, то есть _вся_ анимация на GPU?
В вертексе лежит полный набор keyframes or something?

Ivan Gavrenkov: reply @Simon Kozlov
Типа того. Снэпшот модели в разные кадры. Типа как блендшейп, только очень много.

Simon Kozlov: reply @Ivan Gavrenkov
Ага. Расскажи про кожу!

Ivan Gavrenkov: reply @Simon Kozlov
Ну вот это http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf
Основная идея. Что-то докрутили, но в целом – оно.

Simon Kozlov: reply @Ivan Gavrenkov
А рендер форвард потому что мало лайтов совсем?

Ivan Gavrenkov: reply @Simon Kozlov
Да, немного. Математика очень быстрая на новых карточках. Хотя и bandwidth тоже дофига. Ну вот тем не менее.

Simon Kozlov: reply @Ivan Gavrenkov
Все реднеряется за один проход forward или много?

Ivan Gavrenkov: reply @Simon Kozlov
Все.

This happened on #gamedeff