KoolSmoky


main links who am i?
---

3dfx GLIDE™ for Windows - glide2.x , glide3.x

Open sourced 3dfx GLIDE™ driver for Win32 (Windows 95,98,Me,NT4,2000,XP) ported from the Linux 3dfx GLIDE™ source code. The Linux source code was originally open sourced by the demised 3dfx Interactive Inc. Currently supports 3dfx Voodoo Banshee, Velocity, Voodoo3, Voodoo4, Voodoo5. It has been extended to support S3TC (DXTC) compressed textures, T-Buffer effects for all VSA based cards including Voodoo4, and optimizations for 3DNOW!, MMX, SSE, SSE2 are used.
Note: S3TC (DXTC) support is for Voodoo4 and Voodoo5.
Note: 3dfx OpenGL ICD requires GLIDE3x™
Note: 3dfx MiniGL requires GLIDE2x™
Note: I've contributed all changes and additions to http://glide.sourceforge.net.

Download
GLIDE2x™ 2.61.00.2604 and GLIDE3x™ 3.10.00.2610 binary (264kb zipped)
GLIDE2x™ 2.61.00.2604 and GLIDE3x™ 3.10.00.2610 source code (981kb zipped)

Old binaries
GLIDE2x™ 2.61.00.2601 and GLIDE3x™ 3.10.00.2607 binary (258kb zipped)
GLIDE2x™ 2.61.00.2602 and GLIDE3x™ 3.10.00.2608 binary (267kb zipped)
GLIDE2x™ 2.61.00.2603 and GLIDE3x™ 3.10.00.2609 binary (264kb zipped)

UnrealTournament on Voodoo5 - high resolution textures OpenGL normal
UnrealTournament on Voodoo5 - high resolution textures OpenGL normal

UnrealTournament on Voodoo5 - high resolution textures OpenGL S3TC
UnrealTournament on Voodoo5 - high resolution textures OpenGL S3TC
notice how the walls and floor look.


Installation
1. Windows XP users must install the 3dfx Windows 2000 drivers or 3rd party Windows XP drivers.
Note: you can skip this step if you do not use Windows XP. If you use Windows XP you must not skip this step otherwise you will not be able to use 3dfx GLIDE™ or hardware accelerated OpenGL.

2. Backup your original copy of glide2x.dll and glide3x.dll files.

3. copy glide2x.dll and glide3x.dll to the following directory.
__Windows 95,98,Me : /Windows/System
__Windows NT4,2000 : /Winnt/System32
__Windows XP______: /Windows/System32

Issues
Multi-Monitor with Windows 2000,XP
You may have problems running GLIDE™ on 3dfx devices other than the 1st. To run GLIDE™ on 2nd or 3rd device, disattach window's desktop from the display device using the display properties.

License
This driver has been ported from the Linux 3dfx GLIDE™ source code and is released under the 3dfx GLIDE™ Source Code General Public License. Please read the license documentation for details.

Future Plans
Port back the source to Linux

FAQ
1. OpenGL ICD requires Glide3x. MiniGL requires Glide2x.

2. Install windows compatibility patch and service pack from microsoft.
Windows XP: http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37942
Windows 2000: http://microsoft.com/windows2000/downloads/tools/appcompat/default.asp

3. Use win98/me compatibility mode for apps having problems in win2k/xp.

4. OpenGL ICD requires Glide3x. MiniGL requires *Glide2x*.

5. For OpenGL S3TC (DXTC) support, 3dfx OpenGL ICD version 1.0.0.0761 (1,102,096 bytes) is required. Legacy texture compression as in Q3A will compress to FXT1 on-the-fly and is not precompressed. UT 2nd CD textures are precompressed. Copy the OpenGL ICD as opengl32.dll to the application or game folder.

6. JediKnight2 if menus appear corrupt, add in this setting.
seta r_ext_texture_compression_s3tc "1"
seta r_ext_preferred_tc_method "1"

7. SeriousSam2 if game crashes, disable guardband clipping.

8. Medal of Honor Allied Assault use force 16bit texture to see in-game movies.

9. 3dfx Post-filtering which enables 22bpp-ish results when running in 16bpp mode can be disabled by adding SSTH3_OVERLAYMODE -1(string) to the registry.

10. UnrealTournament if in openGL use the latest ut opengl renderer from Epic's Unreal™ engine development team . set UseS3TC=0 if you do *not* use s3tc. if you wish to use S3TC with ut's 2nd CD textures, do *not* force mipmap (lod) dithering and set lodbais to -4 via regtweaks. for Win2k/xp Set win95 compatibility mode to unrealtournament.exe. use the following in unrealtournament.ini.
[OpenGLDrv.OpenGLRenderDevice]
RefreshRate=75
DetailTextures=1
UseTrilinear=1
UseS3TC=1
UseTNT=0
LODBias=0
UseMultiTexture=1
UsePalette=1
UseAlphaPalette=1
Translucency=1
VolumetricLighting=1
ShinySurfaces=1
Coronas=1
HighDetailActors=1
MaxAnisotropy=0
AlwaysMipmap=0
UsePrecache=1
SupportsLazyTextures=1

11. there is no x2FSAA with EdgeAA. just x2FSAA with different LOD offests when used with mipmap dithering to reduce banding.

12. there is no true trilinear filtering support when used with 3dfx/x3dfx OpenGL ICD. 1.0.0.0761 OpenGL ICD seems to let OpenGL trilinear calls pass through but outputs bilinear. therefore in Q3A, even if you set trilinear in-game the result will be bilinear. enabling force mipmap dithering via driver tool will not turn on trilinear, it will be bilinear with mipmap dithering. Trilinear is possible if the voodoo hardware is setup in a special way, but this has to be done outside glide3x.dll right now. In a true trilinear state, glide3x automatically omits mipmap dithering.

13. I have tried my best to keep compatibility with win95/98/me/nt4/2k/xp, however tests are mainly done with win2k/xp. the regtweak unreadable bug in win9x/me is fixed now.

14. Although the changes in Glide3x may affect HSR performance in OpenGL, I haven't really focused on the issue. do not threaten me to get it working.

15. GLExcess, this ain't a game but for the ogl demo fans, the app will crash at first run, kill with taskmanager and rerun it. it'll run fine after that.

16. to play Quake3 engine based games with texture compression, add these lines
seta r_ext_compress_textures "1"
seta r_ext_compressed_textures "1"
seta r_ext_texture_compression_s3tc "1"
seta r_ext_s3tc "1"
and enable legacy texture compression (fxt1 compression for voodoo4/5) in driver tool. most games with the Q3 engine will use realtime (on-the-fly) compression.

17. If you have problems running OpenGL apps, search for 3dfxogl.dll in the windows system directory and copy the file to the apps' directory and rename it to opengl32.dll.

18. If you have Z-buffer Clear errors in OpenGL, set OpenGL z-precision to normal or fast in the driver tools. you can also do this by setting string 0 or 1 for FX_GL_16BPP_ZPRECISION and FX_GL_32BPP_ZPRECISION.

19. Neverwinter Nights, set HardwareMouse=0 in nwn.ini.

Update Logs
[Feb.11.2003]
Fixed issues with resolution changes and corrected device context strapping under multi-monitor setups.

[Feb.09.2003]
Fixed a serious problem with GLIDE2x,3x™ and OpenGL applications not being able to find a valid rendering device. This bug was especially noticable with Windows 9x,Me. Thanks to all who reported having OpenGL context failures and anomalies with Lewpy's PSX GPU Glide3 plugin. This release fixes those problems.

[Jan.30.2003]
This release includes SSE optimized rasterization routines and SSE2,MMX optimized texture download routines for GLIDE3x™ in addition to the preexisting 3DNow! MMX version of the routines. Those who are using anything newer than Intel's Pentium MMX should benefit from these optimizations. Optimizations for GLIDE2x™ should follow shortly. SSE and SSE2 optimizations will be used only if both your PC and OS support them. Things changed for both GLIDE2x™ and GLIDE3x™; Fixed a bug which may have prevented the drivers from working in win95 and nt4. Corrected RGSS rotational angle for 4xFSAA and 8xFSAA to default to 27.5 degrees.

[Dec.13.2002]
Fixed a bug which broke compatibiliy with several Glide and OpenGL applications. The driver now runs Operation Flash Point once again. For Neverwinter Nights, set HardwareMouse=0 in nwn.ini. Added 3dfx T-Buffer™ support for all 3dfx VSA based cards. We can have 2, 4, and 8 T-buffers depending on the number of AA samples our cards can handle, Voodoo4 is now able to render T-buffer effects. Cleaned up FSAA garbage that appear on screen edges such as in Unreal Tournament and Quake3 Arena. Also modified FSAA screen and text sharpness. And since not many seem to know, here are the regtweaks to control FSAA 'blurriness' which has been available from the very first public release. They are the AA jitter values:

2xFSAA
(FX_GLIDE_AA2_OFFSET_X0, FX_GLIDE_AA2_OFFSET_Y0)
(FX_GLIDE_AA2_OFFSET_X1, FX_GLIDE_AA2_OFFSET_Y1)

4xFSAA
(FX_GLIDE_AA4_OFFSET_X0, FX_GLIDE_AA4_OFFSET_Y0)
(FX_GLIDE_AA4_OFFSET_X1, FX_GLIDE_AA4_OFFSET_Y1)
(FX_GLIDE_AA4_OFFSET_X2, FX_GLIDE_AA4_OFFSET_Y2)
(FX_GLIDE_AA4_OFFSET_X3, FX_GLIDE_AA4_OFFSET_Y3)

8xFSAA
(FX_GLIDE_AA8_OFFSET_X0, FX_GLIDE_AA8_OFFSET_Y0)
(FX_GLIDE_AA8_OFFSET_X1, FX_GLIDE_AA8_OFFSET_Y1)
(FX_GLIDE_AA8_OFFSET_X2, FX_GLIDE_AA8_OFFSET_Y2)
(FX_GLIDE_AA8_OFFSET_X3, FX_GLIDE_AA8_OFFSET_Y3)
(FX_GLIDE_AA8_OFFSET_X4, FX_GLIDE_AA8_OFFSET_Y4)
(FX_GLIDE_AA8_OFFSET_X5, FX_GLIDE_AA8_OFFSET_Y5)
(FX_GLIDE_AA8_OFFSET_X6, FX_GLIDE_AA8_OFFSET_Y6)
(FX_GLIDE_AA8_OFFSET_X7, FX_GLIDE_AA8_OFFSET_Y7)

these represent (x, y) offset points from the pixel center and the default values are:

2xFSAA
(-0.250, -0.250)
(0.250, 0.250)

4xFSAA
(-0.125, -0.375)
(0.375, -0.125)
(-0.375, 0.125)
(0.125, 0.375)

8xFSAA
(-0.125, -0.375)
(-0.25, -0.125)
(0.375, -0.125)
(0.125, -0.25)
(-0.375, 0.125)
(0.25, 0.125)
(0.125, 0.375)
(-0.125, 0.25)

The values should be in 3.4 format. Normally the range of -1.0 to 1.0 should be safe. These regtweaks alone give total control over the jitter points, you can position them anywhere you wish, you can even have Ordered Grid Super Sampling (OGSS) instead of 3dfx's Rotated Grid Super Sampling (RGSS). The 'blurriness' is affected by the dispersity of the jitter points and the offset of the pixel center. With this in mind, jitter points could be calculated with ( x*(dispersity)+(pixel center offset), y*(dispersity)+(pixel center offset) ), or simply use new regtweaks:

FX_GLIDE_AA_JITTERDISP
FX_GLIDE_AA_PIXELCENTER
FX_GLIDE_AA_GRIDROTATION

the last regtweak represents RGSS rotational angle (counter clock wise degrees) and the default values are: 2xFSAA = 45, 4xFSAA = 27.5, 8xFSAA = 27.5. Set FX_GLIDE_AA_GRIDROTATION=0 and we have OGSS.

Note: to completely prevent text blurriness, the application must be modified to disable jittering when rendering text. The text will not be anti-aliased, but will remain sharp. The same technique could be applied to any object which doesn't require AA.

[Nov.09.2002]
Glide2x first public release.
Thanks to the psx emulation guru Lewpy, glide3x bug which resized the wrong screen when exiting on multimonitor setups has been fixed. Lewpy's awesome PSX GPU Glide3 Plugin can be found at http://lewpy.psxemu.com. Lots of other small bug fixes.

[Oct.19.2002]
Glide2x third private release.

[Sept.07.2002]
Glide2x second private release.

[Aug.18.2002]
Glide2x first private release.

[July.31.2002]
less problems with windows hotkeys.
fixed bug with mipmap download.
fixed OpenGL UnrealTournament hang on exit in win9x/me.

[May.31.2002]
fixed regtweaks not working under win9x/me.
revised texture handling.

[May.25.2002]
Paving way for multimonitor support. Retrieves the correct display path now. Buggy but tries to render to the correct device.
Support for precompressed S3TC textures. UnrealTournament 2nd CD textures and SeriousSam2 will work with S3TC enabled.
Fixes for Diablo2. Diablo2 will now run correctly in Glide.
Eliminates pinkish screens.
Colourless's subsample lod dithering trilinear approximation for Voodoo5. Use FX_GLIDE_LOD_SUBSAMPLE_DITHER 1(string) to enable, 0 to disable. Default enabled. Slightly modified settings to reduce banding when used with mipmap (lod) dithering. Subsample lod dithering trilinear approximation will work when running in fsaa without trilinear.
also added fix to prevent crashing from screen mode changes
and 4chip AA offsets for Voodoo5 6000.

[March.1.2002]
Started merging Glide3x sources to Glide2x.

[Feb.24.2002]
Faster screen restores in winxp.

[Feb.15.2002]
Stopped crashing when window is resized in winxp.

[Feb.03.2002]
First Public release

[Dec.30.2001]
Second private release.

[Dec.27.2001]
Code cleanup.

[Dec.20.2001]
First private release.

[Dec.19.2001]
Stopped hanging when task switching from FullScreen in WinXP.

[Dec.10.2001]
Stopped Glide3x from hanging when exiting from fullscreen OpenGL.

[Dec.09.2001]
Fixed Glide3x crashing on startup in WinXP.

[Dec.08.2001]
Glide3x compiled with CPU optimizations.

[Dec.03.2001]
minihwc compiled.

[Nov.24.2001]
Begin to compile Glide3x for the Microsoft Windows Platform.

[Oct.25.2001]
Windows XP launch. Glide crashes on startup in WinXP :(

Acknowledgments
I would like to take a moment to thank those who generously provided technical information and assistance.

Disclaimer
This software may be distributed as long as it is not sold commercially without permission from the author. Distribution is permitted provided that no modifications or additions are made to the software, its documentation, or any associated files. Please send me an email with information of distribution. This software is provided as is, without warranty of any kind. The user takes the entire risk as to the quality and performance of the software. The author will not be held liable for any problem the user encounters using this software.


---

koolsmoky@3dfx*remove*zone.it
November 2002 © KoolSmoky