ENAleksey #1 - 2 дня назад 0

» RenderEdge / [RenderEdge] Widescreen Fix

Обновление:
  • Добавлена поддержка патча 1.28.4;
ENAleksey #2 - 2 дня назад 0

» WarCraft 3 / Патч 1.28.2

quq_CCCP, самое главное изменение - снизили задержку между приказами с 250 миллисекунд до 100.
ENAleksey #3 - 2 дня назад (отредактировано ) 0
ENAleksey #4 - 3 дня назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

Обновление 0.2.1b

Если вы устанавливали предыдущие версии RenderEdge, то перед запуском обязательно удалите данный раздел в редакторе реестра: HKEY_CURRENT_USER\Software\RenderEdge
  • Исправлены вылеты при вызове функций CtrlSetText, CtrlSetTexture и GUISetFont (проблема с конвертацией UTF-8 в ASCII);
  • Удалено нестабильное нововведение из предыдущей версии: "Убрано стандартное ограничение минимальной дистанции камеры до цели";
  • Обновлён FreeType до версии 2.8;
  • Обновлён RenderEdge_loader.dll. Теперь он ищет RenderEdge_exp.dll, если не нашёл, то запускает RenderEdge.dll;
  • Оптимизация GUI системы;
  • Оптимизация Widescreen fix;
  • Оптимизация debug log. Система отладки переписана с нуля.
прикреплены файлы
ENAleksey #5 - 3 дня назад 0

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

Сколько объектов в кадре, сколько памяти используется?
Попробуй ещё выключить Туман Войны и стандартное освещение на вкладках Directional Light и Sky Light (Default Color, Default Direction).
ENAleksey #6 - 4 дня назад 0

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

Xin, что включено? Тени, пост-эффекты, IBL, PBS? Сколько объектов в кадре, сколько памяти используется?
Попробуй ещё выключить Туман Войны и стандартное освещение на вкладках Directional Light и Sky Light (Default Color, Default Direction).
прикреплены файлы
ENAleksey #7 - 4 дня назад (отредактировано ) 0

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

EfReeZe, это AntTweakBar так работает с дискретной видеокартой. У меня были такие же лаги при движении курсора, когда я случайно сбросил настройки BIOS, тем самым включив дискретную видеокарту Intel HD Graphics 4000. От этой проблемы я избавлюсь только после того, как перенесу весь функционал экспериментальной версии RenderEdge в основную, то есть откажусь от пользовательского интерфейса AntTweakBar. А пока можно просто нажать на F9, чтобы отключить AntTweakBar.

Xin, Narkranoth, пока тени жрут очень много памяти, при этом игра может вылететь при превышения определённого лимита (у меня это 2000 Мб). На данный момент для каждого объекта на сцене создаётся свои буферы вершин и индексов, они и занимают всё это место в памяти. Я так делаю из-за того, что у меня нет прямого доступа к информации об объектах на сцене, но я пытаю оптимизировать процесс перехвата данной информации. По-хорошему нужно создать только один буфер вершин и один буфер индексов, чтобы хранить в них всех юнитов, но пока у меня ничего не получается.
Также на производительность влияет и то, что я рендерю каждый объект по отдельности, то есть делаю что-то вроде этого:
for each (MESH mesh in allMeshes)
{
	g_pStandardFX->Begin();
	mesh->Render();
	g_pStandardFX->End();
}
А надо так:
g_pStandardFX->Begin();
for each (MESH mesh in allMeshes)
{
	mesh->Render();
}
g_pStandardFX->End();
И всё это из-за той же самой проблемы: "у меня нет прямого доступа к информации об объектах на сцене".
В общем, мне очень нужна помощь людей, которые разбираются в reverse engineering'е динамических библиотек. Всё, что мне нужно на данный момент - найти в game.dll структуру игровых объектов, это решит все проблемы, которые имеются на данный момент.

Xin, на какой карте происходят сильные лаги, сколько объектов находится в кадре? У меня мобильная видеокарта NVS 5200M, но на карте, которую я приложил к экспериментальной версии, выдаёт 100 FPS с включенными тенями.
ENAleksey #8 - 5 дней назад (отредактировано ) 0

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

PrincePhoenix, спасибо, конечно, но я не очень нуждаюсь в пожертвованиях. Публиковать кошелёк не буду, но если очень хочется поддержать, то лучше написать мне в ЛС.
ENAleksey #9 - 5 дней назад (отредактировано ) 15
ENAleksey #10 - 6 дней назад (отредактировано ) 0

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

Кристофер, ещё планирую сделать туман пост-эффектом. Это позволит сделать плавный переход от земли к небу, так как на данный момент туман выглядит так:
ENAleksey #11 - 1 неделю назад 12
ENAleksey #12 - 1 неделю назад (отредактировано ) 2

» WarCraft 3 / Как реализовать адекватный рикошет от клифов?

Самое главное - получить нормаль, вот некоторые функции, которые тебе пригодятся:
float3 GetNormal(float3 a, float3 b, float3 c)
{
	float wrki;
	float3 v1 = float3.create();
	float3 v2 = float3.create();
	float3 normal = float3.create();

	v1.x = a.x - b.x;
	v1.y = a.y - b.y;
	v1.z = a.z - b.z;

	v2.x = b.x - c.x;
	v2.y = b.y - c.y;
	v2.z = b.z - c.z;

	wrki = SquareRoot(sqr(v1.y * v2.z - v1.z * v2.y) + sqr(v1.z * v2.x - v1.x * v2.z) + sqr(v1.x * v2.y - v1.y * v2.x));
	normal.x = (v1.y * v2.z - v1.z * v2.y) / wrki;
	normal.y = (v1.z * v2.x - v1.x * v2.z) / wrki;
	normal.z = (v1.x * v2.y - v1.y * v2.x) / wrki;

	return normal;
}

float DotProduct(float3 v1, float3 v2)
{
	return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
}

float3 Reflect(float3 ray, float3 normal)
{
	return -2 * DotProduct(ray, normal) * normal + ray;
}
Далее в функции движения снаряда определяем столкновение с землёй, получаем нормаль и строим вектор отражения по данной нормали и текущей скорости снаряда:
float3 v1 = float3.New(curPos.x+2, curPos.y+2, GetTerrainZ(curPos.x+2, curPos.y+2));
float3 v2 = float3.New(curPos.x+2, curPos.y, GetTerrainZ(curPos.x+2, curPos.y));
float3 v3 = float3.New(curPos.x, curPos.y+2, GetTerrainZ(curPos.x, curPos.y+2));
float3 normal = GetNormal(v1, v2, v3);

float3 reflect = Reflect(curVelocity, normal);
ENAleksey #13 - 1 неделю назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Widescreen Fix

Кто-нибудь может скинуть game.dll из патча 1.28.1, чтобы я смог добавить его поддержку?

Обновлнение:
  • Добавлена поддержка патча 1.28.2.

Обновлнение:
  • Полоски здоровья больше не растягиваются на патчах 1.24e и 1.26a.
прикреплены файлы
ENAleksey #14 - 2 недели назад (отредактировано ) 17

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

Melissa, нужно просто покапаться в настройках теней, например увеличить дальность прорисовки и установить угол обзора на 70 градусов.

Обновление v0.0.2a

  • Новый пост-эффект Bloom;
  • Добавлены настройки Lens Dirt;
  • Добавлена возможно протестировать самосветящиеся материалы (см. вкладку Material);
  • Unshaded материалы выключены по умолчанию, их можно включить на вкладке Material;
  • Исправлены проблемы с конвертацией цвета стандартных источников света/тумана в линейное пространство;
  • Исправлена проблема, при которой нельзя было менять освещение в картах, где была вызваны функция SetDayNightModels("", "");
  • Добавлен счётчик памяти, используемой варкрафтом;
  • Debug Screens теперь работают.
прикреплены файлы
ENAleksey #15 - 2 недели назад (отредактировано ) 3

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

Melissa:
Хмм, а можно как-то пофиксить портреты? У меня пропадают все синематик-рамки, а портреты юнитов либо вообще не отображаются либо отображаются частично?
Можно, конечно, когда-нибудь этим займусь. Данная проблема возникла из-за того, что я убрал чёрные полосы сверху и снизу, для её исправления нужно заставить портреты рисоваться после всех остальных объектов.

Кстати, только что реализовал улучшенный Bloom эффект из Unity 5.6:
Завтра выложу новую версию.
Изначально хотел взять реализацию из Unreal Engine 4, но Bloom из Unity, возможно, даже лучше.
прикреплены файлы
ENAleksey #16 - 2 недели назад (отредактировано ) 2

» WarCraft 3 / Хак на память Warcraft3

Bornikkeny, разницы нет, но лучше переименовать mix в dll, чтобы после экспорта в папку с варкрафтом mix не загружался сам.
ENAleksey #17 - 2 недели назад 0

» WarCraft 3 / Хак на память Warcraft3

Bornikkeny, да, вроде, не особо сложно, нужно всего-лишь одну функцию написать:
function InjectDLL takes string name returns nothing
    if FileExists(name) then
        if GetModuleHandle(name) == 0 then
            call LoadLibrary(name)
        endif
    else
        if (not ExportFileFromMpq(name, name)) then
            call BJDebugMsg("|c00ff0000Error! ExportFileFromMpq:|r " + name)
        endif
        if (LoadLibrary(name) == 0) then
            call BJDebugMsg("|c00ff0000Error! LoadLibrary:|r " + name)
        endif
    endif
endfunction
ENAleksey #18 - 2 недели назад 2

» WarCraft 3 / Хак на память Warcraft3

Bornikkeny, посмотри, как я делал:
ENAleksey:
awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.

Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
ENAleksey #19 - 2 недели назад 0

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

Кет, из-за текстур и параметров roughness и metallic по умолчанию. В RenderEdge используется физически корректное освещение, поэтому можно сделать любой материал: хоть пластик, хоть дерево, хоть металл, главное - правильно настроить.
Можете просто скачать и посмотреть на освещение в действии: включать-выключать отражения, изменять параметры материалов.
ENAleksey #20 - 2 недели назад (отредактировано ) 2

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

ENAleksey, можно, плиз, инструкцию по установке? Фаталит при запуске (из реестра папку RenderEdge удалил).
Исправил. Проблема была в том, что видеокарта не поддерживала INTZ формат текстур. Если видеокарта не поддерживает данный формат текстур, то будет использоваться RAWZ.
ENAleksey #21 - 2 недели назад 0

» RenderEdge / [RenderEdge] Основная версия

Xin, я и говорю, что пока никак) Для всех объектов используется одна и та же текстура нормалей, я пока не могу различать объекты/модели.
Хотя я могу отличить только юнитов от ландшафта, а на самом ланде не могу определить какой тайл сейчас используется.
ENAleksey #22 - 2 недели назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

Xin, с выключенными пост-эффектами, точечными источниками света и включенными тенями выдаёт 100 фпс на моём слабом ноутбуке.
Xin, Кристофер, никакких швов на ландшафте не будет, если карты нормалей делать тайлящимися. В данном примере я использовал одну текстуру с нормалями для всех объектов:
DemonoiD, всё это настраивается, правда, на данный момент только для всех объектов одновременно, без индивидуальной настройки. Это будет реализовано после того, как я смогу найти способ записи и чтения кастомной информации в mdx файлах.
прикреплены файлы
ENAleksey #25 - 2 недели назад (отредактировано ) 7

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

Релиз экспериментальной версии 0.0.1a

Особенности:

  • Каскадные тени;
  • Попиксельное освещение;
  • Освещение, основанное на физических законах;
  • Ambient освещение заменено на Sky Light;
  • Burley diffuse модель освещения вместо Lambertian;
  • Все вычисления при работе с освещением и пост-эффектами проводятся в линейном пространстве;
  • ACES Tonemapping and Color Correction;
  • Image Based Lighting;
  • Поддержка карт нормалей;
  • Попиксельный туман: линейный, экспоненциальный, экспоненциальный квадратичный, Height Based;
  • Пост-эффекты: SSAO, SMAA, Film Grain, LUT Color Correction, Auto Exposure, Bloom, Lens Flares;
  • Заменена стандартная вода (пока без отражений и преломлений);
  • Свободная камера.

Исправления оригинальной игры:

  • Скайбокс больше не дёргается при перемещении камеры;
  • Снято ограничение на максимальный FPS:
  • Добавлена возможность отключать вертикальную синхронизацию;
  • Использование техники reversed depth buffer (пока отключено);
  • Возможность понизить значение ближней плоскости отсечения камеры без появления z-fighting артефактов;

Известные проблемы:

  • При рубке деревьев с включенными тенями игра вылетает;
  • Объекты с чёрным цветом материала становятся незатенёнными (пока не нашёл способ определять незатенённые объекты другим способом);
  • Игра может вылетать при включенных тенях, если в кадре находится более 2000 объектов;
  • Игра может начать подтормаживать при отключении теней, если при этом в кадре находится большое количество объектов.

Скачать

Скачать (папку можно разместить в любом месте на диске).
Если вы устанавливали предыдущие версии RenderEdge, то перед запуском обязательно удалите данный раздел в редакторе реестра: HKEY_CURRENT_USER\Software\RenderEdge

Требования:

Скриншоты

Physically Based Lighting

Image Based Lighting

Normal Mapping
прикреплены файлы
ENAleksey #26 - 3 недели назад (отредактировано ) 11

» RenderEdge / [RenderEdge] Основная версия

DemonoiD, спасибо за такие слова. Кстати, экспериментальная версия уже готова, скоро выложу, а пока вот пара скриншотов:
прикреплены файлы
ENAleksey #27 - 1 месяц назад 0

» RenderEdge / [RenderEdge] Widescreen Fix

Была допущена ошибка из-за моей невнимательности, из-за чего фикс не работал на версии 1.27b. Исправлено.
ENAleksey #28 - 1 месяц назад (отредактировано ) 0

» WarCraft 3 / Как отследить что юнит находится на порченной земле?

IsPointBlighted(GetUnitX(u), GetUnitY(u))
А это для создания порчи:
SetBlight(player whichPlayer, real x, real y, real radius, boolean addBlight);
ENAleksey #29 - 2 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Widescreen Fix

Интересуют совместимые с айкапом улучшения. (Fps лимит/графон)
Улучшение графики вообще никак не должно влиять на работоспособность игры по сети (правда этих улучшений пока нет в основной версии). То же самое и со снятием лимита на FPS.
Вот тест игры по локальной сети и со снятием ограничения на FPS (основная версия):
прикреплены файлы
ENAleksey #30 - 2 месяца назад (отредактировано ) 9

» RenderEdge / [RenderEdge] Основная версия

Обновление 0.2.1a

Скачать (карта-пример внутри)
  • Обновлён Widescreen Fix. Вертикальный угол обзора больше не зависит от ширины экрана;
  • Снято ограничение на максимальный FPS, теперь он может подниматься выше 64 с выключенным vsync (спасибо Karaulov'у);
  • Убрано стандартное ограничение минимальной дистанции камеры до цели (было 100.0, теперь можно установить до 0.01);
  • Использование более точного формата буфера глубины, если поддерживается. Используйте SetCameraField(ConvertCameraField(7), value, time), чтобы изменить ближнюю плоскость отсечения камеры (100.0 по умолчанию);
  • Добавлена новая native функция TriggerRegisterFrameUpdateEvent. Триггер срабатывает каждый кадр (задержка меньше 0.001 секунды);
  • Добавлена новая native функция EnableVsync (включено по умолчанию);
  • Добавлены новые native функции GetWindowX и GetWindowY;
  • Добавлены новые native функции GetMouseXRelative и GetMouseYRelative;
  • Функции GetMouseX и GetMouseY теперь возвращают координаты без отсечения границами окна;
  • Изменено название функции FPS на GetFPS;
  • Изменено название функции DeltaTime на GetDeltaTime;
  • Функция GetDeltaTime теперь возвращает секунды вместо миллисекунд;
  • Улучшен debug log. Лог файл очищается при превышении размера в 1 MB.
прикреплены файлы
ENAleksey #31 - 2 месяца назад 1
ENAleksey #32 - 3 месяца назад (отредактировано ) 4

» WarCraft 3 / native DisplayTextToPlayer takes player toPlayer, real x, real y

В варкрафте для отрисовки интерфейса используется система координат с началом в нижнем левом углу, координата X задается в промежутке [0.0; 0.8], Y - [0.0; 0.6].
Хотя нет, я ошибся, там другие границы, лучше самостоятельно проверить, выводя текст с изменением координат при нажатии на стрелочки.
ENAleksey #33 - 3 месяца назад (отредактировано ) 19

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

Work In Progress

  • Фейковое глобальное освещение (вода пока не учитывается):
  • Физически корректный спекуляр:
  • Улучшена техника SSAO, добавлено размытие:
  • Доработан Tone Mapping, добавлены настройки для цветокоррекции:
прикреплены файлы
ENAleksey #34 - 3 месяца назад 0

» WarCraft 3 / Важная информация об обновлении 1.28

Тимур, чтобы разблокировать остальные варианты разрешения экрана, нужно снять галочку с пункта "Фиксированное соотношение сторон" в настройках графики.
ENAleksey #35 - 3 месяца назад 2

» WarCraft 3 / Четное или нечетное

Если ModuloReal(value, 2) == 0, то число чётное.
ENAleksey #36 - 3 месяца назад 0

» RenderEdge / [RenderEdge] Основная версия

Lotus101, привет, я уже скидывал версию на основе Memory Hack с Widescreen Fix:
xgm.guru/p/renderedge/basic?postid=340425#comment157 (в конце комментария)
Скорее всего не будет работать по сети, но зато не надо запускать игру через сторонний лончер.
ENAleksey #37 - 3 месяца назад 0

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

будет ли реализована загрузка шрифтов из импорта самой карты/кампании/архива?
Да, я уже делал это, шрифты загружались, но была одна проблема - стандартный шрифт варкрафта (FRIZQT__.TTF) крашил игру. Данная возможность появится в следующей версии, а пока можно использовать любые шрифты, установленные в системе.
ENAleksey #38 - 3 месяца назад (отредактировано ) 0

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

mishanka122, я думал, что вы имели ввиду тени для полупрозрачных объектов:
К примеру, идет такой юнит, а у него тени нет
Тени можно выключать для каждого отдельного объекта с помощью jass функции.
прикреплены файлы
ENAleksey #39 - 3 месяца назад 0

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

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

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

mishanka122, но для чего это может пригодиться?
ENAleksey #41 - 3 месяца назад (отредактировано ) 0
ENAleksey #42 - 3 месяца назад (отредактировано ) 0

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

alexprey, просто я ещё не реализовал размытие текстуры, всё руки не дойдут до этого.
ENAleksey #43 - 3 месяца назад (отредактировано ) 7

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

DemonoiD, зачем? Так никто не делает, может вы имели ввиду такой эффект?
Screen Space Ambient Occlusion:
прикреплены файлы
ENAleksey #44 - 3 месяца назад (отредактировано ) 0

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

DemonoiD, есть, и очень много, например, геройское свечение, сферы у Келя, вода, основа у лесопилки альянса...
ENAleksey #45 - 3 месяца назад 0

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

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

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

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

» RenderEdge / [RenderEdge] Основная версия

Кристофер, попробуй запустить игру в debug режиме, после этого повтори то, что привело к вылету, и скинь мне файл RenderEdge.log в личку.
ENAleksey #50 - 3 месяца назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

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