karaulov, разумеется, только из тех игр, в которых используются шейдеры :) Из варкрафта их выдернуть не получится, так как там используется Fixed Pipeline. alexprey, с Poisson Sampling на той сцене выдаёт 60 fps, с PCF - 45 fps. Скидочку можно сделать на то, что мой ноутбук очень слабый. mishanka122, проблема в самой модели, она состоит из нескольких поверхностей, одна из которых полупрозрачная (иногда рендерится только эта поверхность), а я пока запретил таким моделями отбрасывать тени. Но это лишь мои догадки :) просто мне лень открыть модель и проверить.
DemonoiD, у Uncharted 2 яркие цвета становятся более насыщенным, посмотри на небо. Все эти техники дают очень блеклые цвета. ACES Filmic, в свою очередь, даёт более насыщенные и контрастные цвета, со стремлением к белому при больших значениях яркости. В будущем откажусь от этих техник, оставлю только ACES Filmic и добавлю настраиваемый Filmic ToneMapping, тоже из Unreal Engine.
Сегодня я отказался от старых мягких теней, сглаживание которых приходило в экраном пространстве (сцена без освещения, только с тенями, рендерилась в текстуру, затем она размывалась фильтром Гаусса). С одной стороны, с помощью этой техники можно получить достаточно быстрые тени с очень хорошим размытием, но, с другой стороны, всю сцену приходилось рендерить повторно, что приводило к сильному падению fps на сложных сценах, также наблюдался очень неприятный баг - гало вокруг объектов. Теперь я использую PCF фильтрацию, реализацию я взял, опять же, из Unreal Engine 4. Завтра покажу скриншоты.
Я всё-таки решил выложить текущую версию, она ещё находится в разработке, поэтому многие функции из экспериментальной версии ещё не перенесены (вообще никакие). Но в то же время она более стабильная, чем предыдущая.
Вчера заменил старый ACES Tonemapping на новый, который теперь используется в Unreal Engine 4 (с версии 4.15 он включен по умолчанию).
Tonemapping
Вот сравнение нескольких техник тонирования:
Widescreen Fix
Также мы с Ильёй ( darkowlom) улучшали фикс для широкоформатных мониторов:
Теперь можно полностью изменять стандартный интерфейс!
Но предстоит сделать ещё много работы, в частности, нужно добавить возможность редактирования интерфейса прямо во время игры (сейчас для того, чтобы изменения вступили в силу, нужно перезагружать карту).
Melissa, немного перепутал, флаг не для запекания теней, он должен определять, статичный ли объект. Если установлен этот флаг, то тень для данной модели будет обновляться только один раз при её появлении в поле зрения камеры.
Кристофер, у меня были некоторые проблемы с жестким диском, старый пришёл в непригодное для работы состояние, пришлось покупать новый. Все исходники проекта сохранились кроме одного, но очень важного - основного шейдера, в котором были реализованы все последние изменения, описанные в одном из предыдущих комментариев. В итоге пришлось всё восстанавливать по памяти, всё это я уже сделал и добавил много чего нового, например:
туман теперь пиксельный;
добавлен физически корректный спекуляр;
улучшены точечные источники света;
добавлена поддержка незатенённых и незатуманенных материалов;
все вычисления освещения теперь происходят в линейном пространстве;
изменён способ перехвата информации о текущей геометрии для дальнейшего использования при генерации теней (ранее писал, что это должно было увеличить FPS, но этого почему-то не произошло);
добавлена возможность включать/выключать вертикальную синхронизацию;
улучшено качество Chromatic Aberration;
улучшен Bloom и Lens Flares;
добавлена поддержка самосветящихся материалов (+ теперь можно задавать любое значение интенсивности свечения);
добавлена новая техника тонирования изображения - ACES Filmic (+ Hejl Filmic, Uncharted 2 Filmic);
Такого эффекта можно добиться при помощи SSAO, я сделал так, чтобы затенение объектов у основания было только в тени. DemonoiD:
тени для декораций будут просчитываться заранее
Так и сделаю, ещё думаю над тем, чтобы модифицировать .MDX формат моделей и добавить дополнительные параметры: флаги для запекания теней, пути к normal map, specular map, ambient occlusion map, emissive map. Кстати, реализовал простой PBS Specular, далее, может быть, добавлю Fresnel и отражения. GF RaiseD:
как дела с камерой?
Над этим я пока даже не работал, и, скорее всего, не буду. Если сделать так, чтобы объекты не исчезали при их выходе за пределы главного фруструма камеры, то произойдет падение производительности, хотя, я ещё подумаю над добавлением occlusion culling'а.
Теперь я понял, что не так с освещением и почему не работают стандартные шейдеры. Всё дело в том, что в варкрафте рассчитываются только нормали, а для получения качественного bump и parallax mapping'а нужно проводить вычисления в tangent space, для этого нужны тангенты и бинормали.
Я уже давно пробовал это реализовать, но была одна проблема - сильная потеря производительности, если в кадре находится очень много объектов. Метод, который находится по ссылке выше, позволяет производить расчёт касательного пространства прямо в шейдере, это значительно быстрее, но и менее корректно.
DemonoiD, нет, это их проект, для начала нужно спросить разрешение у них самих. Они работают над своей версией библиотеки и я им иногда помогаю. Как только я закончу работу над RenderEdge, выложу исходники в открытый доступ, кто захочет, сможет модифицировать код и использовать у себя в проектах.
Данные, возвращаемые функциями GetTriggerKey, TriggerRegisterKeyEvent, будут действовать для каждого игрока по отдельности. С их помощью не получится узнать, какую кнопку нажал другой игрок, но можно отправлять данные на сервер или просто синхронизировать, например, с помощью юнитов (при нажатии клавиши создаём юнита с рав-кодом, зависящим от нажатой клавиши). Если вы имели ввиду, как сделать так, чтобы функции срабатывали только у определённого игрока, то просто сравниваем с GetLocalPlayer().
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Screen Space Ambient Occlusion:
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
alexprey, с Poisson Sampling на той сцене выдаёт 60 fps, с PCF - 45 fps. Скидочку можно сделать на то, что мой ноутбук очень слабый.
mishanka122, проблема в самой модели, она состоит из нескольких поверхностей, одна из которых полупрозрачная (иногда рендерится только эта поверхность), а я пока запретил таким моделями отбрасывать тени. Но это лишь мои догадки :) просто мне лень открыть модель и проверить.
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Tonemapping
Widescreen Fix
Теперь можно полностью изменять стандартный интерфейс!
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
» WarCraft 3 / Столкновение с краем карты
Или GetWorldBounds, возвращает rect.
Ред. ENAleksey
» WarCraft 3 / Больше 12 игроков
https://www.xgm.guru/p/fl
» WarCraft 3 / Как убрать "черноту" на большой высоте
» RenderEdge / [RenderEdge] Экспериментальная версия
DemonoiD:
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Normal Mapping Without Precomputed Tangents
» WarCraft 3 / Возможность кликать и ходить под декорацией
Ред. ENAleksey
» WarCraft 3 / Возможность кликать и ходить под декорацией
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III