Warcraft 3

File information

Last updated

Original upload

Created by

ENAleksey

Uploaded by

ENAleksey

Virus scan

Safe to use

About this mod

RenderEdge is a modification for Warcraft III, aimed primarily at improving the graphic component of the game by introducing a newer version of the graphical API.

Requirements
Permissions and credits
Mirrors
Changelogs
Donations

Features

GUI Rendering System:
  • (+) Base system;
  • (+) Jass handling;
  • (+) Multi-line text with formatting;
  • (+) TTF fonts support;

Post-processing:
  • (+) HDR Rendering;
  • (+) ACES Tonemapping and Color Grading;
  • (+) Screen Space Reflections;
  • (+) Contact Shadows;
  • (+) Temporal Anti-Aliasing;
  • (+) Support of custom shaders;
  • (-) Jass handling;

Advanced Lighting:
  • (+) Cascaded Shadow Mapping;
  • (+) Physically Based Shading;
  • (+) Image Based Lighting;
  • (+) Gamma Correction;
  • (+) Support of custom shaders;
  • (-) Jass handling;

Misc:
  • (+) Direct3D8 to Direct3D9;
  • (+) Widescreen support;
  • (+) Lower delay for unit orders in singleplayer;
  • (+) Launching more than one instance of war3.exe;
  • (+) Turning on/off V-Sync.


Installation

Requirements:

Unpack archive and launch RenderEdge.exe. Select the path to war3.exe in the window that appears when RenderEdge is first launched.
Press F7 to show settings GUI. You can also edit settings via RenderEdge.ini.

You can enable the option to load shaders and textures from the RenderEdge folder by editing this value in the Registry Editor: CURRENT_USER\Software\RenderEdge\AllowLocalFiles. Resource search sequence: the loaded map, the RenderEdge folder, the RenderEdge.mpq archive.

You can add new tab in your JNGP to launch RenderEdge easier by editing wehack.lua:
Spoiler:  
Show
-- # 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 editing

If you want to edit shaders, download archive, unpack, compile and place them in Shaders folder. Then you can place it in RenderEdge folder, import in your map or in RenderEdge.mpq archive.

Compiling in Visual Studio:

Add the shaders to the project and configure the HLSL Compiler in the project properties as follows:

 

Compiling by fxc.exe:

Spoiler:  
Show
@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


Samples

Sample map is written in vJass and contains demonstration of using all RenderEdge features. The map is updated every time a new version of RenderEdge is released.



Map features:
  • GUI system (Widgets: Label, Button, Dragbox, Checkbox, Horizontal Slider);
  • Standard interface editing;
  • Camera control system.

References