kentie.net

Unreal engine Direct3D 10 renderer

Found a glitch or encountering errors? Please contact me about it!

This Direct3D 10 renderer for Unreal, Unreal Tournament, Deus Ex and Rune aims to provide a good, consistent looking and future proof renderer for these games. The focus is not on fancy effects; the idea is to have something that will allow these games to perform well and look good on modern systems, something which I can support and bugfix. Written from scratch, it ditches a lot of legacy stuff and profits from the fact that D3D10 support means a clear baseline. Furthermore, source code and documentation are provided (see page 2), which should aid future efforts to keep these games running.

Thanks, for various reasons, go out to Danny, Tyler, Ro, Sebastian, Eric. Special thanks to Chris who made the other renderers and provided valuable feedback.

Downloads

The current version is v29. Download: d3d10drv-v29.zip. Install required DirectX update: dxwebsetup.exe. Install required VS2010 runtimes: vcredist_x86.exe.
Installation instructions
Changelog
Old versions

The renderer requires Windows Vista or later; it works fine on DirectX 11 systems.

The renderer requires that your game is up-to-date, see Supported Games.

Screenshots

screenshot screenshot screenshot
screenshot screenshot screenshot
screenshot screenshot screenshot
screenshot screenshot screenshot

Features

Supported games:

There are also renderers for some specific, non-newest, game versions:

Tactical Ops: Mikhail informs me the UT renderer sort-of works with 'Tactical Ops: Assault on Terror': the brightness is off and in-hand weapon models aren't drawn.

Installation and settings

  1. Unzip the files for the game you're playing to that game's 'system' directory. Examples of this are 'C:\Deus Ex\System' and 'D:\Steam\steamapps\common\Deus Ex\System'. You should end up with a 'd3d10drv.dll' file in said System directory, and a 'd3d10drv' subdirectory with various other files.
  2. Start the game, go into its video options, and click the the renderer selection button. The game should restart and allow the Direct3D 10 renderer to be picked (make sure to select "Show all devices").
  3. That should be all; read on for more settings.
Renderer selection window
The renderer selection window.

To change the various advanced settings the renderer offers you need to conjure up the advanced preferences dialog:

Preferences: UnrealPreferences: UTPreferences: DXPreferences: Rune
Getting to the preferences dialog in various games.
Preferences window (screenshot might not be up to date)
Direct3D 10 renderer settings.

The dialog shown above should pop up, browse to 'rendering->Direct3D 10 support'. The renderer offers these settings:

Alpha to coverage
Smoothens the edges of 'masked' textures such as grates and leaves. Unfortunately, this does lead to artifacts where the textures don't tile (example). Requires at least 4x anti aliasing enabled to take effect. Valid settings: true/false. Default: false. Note: on some hardware this setting seems to result in black backgrounds around HUD icons, etc. I suspect this is a driver issue.
Anisotropy
Anisotropic filtering, makes textures look less blurry at a distance. Valid settings: 0 to 16. Default: 8.
Anti aliasing
Greatly improves visual quality by filtering jagged lines. Valid settings: depends on video card. 1 and lower is off. 16 is the absolute maximum. If an unsupported setting is selected the renderer falls back on the next lowest supported one.
Auto FOV
Automatically sets the field of view depending on the window/screen size. Might want to turn this off if you want to set an extra-wide FOV for multiplayer games. Valid settings: true/false. Default: true.
Classic lighting
With this enabled, the lighting matches that of the original renderers. Otherwise, D3D10 renderers before version 18 use a more vibrant lighting scheme; after version 18 HDR is used (in which case reverting to classic lighting improves performance). Valid settings: true/false. Default: true.
FPS limit
Prevents the games from running too fast even with vsync disabled, by limiting the maximum frames per second drawn. The games seem to appreciably start to speed up above ~200 FPS. Valid settings: 0 to whatever. Default: 100. Think twice before completely disabling this, as wrong timing information will be fed to the shaders (resulting in too-fast HDR for instance).
LOD bias
Setting this to a negative values makes the game use larger mipmaps (textures) than it'd normally do. Theoretically improves quality but far-off textures tend to look too 'busy'. Valid settings: -10 to 10. Default: 0.
Parallax occlusion mapping (POM)
Gives surfaces 3D relief. Pretty GPU intensive, and you might not like the way it looks. Will use an external height map texture if present, otherwise the detail texture is used. Valid settings: true/false. Default: false.
Simulate multi-pass texturing
Greatly improves the look of various skies and alters the look of reflective surfaces and some windows. This matches the look used by early versions of Unreal running on 3Dfx hardware; later versions of that renderer seem to have switched to single-pass multitexturing. This setting can be turned off for the look most people will be used to. Valid settings: true/false. Default: true.
Precache
Makes the game preload textures, which can lead to smoother gameplay. However, it does increase (un)loadtimes. Valid settings: true/false. Default: false.
VSync
Synchronizes the game's frame redraws with monitor updates, reducing visual tearing. However, some people seem to experience input lag with this enabled (in other games as well). Valid settings: true/false. Default: true.
Bump mapping
Can be ignored unless you've got special textures installed. Attempts to fake bump mapping if textures have normal maps present. Requires a normal map to be either present in the texture's bump map slot, or provided as an extra external texture. Valid settings: true/false. Default: false.
Unlimited view distance
Sets view distance to the maximum supported map size. By request. No reason to touch this.

For most of these to take effect, the renderer needs to be restarted. Switching to full screen (and back again if desired) accomplishes this.

screenshot
Simulate multi-pass texturing disabled
screenshot
Simulate multi-pass texturing enabled
screenshot
Alpha to coverage disabled
screenshot
Alpha to coverage enabled
screenshot
Classic lighting disabled: HDR
screenshot
Classic lighting enabled
screenshot
Standard textures, no bump and POM
screenshot
POM using detail textures
screenshot
Diffuse and detail loaded from file
screenshot
Bump map loaded too
screenshot
POM using external height map

Known issues

Known non-issues

Testing the renderer, some issues cropped up which were found out to actually be due to the games/API itself and visible on all renderers tried. Some might still be able to be fixed in a renderer though. Also, be sure to check page for Deus Ex issues.

Pre-emptive FAQ

Why Direct3D 10?
Multiple reasons. It's bound to be the most future proof; the newer the API the less problematic with modern hardware it's bound to be; it's a clear baseline from a hardware standpoint; it makes most sense for me to work with this API at this time. Some effects are plain not supported on earlier APIs, for example the geometry shader is used to calculate world geometry tangent space.
Why doesn't the renderer support [game]?
Unfortunately, adding support for a game requires that its developers released a native modding SDK. I don't know of any games for which that applies other than the currently supported ones.
Will the renderer work with [game] anyway?
There's no harm in trying, but it will probaby not work. Perhaps one of the renderers will work with one specific version of a game. I have tried Undying, Wheel of Time, Klingon Honour Guard and DS9 The Fallen; none of them worked.

See next page for source code.

Page: 1 2 next ›

Created: Jun 09 2009
Modified: Oct 20 2015