• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[RenderEdge] Graphic modification for Warcraft III

Level 8
Joined
Nov 29, 2014
Messages
191
Experimental version | Widescreen Fix | Memory Hack

Current version v0.3.0

Introduction



I think many people have seen the Nirvana project where the author has implemented Normal Mapping, Shadow Volume, and various post-effects. I decided to continue his work.


RE_1024.png


RenderEdge is a modification for Warcraft III, aimed first and foremost at improving the graphical components of the game by implementing a newer version of the graphics API.

Features


  1. GUI Rendering System:
    • (+) Base system;
    • (+) Multi-line text with formatting;
    • (+) TTF fonts support;
    • (+) Jass handling;
  2. Post-processing:
    • (+) HDR rendering;
    • (+) ACES Tonemapping and Color Grading;
    • (+) Screen Space Reflections;
    • (+) Contact Shadows;
    • (+) Subpixel Morphological and Temporal Anti-Aliasing;
    • (+) Support of custom shaders;
    • (-) Jass handling;
  3. Advanced Lighting:
    • (+) Cascaded Shadow Mapping;
    • (+) Physically Based Shading;
    • (+) Image Based Lighting;
    • (+) Gamma Correction;
    • (+) Support of custom shaders;
    • (-) Jass handling;
  4. 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.


Screenshots


RenderEdge_110718_075753_08.png RenderEdge_110718_075646_06.png RenderEdge_110718_075230_02.png RenderEdge_110718_075212_01.png RenderEdge_110718_075315_03.png
war3 2017-10-01 20-38-17-02.png RenderEdge_010619_153609_12.png


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:

PHP:
-- # 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_exp.mpq archive.

Compiling in Visual Studio:

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

Compiling by fxc.exe:
Code:
@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


Custom Natives


JASS:
// 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
native GetMouseX takes nothing returns integer
native GetMouseY takes nothing returns integer
native GetMouseXRelative takes nothing returns integer
native GetMouseYRelative takes nothing returns integer
native GetMouseTerrainX takes nothing returns real
native GetMouseTerrainY takes nothing returns real
native GetMouseTerrainZ takes nothing returns real
native IsMouseOverUI takes nothing returns boolean
native BlockMouse takes boolean bBlock returns nothing
native GetWheelDelta takes nothing returns integer
native SetMousePos takes integer x, integer y returns nothing
native TriggerRegisterMouseWheelEvent takes trigger trig returns nothing
native TriggerRegisterMouseMoveEvent takes trigger trig returns nothing
native TriggerRegisterMouseEvent takes trigger trig, integer iButton, integer state returns nothing
native GetTriggerKey takes nothing returns integer
native IsKeyDown takes integer iKey returns boolean
native TriggerRegisterKeyEvent takes trigger trig, integer iKey, integer state returns nothing
native GetWindowWidth takes nothing returns integer
native GetWindowHeight takes nothing returns integer
native GetWindowX takes nothing returns integer
native GetWindowY takes nothing returns integer
native TriggerRegisterWindowResizeEvent takes trigger trig returns nothing
native CtrlNew takes integer id, integer offsetX, integer offsetY, integer width, integer height returns nothing
native CtrlSetText takes integer id, string text, boolean bWrap returns nothing
native CtrlSetColor takes integer id, integer argb returns nothing
native CtrlSetTexture takes integer instID, string filename returns nothing
native CtrlSetSize takes integer id, integer width, integer height returns nothing
native CtrlSetAnchor takes integer id, integer parentId, integer anchor returns nothing
native CtrlSetPosition takes integer id, integer offsetX, integer offsetY returns nothing
native CtrlShow takes integer id, boolean isShow returns nothing
native CtrlSetDepth takes integer id, real fDepth returns nothing
native CtrlSetAngle takes integer id, real fAngle returns nothing
native CtrlGetWidth takes integer id returns integer
native CtrlGetHeight takes integer id returns integer
native CtrlGetFromPoint takes integer x, integer y returns integer
native CtrlIsText takes integer id returns boolean
native CtrlSetFont takes integer id, string name, integer size returns nothing
native GUILoadFont takes string name returns nothing
native GetFPS takes nothing returns real
native GetDeltaTime takes nothing returns real
native COLOR_ARGB takes integer a, integer r, integer g, integer b returns integer
native EnableVsync takes boolean bEnable returns nothing
native TriggerRegisterFrameUpdateEvent takes trigger trig returns nothing
native SetBlackBorders takes real upper, real bottom returns nothing
native SetPortrait takes integer anchor, integer x, integer y, integer width, integer height returns nothing
native IsGamePaused takes nothing returns boolean
N/A
N/A



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.


war3 2017-10-01 20-38-17-02.png

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


Changelog



Follow the development progress in Trello.
Code:
v0.3.0
  * Merged experimental and basic versions;
  * Added support of Cine Filter;
  * Added EnvBRDF function;
  * Added Terrain shader;
  * Loading .ini file from RenderEdge folder without AllowLocalFiles flag;
  * Added Reload Shaders button;
  * Updated Bloom effect;
  * Fixed Direct3DCreate8 hooking issues;
  * Fixed searching war3.exe bug in launcher;
  * Fixed shadows quality;
  * Fixed shadows far clip bound;
  * Fixed screenshots names and missing extensions;
  * Fixed Post Processing rendering while map loading.

v0.2.7a
  * Updated RenderStage Controller (improved hooking of standard interface rendering);
  * Fixed bugs in JassAPI (wrong real <=> float convertation);
  * Fixed bugs in CtrlSetDepth and CtrlSetAngle functions;
  * Fixed sliders and checkboxes in sample map;
  * Added descriptions of .exe and .dll files.

v0.2.6a
  * Removed 512p limit in .blp textures (thanks to Karaulov);
  * Added new native function CtrlSetZOrder;
  * Added new native function EnableAnisoFiltering;
  * Added new native function HideInterface;
  * Added new native functions: EditMinimap, EditCommandBarButton, EditHeroBarButton, EditItemBarButton, EditMinimapButton, EditUpperButtonBarButton;
  * Changed SetPortrait and SetBlackBorders function names to EditPortrait and EditBlackBorders;
  * Fixed a lot of bugs in RenderEdge_loader.dll and RenderEdge.exe;
  * Fixed incorrect line breaking in wrapped text that uses the "|n" control character;
  * Fixed a lot of bugs in GUI system (e.g. bug in CtrlSetTexture function, bug then restarting map);
  * Optimized GUI system. Some functions was rewritten from scratch;
  * Optimized Font and Texture Managers;
  * Updated detours.lib and libjpeg.lib to latest version;
  * Improved and optimized debug log.

v0.2.5a
  * Added new native function GUILoadFont;
  * Added new native function CtrlSetFont;
  * Deleted GUISetFont function;
  * Fixed crashes when setting some fonts (e.g. "Times New Roman");
  * Fixed the height of single-line text;

v0.2.4a
  * Added new native function SetPortrait;
  * CtrlSetSize function does not change the width or height if you set the corresponding argument to -1;
  * Changed CtrlSetAlignment function name to CtrlSetAnchor;
  * Changed HP Bars fix;
  * Fixed dynamic controls alignment relative to other UI elements;
  * Fixed height of the wrapped text;
  * Fixed the height of the wrapped text when the width was changed dynamically;
  * Fixed safety issues. If a bold, italic or bold italic font is not available, then a normal font is used.

v0.2.3b
  * Fixed alignment relative to other UI elements.
 
v0.2.3a
  * Added new native function CtrlSetSize;
  * Added new native function CtrlSetAlignment;
  * CtrlSetPosition and CtrlNew functions now take offsetX and offsetY instead of x and y;
  * Deleted CtrlSetRect function.

v0.2.2a
  * Updated Direct3D8 calls interceptor;
  * Added new native function IsGamePaused;
  * Added new native function SetBlackBorders;
  * Updated Jass API, fixed some bugs with custom natives;
  * Fixed native functions that take boolean arguments;
  * Fixed re-adding triggers by TriggerRegister#Event functions after map restart;
  * EnableVsync function now works without the need to minimize the game;
  * Fixed an issue where new GUI elements did not have default green texture;
  * Improved debug log. The log file is cleared if the size has exceeded 100 KB.

v0.2.1b
  * Fixed crashes when calling CtrlSetText, CtrlSetTexture and GUISetFont functions (converting UTF-8 to ASCII problem);
  * Removed non-stable feature from previous version: "Removed the default lower limit of the camera target distance";
  * Updated FreeType to 2.8;
  * Updated RenderEdge_loader.dll. Now it is looking for RenderEdge_exp.dll, if it is not found, then loading RenderEdge.dll;
  * GUI system optimization;
  * Widescreen fix optimization;
  * Added a counter of memory used by the Warcraft;
  * Optimizing the debug log. The debugging system was rewritten from scratch.

v0.2.1a
  * Updated Widescreen Fix. The vertical FoV is no longer dependent on the screen width;
  * FPS is unlocked, now it can be above 64 with disabled vsync (thanks to Karaulov);
  * Removed the default lower limit of the camera target distance (now it can be set to 0.01);
  * Using more precision depth buffer format if supported. Use SetCameraField(ConvertCameraField(7), value, time) to set the near clipping plane of camera (100.0 by default);
  * Added new native function TriggerRegisterFrameUpdateEvent. The function is called every frame (delay less than 0.001 seconds);
  * Added new native function EnableVsync (enabled by default);
  * Added new native functions GetWindowX() and GetWindowY();
  * Added new native functions GetMouseXRelative and GetMouseYRelative;
  * GetMouseX and GetMouseY functions now return coordinates without clippping by window;
  * Changed FPS function name to GetFPS;
  * Changed DeltaTime function name to GetDeltaTime;
  * GetDeltaTime function now returns seconds instead of milliseconds;
  * Improved debug log. The log file is cleared if the size has exceeded 1 MB.

v0.2.0a
  * Direct3D9 support;
  * Blocking CtrlGetFromPoint function while game is paused;
  * Showing the GUI only after the map loading;
  * Fixed a problem that the width and height of the texture were confused;
  * Fixed too large FoV of camera when Widescreen Fix is used;
  * Fixed an issue where it was not possible to launch the application on the first try;
  * Updated FreeType to 2.7;
  * Launching more than one instance of war3.exe;
  * RenderEdge.dll optimization;
  * Fixed safety issues;
  * Updated project logo and added app icon;
  * Improved debug log.

v0.1.0a
  * Implemented correctly receiving information from jass string (support of other languages in addition to English);
  * Implemented widescreen support;
  * Changed CtrlCreateInstance function name to CtrlNew;
  * Changed CtrlSetText(int id, bool autoResize, string text) function to CtrlSetText(int id, string text, bool bWrap);
  * Changed CtrlGetFromMousePoint() function to CtrlGetFromPoint(int x, int y);
  * Added new native function GUISetFont;
  * Added new native function CtrlIsText;
  * IsMouseOverUI function now work properly;
  * Removed CtrlSetSolidColor function, use white texture ("Textures\\white.blp") and CtrlSetColor(int argb) instead;
  * Fixed launcher issue associated with the impossibility to run RenderEdge after the reinstallation of Warcraft to different path;
  * Added TTF fonts support using FreeType (www.freetype.org);
  * Added multi-line text and formatting support: "|n" (to new line), "|cAARRGGBB" (color), "|b" (bold), "|i" (italic), "|r" (reset font and color to default);
  * Lower delay for unit orders in Singleplayer;
  * Added project logo;
  * Reduced size of RenderEdge.mpq;
  * Improved debug log.
 
v0.0.3a
  * Implemented reading settings from the registry;
  * Added CtrlGetHeight and CtrlGetWidth functions;
  * Fixed stretching health bars on widescreen;
  * Disabled EnableDebug function, now debug mode is activated from the registry editor;
  * Improved compatibility with JNGP;
  * Improved debug log.

v0.0.2b
  * Fixed an issue where it was not possible to launch the application on the first try;
  * Improved debug log.

v0.0.2a
  * Fixed RenderEdge.mpq loading issue (now mod can be placed in any folder);
  * Fixed bug in CtrlSetText function then all controls that use the font texture have the same text;
  * Changed CtrlSetText function - removed "argb" argument responsible for the color of created text, use CtrlSetColor function instead (the default color is white);
  * Changed CtrlSetDepth function - type of "depth" argument changed to real;
  * Added new native function CtrlSetAngle.
  * Removed CtrlSetCallback function.

v0.0.1a
  * First stable version.



References


 

Attachments

  • RenderEdge_v0.3.0.rar
    8 MB · Views: 6,024
  • Shaders_v0.3.0.rar
    84.3 KB · Views: 2,089
Last edited:
Level 8
Joined
Nov 29, 2014
Messages
191
Interesting, very interesting :O
So every user who plays the map would need this? Or is it added into the map itself when saving somehow?
Yes, every player should launch WarCraft using RenderEdge.exe to see changes.

Isn't cJASS buggy?
It's just sample map, you can easily rewrite code in Jass2/vJass, but I prefer to write on cJass.
 
Level 8
Joined
Nov 29, 2014
Messages
191

True WideScreen Support


On modern monitors with 16:9 widescreen resolutions the Warcraft 3 game-scene is stretched from 4:3 to 16:9, resulting in disproportional figures. I fixed it.

Old stretched image
war3 2016-09-20 11-49-41-58.png
With WideScreen Fix
war3 2016-09-20 11-49-45-61.png

Screenshots of the game with different aspect ratio:
Original 4:3
war3_2016-09-06_16-21-39-11.png
16:9
war3_2016-09-06_16-17-16-48.png
 
  • Like
Reactions: pyf

pyf

pyf

Level 32
Joined
Mar 21, 2016
Messages
2,985
Last edited:

pyf

pyf

Level 32
Joined
Mar 21, 2016
Messages
2,985
Yeah, it works on the latest patch! But I still have to solve some issues:
View attachment 249535
I would expect, the spike on the left is only fixable by editing the file MainMenu3d_exp.mdx.
That same model issue may also be seen in Undead3D_Exp.mdx

If all else fails, the logo's aspect ratio can be fixed easily, by tweaking the file WarCraftIIILogo_exp.mdx. Same goes with the cursor(s).

You probably are having a very hard time with Rexxar's campaign screen, am I right?
 
Level 8
Joined
Nov 29, 2014
Messages
191
By the way, it is an example of how looks my old map made using RtC after the transfer to RenderEdge (until without graphical improvements and post-effects) + demonstration of one of the upcoming features:
Before: After:
War3 2015-05-28 14-42-38.pngWar3 2015-05-28 14-59-06.pngWC3ScrnShot_101516_171356_01.pngWC3ScrnShot_101516_171421_02.png
And it's possible to implement Shadow Mapping:
War3 2015-05-28 14-59-06.pngwar3_2016-10-21_19-51-52-61.png
 
Last edited:
Level 8
Joined
Nov 29, 2014
Messages
191
Can it set the output buffer to sRGB for correct gamma?
Yes, I implemented it today.
But in your example, there are some inaccuracies. As I understand you just do pow(img.rgb, 1/2.2) for final image, but it should be implemented in the shader like that:
C:
float3 tosRGB(float3 rgb)
{
    return (rgb.xyz*rgb.xyz)*(rgb.xyz*float3(0.2848,0.2848,0.2848) + float3(0.7152,0.7152,0.7152));
}

float3 toRGB(float3 srgb)
{
    return pow(abs(srgb), 1/2.2);
}

float4 mainPS()
{
    float3 diffuseCol = tosRGB(tex2D(diffTex, UV));
    float3 finalCol = do_all_lighting_and_shading();
    float pixelAlpha = compute_pixel_alpha();

    return float4(toRGB(finalCol), pixelAlpha);
}

These are some screenshots. I convert only some diffuse textures in the sRGB, eg I skip heroic glow (but soon I will fix it), so the picture is not completely correct.

Uncorrected | Corrected





 
Last edited:

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,180
As I understand you just do pow(img.rgb, 1/2.2) for final image, but it should be implemented in the shader like that:
sRGB is not a gamma curve of 2.2. It is only approximately a gamma curve of 2.2. The Wikipedia article explains. It is a much more complex function so yes my guide is inaccurate. In summary it consists of a linear part at very dark levels and a non linear, gamma like (but not true gamma curve) with a power of 2.4, part for the rest.

If one specifies the display output buffer as sRGB (D3D9/OpenGL equivalent required) then the GPU automatically does the transformation from linear to sRGB completely for free as modern GPU hardware has special functional units just to do this colour space conversion in real time. Like wise one can specify input textures as sRGB for them to be converted to linear as required completely for free. Warcraft III was made with D3D7 technology and by people who were used to sprite graphics up till then so were likely unaware of colour management.

It is worth noting that HDR displays apparently also use sRGB response although with a different colour profile.
 
Level 8
Joined
Nov 29, 2014
Messages
191
I decided to post the current version which is still in development, it is more stable than the previous one, but many functions from experimental version have not been added yet.

Download (sample map included).

Change Log (v0.2.0dev):
  • (+) Direct3D9 support;
  • (+) Blocking CtrlGetFromPoint function while game is paused;
  • (+) Showing the GUI only after the map loading;
  • (+) Fixed a problem that the width and height of the texture were confused;
  • (+) Fixed too large FoV of camera when Widescreen Fix is used;
  • (+) Fixed an issue where it was not possible to launch the application on the first try;
  • (+) Updated FreeType to 2.7;
  • (+) Launching more than one instance of war3.exe;
  • (+) RenderEdge.dll optimization;
  • (+) Fixed safety issues;
  • (+) Updated project logo and added app icon;
  • (+) Improved debug log;
  • (-) Fixed crashes while loading the map;
  • (-) 1.27a patch support (1.27b?);
  • (-) Windows XP support (is it necessary?);
  • (-) HDR Rendering;
  • (-) Post Process Effects;
  • (-) ShaderSetInt/Float/Bool/Texture;
  • (-) Anisotropic texture filtering;
  • (-) SetLightDirection/Diffuse/Ambient.
 

Attachments

  • RenderEdge_0.2.0dev.rar
    425.7 KB · Views: 297
Last edited:
Level 6
Joined
Sep 9, 2015
Messages
130
WOW! Unbelievable, it work with 21:9 ratio on my LG ultrawide monitor without stretched. But in 21:9 ratio, the camera look closer, it's look like crop top and bottom from 16:9 (but not problem because i can change the camera distance on my custom map ^^)

Although very exciting but i cant use this to play online, because in my country people only play warcraft 3 1.24e version. So i hope you make it run in 1.24e too.

21:9 (2560x1080)
WC3ScrnShot_041517_055150_01.png


16:9 (1920x1080)
WC3ScrnShot_041517_055415_01.png


4:3 (1440x1080)
WC3ScrnShot_041517_055802_01.png
 
Last edited:

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,180
WOW! Unbelievable, it work with 21:9 ratio on my LG ultrawide monitor without stretched. But in 21:9 ratio, the camera look closer, it's look like crop top and bottom from 16:9 (but not problem because i can change the camera distance on my custom map ^^)
Actually its still does not support wide screen. Minimap and icons are still rectangles instead of squares.
 
Level 8
Joined
Nov 29, 2014
Messages
191
But in 21:9 ratio, the camera look closer, it's look like crop top and bottom from 16:9
I already fixed it.
war3 2017-04-15 08-58-48-38.png war3 2017-04-15 08-59-06-79.png war3 2017-04-15 08-59-28-15.png
You can download RenderEdge.dll and put it your RenderEdge folder.
About the 1.24e patch, I can't add its support in basic version of RenderEdge, but I'll try to make a version without GUI, only with widescreen fix.

Actually its still does not support wide screen. Minimap and icons are still rectangles instead of squares.
I'm working on this, and there's already some progress:
interface-old-png.262723
interface-new-png.262722

Now the standard interface is almost completely editable, but at this moment to take effect of UI editing you need to restart the map.
 

Attachments

  • RenderEdge.rar
    336.1 KB · Views: 289
Last edited:
Level 6
Joined
Sep 9, 2015
Messages
130
I already fixed it.
View attachment 265307 View attachment 265308 View attachment 265309
You can download RenderEdge.dll and put it your RenderEdge folder.
About the 1.24e patch, I can't add its support in basic version of RenderEdge, but I'll try to make a version without GUI, only with widescreen fix.

Yeah. Tested with new dll file and it worked perfectly :3 Thank you very much!

WC3ScrnShot_041517_173038_01.png


And hope you will make a version for 1.24e with only that widescreen fix features soon (y)
 
Level 6
Joined
Sep 9, 2015
Messages
130
I'm working on this, and there's already some progress:
interface-old-png.262723
interface-new-png.262722

Now the standard interface is almost completely editable, but at this moment to take effect of UI editing you need to restart the map.

Look like you have done a lot more than the Blizzard dev in many years =))
 
  • Like
Reactions: pyf
Level 8
Joined
Nov 29, 2014
Messages
191

Update 0.2.1a



Download (sample map included)
  • Updated Widescreen Fix. The vertical FoV is no longer dependent on the screen width;
  • FPS is unlocked, now it can be above 64 with disabled vsync (thanks to Karaulov);
  • Removed the default lower limit of the camera target distance (now it can be set to 0.01);
  • Using more precision depth buffer format if supported. Use SetCameraField(ConvertCameraField(7), value, time) to set the near clipping plane of camera (100.0 by default);
  • Added new native function TriggerRegisterFrameUpdateEvent. The function is called every frame (delay less than 0.001 seconds);
  • Added new native function EnableVsync (enabled by default);
  • Added new native functions GetWindowX() and GetWindowY();
  • Added new native functions GetMouseXRelative and GetMouseYRelative;
  • GetMouseX and GetMouseY functions now return coordinates without clippping by window;
  • Changed FPS function name to GetFPS;
  • Changed DeltaTime function name to GetDeltaTime;
  • GetDeltaTime function now returns seconds instead of milliseconds;
  • Improved debug log. The log file is cleared if the size has exceeded 1 MB.
 

Attachments

  • RenderEdge_0.2.1a.rar
    430.5 KB · Views: 504
Last edited:
  • Like
Reactions: pyf
Top