In 1995, Michael Schöne and I started working on a DOOM-style renderer, loosely based on Chris Laurel's "wt", or, more precisely, his final "libwt" release in 1994. This was a spare time project, and had been abandoned in autumn 1995, on the reasoning that it made no sense to continue working on a renderer with DOOM-style restrictions on scene geometry.
There's an outdated preview as well, simply a few screenshots.
The main difference to the various "wt" instantiations and its offspring was that we decided to support DOOM WAD files, most notably its BSP lookup. In addition, we decided to implement the renderer and all associated routines as a set of C++ libraries.
In a nutshell, the project had the following features:
Internally, we used different data structures that matched the WAD lookups as well as our own attempted generalizations. The differences to "wt" included
We never got around to a production release, and tried a couple of variations. Most notably we did not suceed in incorporating textured floors and ceilings. There is a simple workaround: vertical slices drawn as flat surfaces, optionally using z-dependend depth cueing. This has been used in Chris Laurel's final "wt" version published in Learning Windows Programming Using Virtual Reality by Christopher Watkins and Russell J. Berube.
Another workaround is used by IBM's WebView3D: floors and ceilings are texture mapped along vertical slices. This slows down the renderer, as no constant z depth loop is possible, but simplifies the rendering loop a lot. I tried a stack-like approach with the spanning scnaline renderer but did not suceed. We finally figured out how to map floors and ceilings in horizontal slices using a BSP, but never implemented it.
Another problem is the handling of multi-patch textures in the rendering loop, which creates a lot of overhead in terms of setup code, and redraw of pixels. This could have changed trivially (instantiating single patch textures from multi patch textures applying a copy constructor), but we never actually did.
In summary, while the r95 worked pretty well at times, it showed all weaknesses of a beginner's attempt. The sources do not compile with gcc-2.7.2 and optimization, and the current revision lacks a few features (for example, sky texturing is broken). I will rework the library as a reference library and finally finish the generalized resource file specification and support prior to release.
I removed nearly all of the stuff that had been available in 1995. Right now there's only a small README. The other documents will be replaced by more current versions sooner or later.
Some outdated binaries
for Linux486 and SUN Solaris 2.4 are available. This is more
than a year old. More recent versions had limited
looking down, used BSP lookups, but lacked support for
sky texturing, and we never finished a working demo with
floor/ceiling texturing.
The
Linux486
demo has been compiled using GNU GCC 2.6.2, XFree86 3.1
X11R6 including MIT SHM extension. I haven't checked how
it behaves in different environments.
Due to some problems with our Solaris 2.4 installation
at that time, the
Sun Solaris
demo has been compiled using GNU GCC 2.6.3, X11R5
without MIT SHM extension.
There are no sources available at the moment, but this will change as soon as I did some cleaning up. Be patient, though, a public release will not happen until end of april.. may.. june.. sigh.