Позвольте спросить - а что дальше? после того как 90% Лары будет переработано, будет ли что то новое или будет стремление добить оставшиеся 10% в целях перфекционизма, под новым я подразумеваю, к примерму, онлайн редактор карт, мультиплеер и т.п.
robotcity
Когда будет, тогда и придумаем :)
За последнюю неделю серьёзно поработал над оптимизацией.
Объединил меши модели в один, в вершинах которого пишу номер влияющей "кости", соответственно трансформации всех частей тела засылаются в шейдер одним вызовом. В качестве трансформаций, вместо матриц теперь использую комбинацию из двух векторов - кватернион+позиция. Размер передаваемых в шейдер данных уменьшился в 2 раза, но инструкций получилось чуть больше (норм раскидывается по ALU). Из-за такого объединения появилась проблема с подменой отдельных частей (рука с оружием, злая голова, торс с дробовиком на спине и т.д.) т.е. раньше для этого модифицировал последний элемент матрицы трансформации с 1.0 на -1.0 решил очень просто - значение w компоненты координаты вершины берётся из pos.w трансформации кости. Т.е. перед отсрисовкой модели для частей выставляю pos.w = -1.0, что уносит меши "за спину" камеры и они не растеризуются. Учитывая эти особенности, модель ГГ рисуется за 4 DIP'а, а общее число DIP'ов после оптимизации снизилось почти в 15 раз.
Уменьшил кол-во компилируемых и переключаемых шейдеров, добавив статический бранчинг.
Добавил простую, но эффектную плюшку - после выхода из воды Лариса ещё некоторое время остаётся мокрой посредством спекуляра. Сейчас он включается в момент выхода из воды, что выглядит достаточно резко, в будущем хочу срезать спекуляр для фрагментов находящихся под водой, так появившаяся на поверхности макушка будет блестеть, а тело под водой нет. Также, хочу сгенерить какую-нибудь шумную карту, чтобы блики были не такими однородными.
В данный момент работаю над генерацией карт нормалей используя существующий контент (дифузки). То что получается показано на скринах, пока математически некорректно т.к. TBN базис считается весьма условно, но это лишь первые попытки :)
XProger
> Также, хочу сгенерить какую-нибудь шумную карту, чтобы блики были не такими
> однородными.
Это обязательно. Без них Лара выглядит очень пластмассово. И ещё эту шумную текстуру надо скролить вниз, чтобы имитировать стекание воды.
что то на самих картинка нормал мап не чувствуется
XProger
Круто. Однако попробовал бы всё же с Nearest Neighbor или фильтрации по типу как в различных эмуляторах старых консолей.
92+
Свет в игре расположен не логично. Специфическое псевдоосвещение как никак. И в оригинальных текстурах "запечёный" свет.
Для WebGL версии добавил возможность выбора файла уровня (PC и PSX версий), для Windows версии уровень и саундтрек можно указать через командную строку.
Добавил поддержку катсцен:
Начал эксперименты с водными поверхностями, на видео показано отражение и преломление по parallax-corrected cubemap и симуляция волн на GPU.
XProger
Как волны симулируешь?
Чё-то управление глючит. Я долго пытался, но так и не смог вылезти из воды.
Отказался от кубмапы, теперь отражение рендерю отдельным проходом, а преломление беру из back buffer'а всего, что было отрисованно до воды. Далее просто проецирую текстуры на поверхность воды, заранее помеченную в альфа-канале, чтобы избежать ошибочного refraction объектов над. Нормали перевожу в screen space dudv, пока без учёта глубины относительно поверхности и расстояния до неё.
XProger
открыл этот бассейн в WebGL версии. Вода самая простая. такой как у тебя в видео нет воды.
amd.fx6100
W.I.P. - Work In Progress
Всё ещё пилю воду, осталось дотюнить расчёт каустик и реализовать отражение волн от береговой линии (генерировать дополнительную маску по форме препятствий на пути волн). Также хочу смещать преломления и отражения по dudv в зависимости от расстояния до водной поверхности.
Помимо мелких багфиксов реализовал поддержку переменного pitch'а для звука, это использовалось в оригинале для того, чтобы разнообразить вариации звуков (кряхтения, оханья, аханья, выстрелы, рикошет и т.д.)
Далековато отходишь от оригинала) Будет возможность отключить современные плюшки?
E-Cone
И это только начало, всё будет.