Актуальная версия v0.3.0

Особенности

  1. Система отрисовки пользовательского интерфейса:
    • (+) Основная система;
    • (+) Управление при помощи Jass функций;
    • (+) Поддержка многострочного текста с форматированием;
    • (+) Поддержка .ttf формата шрифтов;
  1. Постобработка:
    • (+) HDR Rendering;
    • (+) ACES Tonemapping and Color Grading;
    • (+) Screen Space Reflections;
    • (+) Temporal Anti-Aliasing;
    • (+) Contact Shadows;
    • (+) Поддержка пользовательских шейдеров;
    • (-) Управление при помощи Jass функций;
  1. Улучшенное освещение:
    • (+) Каскадные тени;
    • (+) Расчёт освещения в линейном пространстве;
    • (+) Physically Based Shading;
    • (+) Поддержка пользовательских шейдеров;
    • (+) Поддержка карт нормалей;
    • (-) Управление при помощи Jass функций;
  1. Прочее:
    • (+) Переход с Direct3D8 на Direct3D9;
    • (+) Поддержка широкоформатных мониторов;
    • (+) Уменьшение задержки между приказами в игре;
    • (+) Запуск более одного экземпляра war3.exe одновременно;
    • (+) Возможность включить/выключить вертикальную синхронизацию.

Скриншоты

Custom Natives

Дополнительные константы
// TriggerRegisterMouseEvent & TriggerRegisterKeyEvent
constant integer MB_Left = 0
constant integer MB_Middle = 1
constant integer MB_Right = 2
constant integer MB_X1 = 3
constant integer MB_X2 = 4
constant integer KEY_Any = -1
constant integer EVENT_Down = 0
constant integer EVENT_Up = 1

// CtrlSetAnchor & SetPortrait
constant integer ANCHOR_TOPLEFT = 0
constant integer ANCHOR_TOP = 1
constant integer ANCHOR_TOPRIGHT = 2
constant integer ANCHOR_LEFT = 3
constant integer ANCHOR_CENTER = 4
constant integer ANCHOR_RIGHT = 5
constant integer ANCHOR_BOTTOMLEFT = 6
constant integer ANCHOR_BOTTOM = 7
constant integer ANCHOR_BOTTOMRIGHT = 8
Mouse API
native int GetMouseX() // Возвращает положение курсора в экранных координатах
native int GetMouseY()
native int GetMouseXRelative()
native int GetMouseYRelative()
native float GetMouseTerrainX() // Возвращает проекцию позиции курсора на ландшафт
native float GetMouseTerrainY()
native float GetMouseTerrainZ()
native bool IsMouseOverUI() // Находится ли курсор над стандартным интерфейсом или нет?
native void BlockMouse(bool bBlock) // Блокирует входные сообщения от мыши (перемещение, нажатия), передаваемые в игру
native int GetWheelDelta() // Возвращает направление/скорость вращения колёсика мыши (положительное значение указывает на то, что колесо вращается вперед)
native void SetMousePos(int x, int y) // Устанавливает положение курсора
native void TriggerRegisterMouseWheelEvent(trigger trig) // Триггер срабатывает при прокрутки колёсика мыши
native void TriggerRegisterMouseMoveEvent(trigger trig) // Триггер срабатывает при перемещении курсора
native void TriggerRegisterMouseEvent(trigger trig, int iButton, int state) // Триггер срабатывает при нажатии (state == 0) / отпуске (state == 1) кнопки iButton (поставьте iButton == -1, чтобы отлавливать все кнопки мыши)
Keyboard API
native int GetTriggerKey() // Возвращает последнюю нажатую клавишу
native bool IsKeyDown(int iKey) // Нажата ли клавиша?
native void TriggerRegisterKeyEvent(trigger trig, int iKey, int state) // Триггер срабатывает при нажатии (state == 0) / отпуске (state == 1) клавиши iKey (поставьте iKey == -1, чтобы отлавливать любые клавиши)
Window API
native int GetWindowWidth() // Возвращает ширину экрана в полноэкранном режиме, либо ширину окна в оконном
native int GetWindowHeight()
native int GetWindowX() // Возвращает координаты окна
native int GetWindowY()
native void TriggerRegisterWindowResizeEvent(trigger trig) // Триггер срабатывает при изменении размера окна
GUI API
native void CtrlNew(int id, int offsetX, int offsetY, int width, int height) // Создаёт новый экземпляр элемента GUI (id >= 0)
native void CtrlSetText(int id, string text, bool bWrap) // bWrap: если текст заходит за пределы ширины, заданной при создании элемента GUI, то происходит переход на новую строку
native void CtrlSetColor(int id, int argb) // Красит элемент GUI в заданный цвет
native void CtrlSetAnchor(int id, int parentId, int anchor) // Выравнивание элемента. Установите parentId = -1, чтобы выравнивание шло относительно всего окна
native void CtrlSetTexture(int id, string filename) // Устанавливает текстуру элемента
native void CtrlSetSize(int id, int width, int height) // Устанавливает размер элемента. Функция не изменяет ширину или высоту, если установить соответствующий аргумент равным -1;
native void CtrlSetPosition(int id, int offsetX, int offsetY) // Устанавливает позицию элемента
native void CtrlShow(int id, bool isShow) // Показывает (true) / скрывает (false) элемент GUI
native void CtrlSetDepth(int id, float fDepth) // Определяет порядок поиска элементов GUI функцией CtrlGetFromMousePoint. Чем значение fDepth меньше, тем элемент расположен ближе к экрану (1.0 по умолчанию)
native void CtrlSetAngle(int id, float fAngle) // Устанавливает угол поворота элемента GUI (в радианах)
native int CtrlGetWidth(int id)
native int CtrlGetHeight(int id) // Используется, чтобы узнать высоту элемента GUI после применения функции CtrlSetText с аргументом "bWrap" == true
native int CtrlGetFromPoint(int x, int y) // Возвращает элемент, расположенный по заданным координатам (если такого нет, возвращает -1)
native bool CtrlIsText(int id) // Является ли элемент GUI текстом?
native void CtrlSetFont(int id, string fontName, int size) // Устанавливает шрифт для указанного элемента GUI (по умолчанию используется "Consolas" с размером 13)
native void GUILoadFont(string fileName) // Загружает шрифт по указанному пути в память
Misc API
native float GetFPS() // Возвращает количество кадров в секунду
native float GetDeltaTime() // Возвращает количество времени, затрачиваемое на отрисовку одного кадра (в секундах)
native int COLOR_ARGB(int a, int r, int g, int b) // Переводит цвет из ARGB формата в шестнадцатеричное значение
native void EnableVsync(bool bEnable) // Включает/выключает вертикальную синхронизацию
native void TriggerRegisterFrameUpdateEvent(trigger trig) // Триггер срабатывает каждый кадр
native bool IsGamePaused() // Находится ли игра на паузе?
native void SetBlackBorders(float upper, float bottom) // Изменяет расположение чёрных границ по оси y (значения находятся в промежутке от 0.0 до 0.6). Значения по умолчанию - upper = -0.02, bottom = 0.13.
native void SetPortrait(int anchor, int x, int y, int width, int height) // Устанавливает расположение и ширину портрета в пикселях. Выравнивание идёт относительно всего окна.
Lighting API
N/A
Post-processing API
N/A

Установка

Требования:

Распакуйте архив и запустите RenderEdge.exe. При первом запуске появится окно с предложением выбрать расположение файла war3.exe.
Нажмите F7, чтобы показать меню настроек. Изменить настройки также можно в файле RenderEdge.ini.
В редакторе реестра можно включить опцию, позволяющую загружать файл настроек, шейдеры и текстуры из папки с 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.

Компиляция из 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] Sample Map - идёт в комплекте с RenderEdge (папка Maps).
Карта написана на vJass и содержит демонстрацию использования всех функций RenderEdge. Карта обновляется каждый раз, при выпуске новой версии RenderEdge.
Особенности карты:
  • Система пользовательского интерфейса (виджеты: Label, Button, Dragbox, Checkbox, Horizontal Slider);
  • Редактирование стандартного интерфейса;
  • Система управления камерой.

Список изменений

Следите за разработкой RenderEdge на Trello.
v0.3.0
  * Слияние с экспериментальной версией;
  * Добавлена поддержка Cine Filter;
  * Улучшен Image Based Lighting: генерация BRDF LUT текстуры и использование EnvBRDF функции вместо приближения;
  * Добавлен шейдер ландшафта;
  * Загрузка .ini файла из папки с RenderEdge без флага AllowLocalFiles;
  * Добавлена кнопка перезагрузки шейдеров;
  * Обновлён эффект Bloom;
  * Исправлен баг в лаунчере, из-за которого окно выбора пути к war3.exe не появлялось после переноса варкрафта в другую папку;
  * Исправлено качество теней;
  * Исправлена некорректная дальняя плоскость отсечения теней;
  * Исправлено некорректное название и расширение файлов скриншотов;
  * Исправлена отрисовка пост-эффектов при загрузке карты.

v0.2.7a
  * Обновлён RenderStage Controller (улучшен перехват отрисовки стандартного интерфейса);
  * Исправлены баги в JassAPI (некорректная конвертация real <=> float);
  * Исправлены баги в функциях CtrlSetDepth и CtrlSetAngle;
  * Исправлены слайдеры и чекбоксы в карте-примере;
  * Добавлены описания .exe и .dll файлов.

v0.2.6a
  * Убран лимит на размер 512p в .blp тексурах (спасибо Karaulov`у);
  * Добавлена новая native функция CtrlSetZOrder (порядок отрисовки элементов интерфейса);
  * Добавлена новая native функция EnableAnisoFiltering (возможность установить анизотропную фильтрацию текстур);
  * Добавлена новая native функция HideInterface;
  * Добавлены новые native функции: EditMinimap, EditCommandBarButton, EditHeroBarButton, EditItemBarButton, EditMinimapButton и EditUpperButtonBarButton;
  * Изменено название функций SetPortrait и SetBlackBorders на EditPortrait и EditBlackBorders;
  * Исправлено большое количество багов в RenderEdge_loader.dll и RenderEdge.exe;
  * Исправлен некорректный перенос строки при использовании символа "|n" во wrapped тексте;
  * Исправлено большое количество багов в GUI-системе (например, баг с функцией CtrlSetTexture при перезапуске карты);
  * Оптимизирована GUI-система. Некоторые функции переписаны с нуля;
  * Оптимизированы менеджеры шрифтов и текстур;
  * Обновлены detours.lib и libjpeg.lib до последней версии;
  * Улучшен и оптимизирован debug log.

v0.2.5a
  * Добавлена новая native функция GUILoadFont;
  * Добавлена новая native функция CtrlSetFont;
  * Удалена функция GUISetFont;
  * Исправлены вылеты при установке некоторых шрифтов (например, "Times New Roman");
  * Исправлена высота однострочного текста;

v0.2.4a
  * Добавлена новая native функция SetPortrait;
  * Функция CtrlSetSize теперь не изменяет ширину или высоту, если вы установите соответствующий аргумент равным -1;
  * Изменено имя функции CtrlSetAlignment на CtrlSetAnchor;
  * Изменён способ исправления ширины полосок здоровья;
  * Исправлено выравнивание динамических элементов по отношению к другим элементам пользовательского интерфейса;
  * Исправлена высота wrapped текста;
  * Исправлена высота wrapped текста при динамическом изменении ширины;
  * Исправлены проблемы с безопасностью. Если жирный, курсивный или полужирный курсивный шрифт недоступен, используется обычный шрифт.

v0.2.3b
  * Исправлено выравнивание относительно других элементов интерфейса.

v0.2.3a
  * Добавлена новая native функция CtrlSetSize;
  * добавлена новая native функция CtrlSetAlignment;
  * Функции CtrlSetPosition и CtrlNew теперь принимают offsetX и offsetY вместо x и y;
  * Удалена функция CtrlSetRect.

v0.2.2a
  * Добавлена новая native функция IsGamePaused;
  * Добавлена новая native функция SetBlackBorders;
  * Обновлен Jass API, исправлены некоторые баги связанные с пользовательскими нативными функциями;
  * Исправлены нативные функции, которые принимают аргументы тира boolean;
  * Исправлено повторное добавление триггеров функциями TriggerRegister#Event после перезапуска карты;
  * Функция EnableVsync теперь работает без необходимости сворачивать игру;
  * Исправлена ошибка, при которой новые элементы GUI не имели зеленой текстуры по умолчанию;
  * Улучшен debug log. Лог файл очищается, если размер превышает 100 КБ.

v0.2.1b
  * Исправлены вылеты при вызове функций CtrlSetText, CtrlSetTexture и GUISetFont (проблема с конвертацией UTF-8 в ASCII);
  * Удалено нестабильное нововведение из предыдущей версии: "Убрано стандартное ограничение минимальной дистанции камеры до цели";
  * Обновлён FreeType до версии 2.8;
  * Обновлён RenderEdge_loader.dll. Теперь он ищет RenderEdge_exp.dll, если не нашёл, то запускает RenderEdge.dll;
  * Добавлен счётчик памяти, используемой варкрафтом;
  * Оптимизация GUI системы;
  * Оптимизация Widescreen fix;
  * Оптимизация debug log. Система отладки переписана с нуля.

v0.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.

v0.2.0a
  * Поддержка Direct3D9;
  * Блокировка функции CtrlGetFromPoint, если игра на паузе;
  * Показ GUI только после загрузки карты;
  * Исправлен баг, связанный с тем, что ширина и высота текстур были перепутаны;
  * Исправлен слишком большой угол обзора при использовании Widescreen Fix;
  * Исправлена проблема, связанная с тем, что невозможно было запустить приложение с первой попытки;
  * Обновлён FreeType до версии 2.7;
  * Запуск более одного экземпляра war3.exe одновременно;
  * Оптимизация RenderEdge.dll;
  * Исправлены проблемы безопасности;
  * Обновлено лого проекта, и добавлен значок приложения;
  * Улучшен debug log;

v0.1.0a
  * Реализована поддержка широкоформатных мониторов;
  * Реализовано корректное получение информации из jass строки (поддержка всех языков, а не только английского);
  * Добавлена поддержка TTF шрифтов, используя FreeType (https://www.freetype.org/);
  * Добавлена поддержка многострочного текста и форматирования ("|n" (на новую строку), "|cAARRGGBB" (изменить цвет), "|b" (полужирный шрифт), "|i" (наклонный шрифт), "|r" (сброс к стандартному цвету текста и обычному шрифту));
  * Уменьшена задержка отдачи приказов юнитам в одиночной игре;
  * Исправлена проблема, связанная с невозможностью запустить RenderEdge после переустановки Warcraft по другому пути;
  * Изменено название функции CtrlCreateInstance на CtrlNew;
  * Изменена функция CtrlSetText(int id, bool autoResize, string text) на CtrlSetText(int id, string text, bool bWrap);
  * Изменена функция CtrlGetFromMousePoint() на CtrlGetFromPoint(int x, int y);
  * Добавлена новая native функция GUISetFont;
  * Добавлена новая native функция CtrlIsText;
  * Функция IsMouseOverUI теперь работает корректно;
  * Удалена функция CtrlSetSolidColor, вместо этого используйте белую текстуру ("Textures\\white.blp") и функцию CtrlSetColor(int argb);
  * Добавлен логотип проекта;
  * Уменьшен размер RenderEdge.mpq;
  * Улучшен debug log.

v0.0.3a
  * Реализовано чтение настроек из реестра;
  * Добавлены функции CtrlGetHeight и CtrlGetWidth для получения ширины элемента GUI после применения функции CtrlSetText с аргументом "autoResize" == true;
  * Исправлено растягивание полосок здоровья на широкоформатных экранах;
  * Отключена функция EnableDebug, теперь включение режима отладки осуществляется из редактора реестра;
  * Улучшена совместимость с JNGP;
  * Улучшен debug log.

v0.0.2b
  * Исправлена проблема, при которой не получалось запустить мод с первого раза;
  * Улучшен debug log.

v0.0.2a
  * Исправлена ошибка с загрузкой RenderEdge.mpq, теперь мод можно без проблем размещать в любой папке;
  * Исправлен баг в функции CtrlSetText, при котором все элементы GUI, использующие текстуру шрифта, имели одинаковый текст;
  * Изменена функция CtrlSetText - убран аргумент "argb", отвечающий за цвет создаваемого текста, вместо этого используйте функцию CtrlSetColor (текст по умолчанию белый);
  * Изменена функция CtrlSetDepth - тип аргумента "depth" изменён на real;
  * Добавлена новая native функция CtrlSetAngle;
  * Удалена функция CtrlSetCallback.

v0.0.1a
  * Первая стабильная версия.

Ссылки

`
ОЖИДАНИЕ РЕКЛАМЫ...
13
JackFastGame, скорее заброшен, нет времени на дальнейшую разработку. Буду очень рад, если найдутся люди, готовые развивать идею, создавать похожие проекты, исходники есть на гитхабе.
14
Это имеется ввиду для импорта в саму карту? Или сам код в папку ретейл кинуть, и типо будет он менять камеру?
15
Есть какие-то способы увеличить производительность? С тенями с отдалённой камерой подлагивает.
Понимаю, что Варкрафт однопоточный, но всё же.
13
Vanish, не реализовал функционал переключения между полноэкранным и оконным режимом. Галочка показывает режим, в котором изначально была запущена игра.
15
ENAleksey, есть какие-то продвижения или проект заброшен?
1
А есть ли какой-либо пресет для улучшения света, но при этом, чтоб совсем все FPS не съедало?

Прошу простить, опечатался, "чтоб НАсовсем". Просто в обилие опций сложно разобраться, какие лучше включить, чтоб хоть как-то улучшить картинку, но особо не потерять в производительности
23
Рецензия на публикацию
Поюзал программку. Для скриншотов красивых - самое то, особенно если модели лучше стандартных, тени прямо супер прорисовывает. Выглядит, как почти современная игра. (Ну, середины нулевых :D) Сочетается с кастомным глобальным освещением и погодными эффектами. Но для игры не годится, начинаются лютые тормоза, FPS падает в 8 !!! раз примерно (и это при том, что комп у меня тянет ведьмака 3 и гта 5 на нормальных настройках!). Если при этом включить свободную камеру, то 1 - перестают работать jass скрипты, связанные с камерой и зумом, 2 - если поставить камеру, как при виде от 3 лица, FPS падает еще в 1,5 раза.
FPS при обычном запуске (обведен в красную рамку)
FPS при запуске с Рендер Едже - видно карты нормалей у террейна, динамические тени и измененный угол глобального освещения. (ФПС обведен в красную рамку)
Ответы (4)
38
EugeAl, не хватает LOD или nanite тут)
23
ScorpioT1000, Да, с ними было бы еще лучше) но ФПС бы сидел на 0,5 или того меньше. Хотя, для скриншотов и этого хватит. )
38
EugeAl, вся проблема как раз в полигональности в отдалении, а тут ещё освещение по куче нормалей отрабатывает в дали, на каждую вершину. Попробуй убавить в настройках игры детализацию и будет иначе
23
ScorpioT1000, Попробовал. Установил видеонастройки на минимум, убрал нормал маппинг у террейна. Итого - ФПС - на пустом месте 40-50, на городе - 6,7, с видом от 3 лица - 2,5 ! Меньше 2,5 не упало.
8
Скачал мод, покрутил. Вроде и правда красиво, даже не лагает.
Вот только обработка тумана здесь уж чересчур норовит все полупрозрачные текстуры подкрашивать в его цвет... лечится только полным выключением чекбокса со всеми видами тумана.
Это как-то можно исправить, докрутив в настройках? Или никак? Чтобы туман мог всё же функционировать.
Слева оригинальная игра, справа RenderEdge. Постэффекты включены, сглаживание включено. Точечное освещение включено, тени включены, нормал маппинг и тени у террейна включены. Остальное дефолт. Не то чтобы это мешает, возможно выглядит даже неплохо, но некоторые спецэффекты чересчур подкрашиваются, как на прикрепленном примере. А без тумана как-то тоже не камильфо.
И ещё, в сети этот мод десинх не вызовет? Если не играться с той же паузой, например.
12
Думаю, что это очень перспективный мод. Если он способен перевести 1.26 в 64 формат (я так понимаю, что может?). Сейчас принимаюсь его изучать, появилось довольно большое желание соединить его с моими графическими модами (тогда уж точно будет лучше, чем рефордж :DDD)
Ответы (1)
12
Думаю, что это очень перспективный мод. Если он способен перевести 1.26 в 64 формат (я так понимаю, что может?). Сейчас принимаюсь его изучать, появилось довольно большое желание соединить его с моими графическими модами (тогда уж точно будет лучше, чем рефордж :DDD)
А нет, все равно происходит ошибка памяти, видимо мод просто расширяет лимит с 2 гиг до 4 гиг, но проблема того, что 1.26 была создана под 32бит, остается.
7
Даже здесь освящение более адекватнее чем в Рефордже...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.