Skip to content

klaussilveira/exp-dhewm3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exp-dhewm3

A fork of dhewm3 focused on exploring John Carmack's experimental shadow mapping renderer in Doom 3.

This project began after rewatching John Carmack's famous 2004 Quakecon keynote (video link) which coincided with Doom 3's launch. During this talk, Carmack mentioned that visually he "didn't see any differences between stencil shadows and shadow maps" despite extensive experimentation with both approaches. He ultimately chose stencil shadows for the release version due to their superior performance at the time.

This statement was intriguing since shadow mapping techniques typically produce visibly different results compared to stencil shadow volumes. Upon discovering that parts of the experimental renderer remained in the GPL-released source code, I decided to embark on a deep dive into Doom 3's graphics architecture.

Comparisons

This is Doom 3 with shadow mapping, as experimented originally by Carmack:

Image

You can only notice it is not stencil when you get up close:

Image Image

Goals

The primary goal of this project is to resurrect, complete, and extend Carmack's experimental shadow mapping renderer while maintaining the authentic Doom 3 aesthetic. The project includes:

  • Implementing the full shadow mapping approach as originally envisioned
  • Adding Poisson disc sampling to improve shadow quality
  • Fixing the "peter panning" issues that plagued the original implementation
  • Providing a platform for graphics rendering experiments within the Doom 3 engine

Current State

Image

Branches

The repository is organized into well-separated commits to allow anyone to fork from specific points in the development:

  • draw-exp: Contains Carmack's original experimental renderer implementation without modifications
  • master: Includes all extensions and improvements to the shadow mapping renderer
  • uncap: Incorporates the uncapped FPS branch from dhewm3 with shadow mapping, useful for benchmarking the graphical changes

Building

$ mkdir build
$ cd build
$ cmake ..
$ make

Credits

  • John Carmack for the original Doom 3 engine and source code
  • jmarshall23 for all his experiments with the D3 codebase
  • The dhewm3 team for their modernized port of the Doom 3 engine

About

dhewm3 with Carmack's experimental renderer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published