13

» RenderEdge / [RenderEdge] Экспериментальная версия

DemonoiD, конечно, скорее всего, включение прозрачности тени будет происходить из .mdx файла модели (для каждого слоя материала отдельно).
13

» RenderEdge / [RenderEdge] Экспериментальная версия

alexprey, просто я ещё не реализовал размытие текстуры, всё руки не дойдут до этого.
13

» RenderEdge / [RenderEdge] Экспериментальная версия

DemonoiD, зачем? Так никто не делает, может вы имели ввиду такой эффект?
Screen Space Ambient Occlusion:
13

» RenderEdge / [RenderEdge] Экспериментальная версия

DemonoiD, есть, и очень много, например, геройское свечение, сферы у Келя, вода, основа у лесопилки альянса...
13

» RenderEdge / [RenderEdge] Экспериментальная версия

karaulov, разумеется, только из тех игр, в которых используются шейдеры :) Из варкрафта их выдернуть не получится, так как там используется Fixed Pipeline.
alexprey, с Poisson Sampling на той сцене выдаёт 60 fps, с PCF - 45 fps. Скидочку можно сделать на то, что мой ноутбук очень слабый.
mishanka122, проблема в самой модели, она состоит из нескольких поверхностей, одна из которых полупрозрачная (иногда рендерится только эта поверхность), а я пока запретил таким моделями отбрасывать тени. Но это лишь мои догадки :) просто мне лень открыть модель и проверить.
13

» RenderEdge / [RenderEdge] Экспериментальная версия

А вот несколько скриншотов, показывающих, как можно полностью изменить атмосферу игры:
Трава немного не сочетается, так как у неё Unshaded материал.
13

» RenderEdge / [RenderEdge] Экспериментальная версия

DemonoiD, у Uncharted 2 яркие цвета становятся более насыщенным, посмотри на небо. Все эти техники дают очень блеклые цвета. ACES Filmic, в свою очередь, даёт более насыщенные и контрастные цвета, со стремлением к белому при больших значениях яркости. В будущем откажусь от этих техник, оставлю только ACES Filmic и добавлю настраиваемый Filmic ToneMapping, тоже из Unreal Engine.
Сегодня я отказался от старых мягких теней, сглаживание которых приходило в экраном пространстве (сцена без освещения, только с тенями, рендерилась в текстуру, затем она размывалась фильтром Гаусса). С одной стороны, с помощью этой техники можно получить достаточно быстрые тени с очень хорошим размытием, но, с другой стороны, всю сцену приходилось рендерить повторно, что приводило к сильному падению fps на сложных сценах, также наблюдался очень неприятный баг - гало вокруг объектов. Теперь я использую PCF фильтрацию, реализацию я взял, опять же, из Unreal Engine 4. Завтра покажу скриншоты.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Кристофер, попробуй запустить игру в debug режиме, после этого повтори то, что привело к вылету, и скинь мне файл RenderEdge.log в личку.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

EfReeZe, я его исправил, но не сильно) Я просто попытался подогнать значения так, чтобы по вертикали поле зрения было таким же, как и без фикса.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Я всё-таки решил выложить текущую версию, она ещё находится в разработке, поэтому многие функции из экспериментальной версии ещё не перенесены (вообще никакие). Но в то же время она более стабильная, чем предыдущая.
Скачать (карта-пример внутри).
Список изменений (v0.2.0dev):
  • ++**(+)**++ Поддержка Direct3D9;
  • ++**(+)**++ Блокировка функции CtrlGetFromPoint, если игра на паузе;
  • ++**(+)**++ Показ GUI только после загрузки карты;
  • ++**(+)**++ Исправлен баг, связанный с тем, что ширина и высота текстур были перепутаны;
  • ++**(+)**++ Исправлен слишком большой угол обзора при использовании Widescreen Fix;
  • ++**(+)**++ Исправлена проблема, связанная с тем, что невозможно было запустить приложение с первой попытки;
  • ++**(+)**++ Обновлён FreeType до версии 2.7;
  • ++**(+)**++ Запуск более одного экземпляра war3.exe одновременно;
  • ++**(+)**++ Оптимизация RenderEdge.dll;
  • ++**(+)**++ Исправлены проблемы безопасности;
  • ++**(+)**++ Обновлено лого проекта, и добавлен значок приложения;
  • ++**(+)**++ Улучшен debug log;
  • !!**(-)**!! Исправлены вылеты игры при загрузке карты;
  • !!**(-)**!! Поддержка ВарКрафта версии 1.27a (1.27b?);
  • !!**(-)**!! Поддержка Windows XP (нужно ли?);
  • !!**(-)**!! HDR Rendering;
  • !!**(-)**!! Post Process Effects;
  • !!**(-)**!! ShaderSetInt/Float/Bool/Texture;
  • !!**(-)**!! Анизотропная фильтрация текстур;
  • !!**(-)**!! SetLightDirection/Diffuse/Ambient.
Загруженные файлы
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Вчера заменил старый ACES Tonemapping на новый, который теперь используется в Unreal Engine 4 (с версии 4.15 он включен по умолчанию).

Tonemapping

Вот сравнение нескольких техник тонирования:

Widescreen Fix

Также мы с Ильёй ( darkowlom) улучшали фикс для широкоформатных мониторов:
Теперь можно полностью изменять стандартный интерфейс!
Но предстоит сделать ещё много работы, в частности, нужно добавить возможность редактирования интерфейса прямо во время игры (сейчас для того, чтобы изменения вступили в силу, нужно перезагружать карту).
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Melissa, немного перепутал, флаг не для запекания теней, он должен определять, статичный ли объект. Если установлен этот флаг, то тень для данной модели будет обновляться только один раз при её появлении в поле зрения камеры.
Кристофер, у меня были некоторые проблемы с жестким диском, старый пришёл в непригодное для работы состояние, пришлось покупать новый. Все исходники проекта сохранились кроме одного, но очень важного - основного шейдера, в котором были реализованы все последние изменения, описанные в одном из предыдущих комментариев. В итоге пришлось всё восстанавливать по памяти, всё это я уже сделал и добавил много чего нового, например:
  • туман теперь пиксельный;
  • добавлен физически корректный спекуляр;
  • улучшены точечные источники света;
  • добавлена поддержка незатенённых и незатуманенных материалов;
  • все вычисления освещения теперь происходят в линейном пространстве;
  • изменён способ перехвата информации о текущей геометрии для дальнейшего использования при генерации теней (ранее писал, что это должно было увеличить FPS, но этого почему-то не произошло);
  • добавлена возможность включать/выключать вертикальную синхронизацию;
  • улучшено качество Chromatic Aberration;
  • улучшен Bloom и Lens Flares;
  • добавлена поддержка самосветящихся материалов (+ теперь можно задавать любое значение интенсивности свечения);
  • добавлена новая техника тонирования изображения - ACES Filmic (+ Hejl Filmic, Uncharted 2 Filmic);
  • добавлено фэйковое GI ambient освещение;
  • ...
13

» WarCraft 3 / Столкновение с краем карты

Darknessay, GetCameraBoundMaxX, то же самое и для Y и минимальных границ.
Или GetWorldBounds, возвращает rect.
13

» WarCraft 3 / Как убрать "черноту" на большой высоте

darkowlom, а мне попадалось ;) Да, с помощью Memory Hack это сделать не сложно, но сейчас проверить не смогу, проблемы с компьютером
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Каждая тень, по хорошему, должна иметь градиент
Такого эффекта можно добиться при помощи SSAO, я сделал так, чтобы затенение объектов у основания было только в тени.
DemonoiD:
тени для декораций будут просчитываться заранее
Так и сделаю, ещё думаю над тем, чтобы модифицировать .MDX формат моделей и добавить дополнительные параметры: флаги для запекания теней, пути к normal map, specular map, ambient occlusion map, emissive map. Кстати, реализовал простой PBS Specular, далее, может быть, добавлю Fresnel и отражения. GF RaiseD:
как дела с камерой?
Над этим я пока даже не работал, и, скорее всего, не буду. Если сделать так, чтобы объекты не исчезали при их выходе за пределы главного фруструма камеры, то произойдет падение производительности, хотя, я ещё подумаю над добавлением occlusion culling'а.
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Теперь я понял, что не так с освещением и почему не работают стандартные шейдеры. Всё дело в том, что в варкрафте рассчитываются только нормали, а для получения качественного bump и parallax mapping'а нужно проводить вычисления в tangent space, для этого нужны тангенты и бинормали.
Я уже давно пробовал это реализовать, но была одна проблема - сильная потеря производительности, если в кадре находится очень много объектов. Метод, который находится по ссылке выше, позволяет производить расчёт касательного пространства прямо в шейдере, это значительно быстрее, но и менее корректно.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

DemonoiD, нет, это их проект, для начала нужно спросить разрешение у них самих. Они работают над своей версией библиотеки и я им иногда помогаю. Как только я закончу работу над RenderEdge, выложу исходники в открытый доступ, кто захочет, сможет модифицировать код и использовать у себя в проектах.
13

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

хотел бы я глянуть как можно так просто моделькиами сделать)
Команда Warcraft 3 Reborn так и делала:
как понять, какой игрок нажал на клавишу?
Данные, возвращаемые функциями GetTriggerKey, TriggerRegisterKeyEvent, будут действовать для каждого игрока по отдельности. С их помощью не получится узнать, какую кнопку нажал другой игрок, но можно отправлять данные на сервер или просто синхронизировать, например, с помощью юнитов (при нажатии клавиши создаём юнита с рав-кодом, зависящим от нажатой клавиши). Если вы имели ввиду, как сделать так, чтобы функции срабатывали только у определённого игрока, то просто сравниваем с GetLocalPlayer().
Загруженные файлы