TruForm Deus Ex OpenGL Renderer v0.71 (experimental)
---------------------------------------------------

This is a potential general renderer update for Deus Ex.
Although it can be used with any OpenGL compliant card, it's main
purpose is to implement ATI's TruForm features. TruForm creates much
smoother meshes by tessellating the triangles based on N-Patches.
Unfortunately, you can only use this particular feature if you have an
ATI card that supports it (that means all of the recent ATI cards).

Installation:
-------------

- Copy the OpenGLDrv.dll into your DeusEx\System directory, but backup
the old one before overwriting, in case this replacement does not work
as intended.

- Open your DeusEx.ini file.

In the [Engine.Engine] section, change
GameRenderDevice=D3DDrv.D3DRenderDevice
to
GameRenderDevice=OpenGLDrv.OpenGLRenderDevice

In the [OpenGLDrv.OpenGLRenderDevice] you can set some variables:

(STANDARD OPTIONS)
UseTrilinear - whether to use trilinear filtering

UseAlphaPalette - set to 0 for buggy drivers (GeForce)

RefreshRate - requested refresh rate

GammaOffset - offset for the gamma correction (IMPORTANT! e.g. =1.2)

(UTGLR OPTIONS)
UseAA - Set to 1 to enable antialiasing.

NumAASamples - Number of samples to use for antialiasing. 2 and 4 are
common values that should work on many cards.

AAFilterHint - Can be used to enable Quincunx AA on NVIDIA cards. Set
to 2 to enable this mode.

TexDXT1ToDXT3 - Set to 1 to convert all DXT1 compressed texture to
DXT3 format on upload. Can be used to work around bad DXT1 texture
quality on NVIDIA GeForce1 - GeForce4 series video cards. The DXT3
textures take twice as much texture memory as the DXT1 textures though.

SinglePassDetail - Set to 1 to activate the single pass detail texture
path. It requires the UseDetailAlpha alpha option to also be set to 1.

UseCVA - Set to 1 to enable the use of compiled vertex array (CVA)
code. Enabling this is most likely only useful on video cards without
HW T&L.

SwapInterval - Controls V Sync. Requires the WGL_EXT_swap_control
OpenGL extension. Not present or -1 has no effect. Set to 0 for V Sync
off. Set to 1 for V Sync on. Set to higher values for 1 frame every N
screen refreshes.

(TRUFORM OPTIONS (still experimental!))
UseTruForm - Set to 1 to enable TruForm features (IMPORTANT!)

TruFormTessellation - Sets the degree of tessellation, standard is 3,
usually that should be sufficient

- For TruForm, don't forget to enable TruForm support in your driver
preferences (Control Panel -> Display -> Settings -> Advanced ->
OpenGL -> TRUFORM (tm): set to Application Preference) (IMPORTANT!)

Known issues:
-------------

- I know that there are some glitches with the current release. For
example sometimes there seem to be some triangles missing (for example
at the beginning of the intro scene). Don't really know what's the
cause for this.

- When triangles are on the edge of the screen, they get clipped.
Normally, you won't notice this, but with TruForm enabled you'll
notice the shape of these triangles change. Probably there will be no
practical solution for this on the renderer level.

- Some meshes look funny now, for example crates, as the shouldn't be
round. That's a fundamental problem of TruForm itself.


Credits:
--------

Thanks and greetings go to:

- Epic for the release of the renderer source code.
(http://unreal.epicgames.com/)

- NitroGL for the original TruForm implementation for Unreal
Tournament (http://area3d.net/)

- Very special thanks to Chris Dohnal, for the Enhanced OpenGL
Renderer UTGLR 2.0 on which this driver is based. I would have had no
chance of implementing this without his kind help. Basically I just
added a few lines of code where he suggested... :-) THANKS! Look out
for an updated driver release of his own with TruForm features
implemented.
(http://cwdohnal.home.mindspring.com/utglr/)

Source code:
------------

All changes to the official UT v432 public source are included in the
\Source directory in the archive.

Feedback and suggestions are very welcome!
Leonhard Gruenschloss (l.gruenschloss@myrealbox.com)