Актуальная версия v0.1.3a
Экспериментальная версия больше не поддерживается, используйте основную.

Особенности

  • (+) Каскадные тени;
  • (+) Расчёт освещения в линейном пространстве;
  • (+) Physically Based Shading;
  • (+) ACES Tonemapping and Color Grading;
  • (+) Screen Space Reflections;
  • (+) Temporal Anti-Aliasing;
  • (+) Contact Shadows;
  • (+) Поддержка пользовательских шейдеров для пост-эффектов и моделей;
  • (-) Использование моделей из .obj, .3ds, .dae, .blend файлов;
  • (-) Модификация .mdx/.mdl формата моделей: добавление карт нормалей и .dds/.blp2 формата текстур;
  • (-) Модификация War3 Model Editor;
  • (-) Добавление новых возможностей в World Editor.
Баги:
  • Некоторые пост-эффекты работают некорректно при ограниченном viewport.

Скриншоты

Старая версия
Скриншоты





Видео

Установка

Требования:

Распакуйте архив и запустите RenderEdge.exe. Нажмите F7, чтобы показать меню настроек. Изменить настройки также можно в файле RenderEdge.ini (расположен в архиве RenderEdge_exp.mpq).
В редакторе реестра можно включить опцию, позволяющую загружать файл настроек, шейдеры и текстуры из папки с RenderEdge: HKEY_CURRENT_USER\Software\RenderEdge\AllowLocalFiles. Последовательность поиска ресурсов: загруженная карта, папка с RenderEdge, архив RenderEdge_exp.mpq.
Для подключения RenderEdge к Jass New Gen Pack (exp. 2) отредактируйте файл wehack.lua следующим образом:
wehack.lua
-- # begin RenderEdge #
RenderEdgePath = grim.getregpair("HKEY_CURRENT_USER\\Software\\RenderEdge", "InstallPath")
haveRenderEdge = grim.exists(RenderEdgePath .. "\\RenderEdge.exe")

function toggleRenderEdgeDebug(checked)
    if checked then
		grim.setregdword("HKEY_CURRENT_USER\\Software\\RenderEdge", "Debug", 1)
	else
		grim.setregdword("HKEY_CURRENT_USER\\Software\\RenderEdge", "Debug", 0)
	end
end

function toggleRenderEdgeAllowLocalFiles(checked)
    if checked then
		grim.setregdword("HKEY_CURRENT_USER\\Software\\RenderEdge", "AllowLocalFiles", 1)
	else
		grim.setregdword("HKEY_CURRENT_USER\\Software\\RenderEdge", "AllowLocalFiles", 0)
	end
end

if haveRenderEdge then
	RenderEdgeMenu = wehack.addmenu("RenderEdge")
	
	RenderEdgeEnabled = TogMenuEntry:New(RenderEdgeMenu, "Run with RenderEdge", nil, true)
	
	RenderEdgeDebug = TogMenuEntry:New(RenderEdgeMenu, "Debug Mode", 
	    function(self) toggleRenderEdgeDebug(self.checked) end, false)
	if grim.getregpair("HKEY_CURRENT_USER\\Software\\RenderEdge", "Debug") == 1 then
		wehack.checkmenuentry(RenderEdgeMenu, RenderEdgeDebug, 1)
	else
		wehack.checkmenuentry(RenderEdgeMenu, RenderEdgeDebug, 0)
	end
	
	RenderEdgeAllowLocalFiles = TogMenuEntry:New(RenderEdgeMenu, "Allow Local Files", 
	    function(self) toggleRenderEdgeAllowLocalFiles(self.checked) end, false)
	if grim.getregpair("HKEY_CURRENT_USER\\Software\\RenderEdge", "AllowLocalFiles") == 1 then
		wehack.checkmenuentry(RenderEdgeMenu, RenderEdgeAllowLocalFiles, 1)
	else
		wehack.checkmenuentry(RenderEdgeMenu, RenderEdgeAllowLocalFiles, 0)
	end
end
-- # end RenderEdge #

function testmap(cmdline)
	if haveRenderEdge and RenderEdgeEnabled.checked then
		local pos = string.find(cmdline, ".exe")
		cmdline = string.sub(cmdline, 5 + pos)
		cmdline = RenderEdgePath .. "RenderEdge.exe " .. cmdline
	end
	
	if wh_opengl.checked then
		cmdline = cmdline .. " -opengl"
	end
	if wh_window.checked then
		cmdline = cmdline .. " -window"
	end
	wehack.execprocess(cmdline)
end

Редактирование шейдеров

Если вы хотите отредактировать шейдеры, то скачайте архив, распакуйте шейдеры, скомпилируйте и поместите их в папку Shaders. Эту папку вы можете импортировать в карту, разместить в папке RenderEdge или в архиве RenderEdge_exp.mpq.
Скачать шейдеры и fxc.exe.

Компиляция из Visual Studio

Добавьте шейдеры в проект, в его свойствах настройте HLSL Compiler следующим образом:






Компиляция с помощью fxc.exe

@echo off
fxc.exe /T fx_2_0 /Fo Standard.cso Shaders\Standard.fx /nologo
fxc.exe /T fx_2_0 /Fo Shadows.cso Shaders\Shadows.fx /nologo
fxc.exe /T fx_2_0 /Fo PostProcess.cso Shaders\PostProcess.fx /nologo
fxc.exe /T fx_2_0 /Fo Skybox.cso Shaders\Skybox.fx /nologo
pause

Изменения

Следите за разработкой RenderEdge на Trello.
v0.1.3a
  * Добавлена возможность включать/отключать рендеринг различных типов объектов;
  * Добавлена поддержка Индикаторов;
  * Добавлена поддержка Occlusion Mask;
  * Добавлена поддержка Молний;
  * Добавлена поддержка Плавающего текста;
  * Добавлена возможность выбора единиц измерения интенсивности точечных источников света;
  * Добавлены настройки Тумана войны;
  * Добавлена возможность отключать стандартные тени зданий;
  * INIReader: добавлена возможность записи комментариев в одной строке со значением типа string;
  * INIReader: добавлена возможность скрыть игровой интерфейс;
  * Удалены пределы свободной камеры движения;
  * Tonemapper: Blue Correction, Expand Gamut;
  * Изменена интенсивность Bloom на более корректную;
  * Добавлен параметр Calibration Constant для Auto Exposure;
  * Добавлен новый Height Based туман;
  * Сохранение положения камеры после отключения режима Free Camera;
  * Улучшен Screen Space Reflections;
  * Параметр Default Projection Matrix переименован в Constant Vertical FoV;
  * Оптимизирован Auto Exposure;
  * Добавлена возможность приостановить игру (приводит к дисконекту при включении в игре по сети);
  * Улучшена блокировка ввода в режиме Free Camera;
  * Добавлена возможность сделать скриншот;
  * Изменена модель освещения при включенном PBS (может быть изменена обратно в следующей версии);
  * Исправлена ошибка, при которой один из чанков ландшафта не отбрасывал тени;
  * Исправлены некорректный цвет и интенсивность точечных и направленных источников света;
  * Исправлено освещение скайбокса;
  * Исправлен некорректный перехват параметров камеры с нестандартной ближней плоскостью отсечения;
  * Исправлена некорректная работа Contact Shadows с нестандартными плоскостями отсечения камеры;
  * Исправлен эффект параметра Unshaded Materials;
  * Исправлен рендеринг пост-эффектов в главном меню;
  * Исправлено влияние пользовательского интерфейса и направления камеры на Contact Shadows;
  * Исправлено появление черных рамок при отключении параметра User Interface, если они изначально были скрыты;
  * Исправлена работа Screen Space Reflections с включенным Temporal AA;
  * Исправлены графические артефакты при включении и выключении HDR;
  * Исправлена матрица проекции;
  * Исправлено некорректное размытие SSAO с включенным параметром Downsampling
  * Исправлены вылеты при переключении режима V-Sync;
  * Исправлена перезагрузка шейдеров и настроек при загрузке защищенных карт;
  * Исправлен рендеринг теней в главном меню;
  * Исправлена утечка памяти;
  * Исправлены вылеты при смене разрешения экрана;
  * Исправлены вылеты при воспроизведении роликов;
  * Исправлена загрузка ресурсов из RenderEdge_exp.mpq;
  * Исправлены неправильные пути текстур в RenderEdge.ini.

v0.1.2a
  * Добавлена возможность выбора температуры направленного источника света;
  * Добавлена обработка стандартных теней юнитов на воде;
  * Добавлена возможность выбрать единицу измерения интенсивности точечных источников света;
  * Добавлена возможность использовать улучшенную матрицу проекции;
  * Добавлена возможность загрузки текстур и шейдеров из папки с RenderEdge (AllowLocalFiles в реестре);
  * Добавлена возможность загрузки шейдеров из карты;
  * Добавлена опция, позволяющая исправить дрожание скайбокса при перемещении камеры;
  * Чтение настроек из RenderEdge.ini (поиск файла в карте, в папке с RenderEdge (при включенном AllowLocalFiles), в .mpq архивах);
  * Теперь опция Disable Unit Shadows отключает тени юнитов и на земле, и на воде;
  * Уменьшено потребление оперативной памяти при использовании каскадных теней;
  * Снято ограничение на количество объектов, способных одновременно откидывать тени;
  * Улучшено качество теней;
  * Улучшен интерфейс настроек;
  * Улучшен режим свободной камеры: камера от первого лица, нет зависимости от высоты ландшафта;
  * Отключены мягкие тени (можно включить, отредактировав шейдер ShadowCommon.fxh);
  * Тени не рендерятся если игра на паузе;
  * Отображение версии RenderEdge в главном меню игры в правом нижнем углу;
  * Оптимизация Debug Screen;
  * Исправлен баг: модель основания здания имела освещение юнитов вместо ландшафта, и откидывала тени;
  * Исправлена некорректная интенсивность точечных источников света;
  * Игра больше не вылетает при использовании теней;
  * Исправлено периодическое исчезание теней при перемещении и вращении камеры;
  * Тени ландшафта снова работают корректно.

v0.1.1a
  * Добавлены контактные тени (Screen Space Ray-Traced Shadows);
  * Добавлена поддержка погодных эффектов;
  * Добавлен туман для скайбокса;
  * Улучшен Color Grading: добавлена отдельная настройка Shadows, Midtones и Highlights;
  * Добавлена возможность вручную задать гамму монитора: Output Device -  Explicit gamma mapping (LDR);
  * Добавлена возможность выбрать размер текстуры теней;
  * Добавлены расширенные настройки Ambient Occlusion;
  * Добавлена возможность скрыть интерфейс, отключить туман войны и тени юнитов в режиме Default Renderer;
  * Улучшен режим Debug Screen: отображение на весь экран;
  * Оптимизация Auto Exposure;
  * Оптимизация Rendering Pipeline;
  * Добавлены описания exe и dll файлов;
  * Исправлен баг: модели зданий при выборе места строительства не обрабатываются;
  * Исправлена некорректная работа Auto Exposure при ограниченном viewport;
  * Исправлена некорректная работа SSR при включенном Temporal AA;
  * Исправлена некорректная работа пост-эффектов при нестандартных настройках плоскостей отсечения камеры;
  * Исправлено влияние режима свободной камеры на отображение портрета;
  * Исправлено некорректное размытие SSAO при включённом downsampling;
  * Исправлены баги в JassAPI (конвертация real <=> float);
  * Исправлен сдвиг камеры при включении режима свободной камеры;
  * Исправлено влияние высоты ландшафта на высоту свободной камеры.

v0.1.0a
  * Добавлена поддержка анимированных текстур;
  * Добавлена поддержка полупрозрачных моделей;
  * Добавлена поддержка Unshaded материалов;
  * Добавлена поддержка Vertex Color;
  * Добавлена поддержка освещения скайбокса;
  * Добавлена поддержка текстур, размер которых не кратнен степени 2;
  * Улучшена функция скрытия интерфейса;
  * Улучшен Sky Light: добавлен параметр Blend Factor;
  * Улучшен Debug Point Light: добавлена возможность вручную задать координаты;
  * Улучшен Image Based Lighting;
  * Использование пиксельных отражений;
  * Добавлен параметр Culling Mode для теней;
  * Добавлена возможность выбрать формат и цветовое пространство монитора;
  * Добавлен Temporal Anti-Aliasing;
  * Добавлен эффект Screen Space Reflections;
  * Добавлен эффект Auto Exposure (UE4);
  * Улучшен Chromatic Aberration;
  * Обновлён SSAO: заменён на Scalable Ambient Obscurance;
  * Улучшен Bloom (увеличен максимальный радиус, добавлена возможность растянуть по   * горизонтали или вертикали);
  * Сохранение пропорций Lens Dirt текстуры при любом соотношении сторон экрана;
  * Сглаживание теперь применяется до остальных пост-эффектов;
  * Оптимизация Color Grading (запекание в LUT текстуру);
  * Отображение пост-эффектов только в пределах viewport;
  * Убрана возможность использовать Irradiance текстуру в качестве источника ambient освещения;
  * Убрана возможность включить улучшенную воду;
  * Загрузка и создание текстур и эффектов только по мере необходимости;
  * Обновлен конвертер d3d8 в d3d9;
  * Исправлен баг, при котором для юнитов и ландшафта использовался один и тот же направленный источник освещения;
  * Исправлены вылеты при рубке деревьев с включенными тенями;
  * Исправлены вылеты при сворачивании игры с включенными тенями;
  * Исправлены вылеты при включении режима свободной камеры;
  * Исправлены вылеты при установке маленького радиуса в эффекте Bloom;
  * Исправлено сворачивание запущенной в полноэкранном режиме игры при переключении режима вертикальной синхронизации;
  * Исправлено растягивание экрана при включенном интерфейсе и тенях;
  * Исправлена утечка памяти при включенном интерфейсе и пост эффектах;
  * Исправлено некорректное отображение SSAO при включённом режиме свободной камеры;
  * Исправлена функция проекции SSAO и SSR текстур на экран;
  * Исправлена некорректная гамма коррекция скайбокса при включенной пост-обработке;
  * Исправлена некорректная работа Dithering;
  * Исправлен некорректный цвет стандартных точечных источников света;
  * Запрет на отключение интерфейса и включение режима свободной камеры в главном меню игры и во время загрузки карты;
  * Динамическая очистка неиспользуемой памяти, занимаемой тенями;
  * Исправлено некорректное значение параметров Height и Density при использовании тумана;
  * Исправлена загрузка текстур из .mpq архивов;
  * Исправлена некорректная яркость точечных источников света.

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

v0.0.1a
  * Первая стабильная сборка.
`
ОЖИДАНИЕ РЕКЛАМЫ...
19
И так, пару замечаний, кои оформить нормально я не могу, потому что я навключал всего подряд для проверки фпс.
На данном скрине не видно, но атака сфинкса молнией вокруг "квадратна". Я не успеваю заскринить этот момент.
раскрыть
Далее из мелких раздражающих нюансов.
Цветофильтры не обрабатываются у ещё не созданных игроком объектов (когда мышкой выбираешь на каком месте будет стоять здание здание), а так же в некоторых анимациях у юнитов или при клике на юнита (например у древа ветров)
Не работают пост эффекты на миникарту и иной интерфейс, а хотелось бы. Или хотя бы на лицевую-модель юнита.
Не отказался бы от краткого тз или описания программного продукта, дабы знать несведующему что за что отвечает, и что я должен увидеть, после того как кликну какую-нибудь кнопку.
Что касательно самого главного что я проверял - фпс. Стабильные 31-32 чтобы я не делал. Без всех эффектов - 99. Жаль, что в сборке нет фпс-локера.
Системки - 16 гигов оперативы, AMD FX - 8320 8 ядерный, GTX 650 на 2 гига. Монитор - говно.
В общем и целом, если мелкие вышеописанные визуальные баги будут устранены, можно уже пиарить в масс медиа с помощью ютуберов с 30к подписчиками.
А, все, господа. Я понял о каком фпсе вы говорите.
раскрыть
Загруженные файлы
13
атака сфинкса молнией вокруг "квадратна"
Это из-за того, что включен Physically Based Shading, а оригинальные материалы моделей варкрафта не затачивались под него. К тому же модель атаки сфинкса не является unshaded (хотя, логичнее было бы, если являлась), поэтому и наблюдаются такие артефакты.
DemonoiD:
Цветофильтры не обрабатываются у ещё не созданных игроком объектов
Спасибо за выявление бага, исправил.
DemonoiD:
а так же в некоторых анимациях у юнитов или при клике на юнита (например у древа ветров)
Можно больше примеров, желательно со скриншотами? У меня всё в порядке, в том числе и с Древом Ветров.
DemonoiD:
Не работают пост эффекты на миникарту и иной интерфейс, а хотелось бы. Или хотя бы на лицевую-модель юнита.
Это сделано специально. Зачем применять пост-эффекты к интерфейсу? Это смотрится отвратительно:
Скриншот
Про портрет я ещё подумаю, но, скорее всего, оставлю как есть.
DemonoiD:
А, все, господа. Я понял о каком фпсе вы говорите.
Тени лучше не использовать на сценах с большим количеством объектов, так как они жрут очень много оперативки и фпс.
DemonoiD:
Не отказался бы от краткого тз или описания программного продукта, дабы знать несведующему что за что отвечает, и что я должен увидеть, после того как кликну какую-нибудь кнопку.
Позже добавлю всплывающие подсказки при наведении на кнопки.

WIP: Contact Shadows

На примере карты Долина призыва дождя
Контактные тени вычисляются в экранном пространстве и позволяют получить чёткие тени даже от самых маленьких объектов. Производительность не зависит от сложности сцены.
Но на данный момент присутствует одна проблема, не позволяющая мне включить их в новую версию RenderEdge.
P.S. Следите за разработкой RenderEdge на Trello.
19
ENAleksey, ну смотри. В gad, все объекты сцены - декорации. По факту, анимированных теней там совсем немного, 10-15 юнитов на всю карту. Возможно, стоит разделить потенциально анимированные и статические тени, дабы рассчитывать статику большим промежутком времени, понижая нагрузку на частоту кадров, и дать время обновления под управление пользователю.
При наличии огромного числа анимированных теней, можно просто снижать их качество. Так же как делают с текстурами в любой современной игре.
Ещё один из забавных багов. Управляя камерой стрелочками в war3, я получил теоретическую карту расчитываемых теней в углу экрана.
раскрыть
Вот здесь ещё лучше видна данная забавная штуковина.
раскрыть
Загруженные файлы
13
DemonoiD, узнать, является ли модель анимированной, не получится. Если обновлять тени через определенный промежуток времени, то это будет очень заметно. Тени можно не обновлять только если камера и направление источника света статичны, и объекты в кадре тоже не движутся (а узнать, двигаются они или нет, невозможно).
А про низкий фпс я писал в начале предыдущей страницы.
DemonoiD:
Ещё один из забавных багов
Это не баг, а средство для отладки - Debug Screen (этот параметр виден на твоих скринах). Ты случайно включил его, управляя интерфейсом с помощью стрелочек.
DemonoiD, пожалуйста, прячь большие картинки под спойлер.
19
Баг с подсветкой повторить не удалось. Зато я нашел шедевральный рисованный стиль.
С такой стилистикой, но если изменить голубой на черный, черный на белый и добавить какой-то яркий цвет от эффектов типа синего или красного, можно создавать карты про слепых персонажей (и в будущем игроков, играющих с такой цветокорекцией)
раскрыть
ENAleksey,
Возможно ли при включении теней в RE, выключать автоматически стандартные тени war3?
Возможно ли при огромном количестве объектов сцены, убирать с просчета лишние тени по приоритету? (Зачем мне тень маленьких светлячков древа долголетия, если все лагает?)
(а узнать, двигаются они или нет, невозможно).
Теоретически это можно просчитать по % от изменения площади тени между промежутком времени. Но чую, что это будет жрать ещё больше памяти, чем сейчас.
Загруженные файлы
13
Возможно ли при включении теней в RE, выключать автоматически стандартные тени war3?
Disable Unit Shadows - отключает стандартные тени юнитов.
Disable Fog of War - отключает стандартные тени зданий, но ещё и туман войны. Отключить только тени пока нельзя.
15
С такой стилистикой, но если изменить голубой на черный, черный на белый и добавить какой-то яркий цвет от эффектов типа синего или красного, можно создавать карты про слепых персонажей (и в будущем игроков, играющих с такой цветокорекцией)
Обычные пост эффекты и шейдеры типо cel shading и rim light, которые доступны в юне или анриле, зачем изобретать велик на варике?
3
Очень круто выглядит, жаль что для версии 1.26, а то использую 1.28.5
19
DrTema, у меня вроде на более поздней пашет. Я честно не помню версию.
AlakFrost, потому что это на варике. Это же очевидно.
13
Кст., вижу не только у меня проблемы с камерой.
она ведёт себя неадекватно если бродить по горам. Ну или я что-то ещё не так установил.
Лучше поздно, чем никогда :)
Вот функция, которая исправляет зависимость высоты камеры от высоты ландшафта:
function SetCameraZ takes real z, real time returns nothing
	local real zDiff = GetCameraField(CAMERA_FIELD_ZOFFSET) - GetCameraTargetPositionZ()
	call SetCameraField(CAMERA_FIELD_ZOFFSET, z + zDiff, time)
endfunction
13

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

Улучшения

  • Добавлены контактные тени (Screen Space Ray-Traced Shadows);
  • Добавлена поддержка погодных эффектов;
  • Добавлен туман для скайбокса;
  • Улучшен Color Grading: добавлена отдельная настройка Shadows, Midtones и Highlights;
  • Добавлена возможность вручную задать гамму монитора: Output Device - Explicit gamma mapping (LDR);
  • Добавлена возможность выбрать размер текстуры теней;
  • Добавлены расширенные настройки Ambient Occlusion;
  • Добавлена возможность скрыть интерфейс, отключить туман войны и тени юнитов в режиме Default Renderer;
  • Улучшен режим Debug Screen: отображение на весь экран;
  • Оптимизация Auto Exposure;
  • Оптимизация Rendering Pipeline;
  • Добавлены описания exe и dll файлов.

Исправления

  • Исправлен баг: модели зданий при выборе места строительства не обрабатываются;
  • Исправлена некорректная работа Auto Exposure при ограниченном viewport;
  • Исправлена некорректная работа SSR при включенном Temporal AA;
  • Исправлена некорректная работа пост-эффектов при нестандартных настройках плоскостей отсечения камеры;
  • Исправлено влияние режима свободной камеры на отображение портрета;
  • Исправлено некорректное размытие SSAO при включённом downsampling;
  • Исправлены баги в JassAPI (конвертация real <=> float);
  • Исправлен сдвиг камеры при включении режима свободной камеры;
  • Исправлено влияние высоты ландшафта на высоту свободной камеры.

Contact Shadows

Контактные тени вычисляются в экранном пространстве и позволяют получить чёткие тени даже от самых маленьких объектов. Производительность не зависит от сложности сцены.
Но на данный момент присутствует серьёзная проблема - направление, в котором объекты отбрасывают тени, зависит от направления взгляда камеры.

Color Grading

Теперь Color Grading и Tonemapping по функционалу полностью аналогичны соответствующим эффектам из Unreal Engine 4:
Color Grading and Filmic Tonemapper
Этот комментарий удален
2
Может глупый вопрос, но как сохранить настройки чтобы при каждом запуске игры не ковырять всё заново?
13
HuNter32R, пока сохранять настройки нельзя, но я обязательно добавлю такую возможность.
21
ENAleksey, 1.29. Не знаю когда выйдет, но это должны пофиксить.
13

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

Улучшения

  • Добавлена возможность выбора температуры направленного источника света;
  • Добавлена обработка стандартных теней юнитов на воде;
  • Добавлена возможность выбрать единицу измерения интенсивности точечных источников света;
  • Добавлена возможность использовать улучшенную матрицу проекции;
  • Добавлена возможность загрузки текстур и шейдеров из папки с RenderEdge (AllowLocalFiles в реестре);
  • Добавлена возможность загрузки шейдеров из карты;
  • Добавлена опция, позволяющая исправить дрожание скайбокса при перемещении камеры;
  • Чтение настроек из RenderEdge.ini (поиск файла в карте, в папке с RenderEdge (при включенном AllowLocalFiles), в .mpq архивах);
  • Теперь опция Disable Unit Shadows отключает тени юнитов и на земле, и на воде;
  • Уменьшено потребление оперативной памяти при использовании каскадных теней;
  • Снято ограничение на количество объектов, способных одновременно откидывать тени;
  • Улучшено качество теней;
  • Улучшен интерфейс настроек;
  • Улучшен режим свободной камеры: камера от первого лица, нет зависимости от высоты ландшафта;
  • Отключены мягкие тени (можно включить, отредактировав шейдер ShadowCommon.fxh);
  • Тени не рендерятся если игра на паузе;
  • Отображение версии RenderEdge в главном меню игры в правом нижнем углу;
  • Оптимизация Debug Screen.

Исправления

  • Исправлен баг: модель основания здания имела освещение юнитов вместо ландшафта, и откидывала тени;
  • Исправлена некорректная интенсивность точечных источников света;
  • Игра больше не вылетает при использовании теней;
  • Исправлено периодическое исчезание теней при перемещении и вращении камеры;
  • Тени ландшафта снова работают корректно.

Каскадные тени

Исправлено множество проблем с тенями: теперь они используют гораздо меньше оперативной памяти, следовательно игра больше не вылетает; сняты ограничение на 2048 объектов, способных одновременно откидывать тени; исправлен баг с периодическим исчезновением некоторых теней при движении камеры. FPS по идее тоже должен был увеличиться, однако, он всё-равно достаточно низкий.
На данном скриншоте в кадре одновременно находятся ~5500 объектов, без теней используется 170 MB, с тенями - 210 MB (в предыдущих версиях игра бы просто вылетела):

Чтение настроек из файла

Добавлена возможность чтения настроек из файла RenderEdge.ini, он находится в архиве RenderEdge_exp.mpq. Его можно также импортировать в свою карту.
Не пишите комментарии в одной строке с полями, где указываются логические переменные и пути к текстурам, так как информация о них не будет получаться корректно!

Использование пользовательских шейдеров и текстур

Теперь можно редактировать стандартные шейдеры, всего их 4: Standard.fx, Shadows.fx, PostProcess.fx и Skybox.fx. Для возможности загрузки модом, их нужно нужно скомпилировать с помощью FXC в формат .cso. Шейдеры должны находиться в папке Shaders.
В редакторе реестра можно включить опцию AllowLocalFiles, после этого файл настроек, шейдеры и текстуры будут искаться в папке с RenderEdge. Последовательность поиска ресурсов: загруженная карта, папка с RenderEdge, архив RenderEdge_exp.mpq.

Режим свободной камеры

Теперь она полностью от первого лица, то есть при передвижении меняются координаты самой камеры, а не её цели, а высота ландшафта больше не влияет на высоту камеры. Позже будут добавлены нативные функции для отдельного для редактирования глаза и цели камеры.

Меню настроек

По умолчанию оно выключено и включается при нажатии клавиши F7. Включено меню изначально или нет, а также горячую клавишу, можно изменить в RenderEdge.ini:
[Engine]
bShowInterface = false

[Hotkeys]
ShowInterface = 0x76
Загруженные файлы
21
ENAleksey, ятп. камера пофикшена с помощью нативных функций?
13
Raised, нет, я перехватываю функцию, в которой строятся матрицы вида и проекции, и до её вызова редактирую параметры игровой камеры:
Пока делаю так:
uintptr_t address_InitViewProjectionMatrices = 0x4E6C80;
int __fastcall InitViewProjectionMatrices_proxy(uint32 pCamera, int unused, uint32 pRect, int a4)
{
	if (FreeCamera && FreeCamera->GetActive())
	{
		uint32 pGameUI = GetGameUI(0, 0);
		if (pGameUI)
		{
			uint32 pWorldFrame = *((uint32*)pGameUI + 239);
			uint32 pGameCamera = *((uint32*)pWorldFrame + 80);

			if (pCamera == pGameCamera)
			{
				*(float*)(pGameCamera + 60) = FreeCamera->GetEyePosition().x;
				*(float*)(pGameCamera + 64) = FreeCamera->GetEyePosition().y;
				*(float*)(pGameCamera + 68) = FreeCamera->GetEyePosition().z;

				*(float*)(pGameCamera + 100) = FreeCamera->GetTargetPosition().x;
				*(float*)(pGameCamera + 104) = FreeCamera->GetTargetPosition().y;
				*(float*)(pGameCamera + 108) = FreeCamera->GetTargetPosition().z;
			}
		}
	}

	return fast_call<int>(address_InitViewProjectionMatrices, pCamera, unused, pRect, a4);
}
С помощью нативный функций можно изменить только координаты цели камеры.
21

Есть предложение

  • Сделать возможность свободно крутить-вертеть камеру как в других играх.
  • Уменьшить минимальный view distance до 1 (убрать внутренние проверки внутри функции). Сейчас минимум - 100.

Еще вопрос. RE совместима с последними апдейтами игры?
13
Сделать возможность свободно крутить-вертеть камеру как в других играх.
Я вряд ли это сделаю, так как кому-то это будет даже мешать. А вот создатели карт смогу сделать это самостоятельно с помощью новых нативных функций, которые уже присутствуют в основной версии и в версии Memory Hack.
Вот демонстрация такой камеры: www.youtube.com/watch?v=Ux_rlNzkcTI
Уменьшить минимальный view distance до 1 (убрать внутренние проверки внутри функции). Сейчас минимум - 100.
Я делал это в одном из предыдущих обновлений, но от этой идеи пришлось на время отказаться, так как были некоторые проблемы. Позже я попробую нормально реализовать это. У пользователей и так появится возможность избавиться от данного ограничения, после того, как я добавлю нативные функции, которые я упомянул в предыдущем комментарии, однако, при этом придётся писать систему управления камерой с нуля.
29
Не думаю что там внутренние проверки, скорее в матрице проекции zNear стоит 100
13
Doc, нет, Raised имел ввиду ограничение функции SetCameraField(CAMERA_FIELD_DISTANCE, ...), в ней минимальное значение - 100.0 (расстояние от цели до глаза камеры).

Еще вопрос. RE совместима с последними апдейтами игры?
Нет, только с версией 1.26a, поддержку новых патчей добавлять не буду.

Только что исправил проблему с контактными тенями, при которой угол падения теней зависел от направления камеры. Завтра обновлю.

Нет, всё-таки там ещё есть над чем поработать, поэтому фикс контактных теней придётся отложить до версии 0.1.3a
13

Компиляция шейдеров

Из Visual Studio

Добавьте шейдеры в проект, в его свойствах настройте HLSL Compiler следующим образом:






С помощью fxc.exe

@echo off
fxc.exe /T fx_2_0 /Fo Standard.cso Shaders\Standard.fx /nologo
fxc.exe /T fx_2_0 /Fo Shadows.cso Shaders\Shadows.fx /nologo
fxc.exe /T fx_2_0 /Fo PostProcess.cso Shaders\PostProcess.fx /nologo
fxc.exe /T fx_2_0 /Fo Skybox.cso Shaders\Skybox.fx /nologo
pause
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.