glDoom

From DoomWiki.org

glDoom
Codebase WinDoom
Developer(s) Bruce A. Lewis, Vsevolod Popov (RedPowar), Adam Bilbrough (Gibbon)
Initial release Public alpha (1998-10-05, 25 years ago)
Latest release 0.96c (2022-10-31, 16 months ago)
Development status Active
Written in C
Target Platform Windows
Available in English (United States)
License Doom Source License

glDoom (created and maintained by Bruce Lewis), based on WinDoom, was the first source port to add OpenGL support to Doom. It was instrumental into the development of other hardware accelerated versions of Doom, inspiring projects such as Doom Legacy, Doomsday, GZDoom, and others.

History[edit]

glDoom was conceived on February 1, 1998. Lewis sought to improve his existing WinDoom codebase with a OpenGL renderer to support only hardware that actually accelerated hardware instead of relying on wrappers or closed source alternatives. Lewis kept extensive notes during the development of his port, describing the setbacks he experienced when he created the renderer. His notes provided him with several people willing to test his work out, leading to Lewis on occasion remarking that he had more than enough testers available. As such, glDoom was tested on a wide range of early 3D hardware at the time.

A first private alpha was released to an artist named Bill, on May 10, 1998. Described as a very EARLY alpha version of glDoom, this build would not play through levels properly, with the renderer not drawing everything required in the scene and being unoptimized. It required a separate file, sky1top.bmp because this build was made for the sky artist to work with. A separate 3dfx version utilizing Mesa was included but had significant more bugs. DirectX 5 was required to run this build.

A special build for Matrox video cards followed on August 27, 1998. Described as a alpha release, this build was for evaluation and drive work only. The separate sky1top.bmp was still needed because this build was made for the sky artist to work with which likely is the same Bill. It also disabled some features to increase stability and lightmaps were not enabled.

The first public alpha was released on October 5, 1998. Before beta testing could be completed and the source code released publicly, the source was lost to a hard drive issue. This happened after version 0.94d was released on December 16, 1998. The last official glDoom version was released on December 23, 1998, as version 0.94e.

2010 reappearance[edit]

In April 2010, glDoom reappeared on SourceForge. The author discovered copies of the source code on the computer of a late friend of his. This resurrected version of the source code, however, was probably not the latest version (some features which work in the released binary no longer did) and had to be updated to compile with newer development environments. The ninth and last update to its SVN repository was made on October 8, 2010. It targets a DirectX 9 surface whilst sitll accelerating through OpenGL and adds support for widescreen monitors.

2020 unofficial updates[edit]

In April 2020, precisely ten years after glDoom resurfaced on SourceForge, unofficial updates to the latest glDoom code appeared, created by a programmer called Vsevolod Popov, aka RedPowar. He released 0.95b on April 4, and 0.95c on April 8, 2020. They contain several improvements to the port:

  • New floor/ceiling generation code (derived from Doom Legacy)
  • Aspect ratio fix (correct rendering on 16:9 displays). glDoom can now render for example in 1920x1080p resolution properly
  • Fixed invisible area culling (behind walls in sectors without ceiling)
  • Few bugfixes for buffer overflows & invalid memory pointers

2022 official reboot[edit]

In March 2022, Adam Bilbrough (Gibbon) requested by email to take over the project and make it available for the modern age. A confirmation by Bruce A. Lewis[1] was given to Bilbrough that declared the latter the new official author of glDoom.

Its first release was 0.96a, on March 14. Incorporating the improvements from the 2020 updates and now licensed under the GPL, it was a minor release to implement GL_NEAREST to improve rendering. A more significant release followed with 0.96b on March 25, making the code 64-bit compatible and substantially raising the static limits of the engine.

Features[edit]

  • 64-bit compatible
  • Cross-platform support
  • Support for the No Rest for the Living expansion
  • Support for SIGIL
    • High resolution support (Default 640x480, but resolution can be defined)
  • OpenGL 1.0/1.1 based renderer
  • Selected weapon display in deathmatch (over the player's head - also cvar controlled)
  • Aiming crosshairs (only in conjunction with looking up and down)
  • -showscore and -keepscore options which implement a simple score counter in the HUD
  • Increased static limits (Present starting from glDoom 0.96b)

Original features[edit]

  • All features from WinDoom
    • High resolution support (Default 640x480, but resolution can be defined)
  • OpenGL 1.0/1.1 based renderer
    • Bilinear filtering
    • Texture smoothing
    • Transparency and translucency from objects
    • Dynamic lighting from projects, weapon discharge and explosions (cvar controlled)
    • Player lighting from power-ups (cvar controlled)
  • Selected weapon display in deathmatch (over the player's head - also cvar controlled)
  • Aiming crosshairs (only in conjunction with looking up and down)

Static limits[edit]

Starting from glDoom 0.96b the following static limits are raised. They are derived from Sprinkled Doom, another port by Gibbon, and are then multiplied with the standard vanilla limits. The new limits are thus as follows:

limit                         : old    * k   = new
-------------------------------------------------------
visplanes[MAXVISPLANES]       : 1024   * 128  = 131072
drawsegs[MAXDRAWSEGS]         : 2048   * 256  = 524288
segs[MAXSEGS]                 : 9999   * 64   = 639936
SAVEGAMESIZE                  : 2883584 * 180224 = 519691042816
activeplats[MAXPLATS]         : 7680    * 30  = 230400
vissprites[MAXVISSPRITE]      : 1024    * 128 = 131072
linespeciallist[MAXLINEANIMS] : 16384   * 64 = 1048576
openings[MAXOPENINGS]         : 65536   * 64 = 4194304 

System requirements[edit]

The absolute minimum system configuration to run glDoom is a 133Mhz Pentium with 16Mb of RAM and an 3D accelerator card with OpenGL drivers. The program will run on a system like this but is far too slow to be enjoyable. The recommended system configuration to run glDoom is a 166Mhz or higher Pentium with 64Mb of RAM, a 3D accelerator card with native OpenGL drivers (not a Direct3D wrapper), a mouse and a sound card with wave table Midi support.

The 2010 release relies on DirectX9 to work with.

The 2022 reboot is 64 bit compatible and will move OpenGL rendering to shaders.

Supported cards[edit]

Note: This is for the latest 1998 release, 0.94e.

    3Dfx Voodoo II - tested
    3Dfx Voodoo - tested
    3Dfx Rush - tested
    3Dfx Banshee - tested
    Rendition V2100 - tested
    Rendition V2200 - tested
    nVidia Riva 128 - tested
    nVidia Riva TNT - tested
    PowerVR PCX2 - drivers not finished
    Permedia II - tested (monochrome lighting only)
    Glint 500 - tested
    Glint GMX - tested
    Intergraph Realizm - tested
    Intergraph Realizm II - tested
    Evans & Sutherland - tested
    ATI Rage Pro - tested (incomplete)
    Intel i740 (Real3D) - tested
    nVidia Riva TNT - tested
    S3 Savage 3D - (being tested by S3)
    Matrox G200 - tested

External links[edit]

References[edit]

  1. Doomworld forums thread
Source code genealogy
Based on
WinDoom
glDoom Active