After spending most of my free time last year writing a raytracer, I’ve finally finished another OpenGL demo.

This demo loads a Doom-3 level (using the .proc format) and renders the level using portal-based visibility culling. I use the OpenGL Shading Language (GLSL) to render the levels using the light-data loaded from the .map files.

This demo is not a ‘perfect’ Doom-3 mapviewer, but more of an experiment to find out how to use GLSL and render a lot of lights in realtime.

The standard shader renders the geometry using bumpmapping, diffuse and specular lighting using specularmaps (no shadows!).

During the demo you can use the following keys:

  • B – shows the bounding boxes of the lights.
  • N – shows the bounding quads of the lights in screenspace.
  • M – cycles through the shaders defined in de scene.

You can render different scenes by ‘drag and drop’-ing the scene (.txt) files to the exe.

o990x600_doom3_glsl_4_large.0

Download zip. Full source code is included.

You need GLSL capable hardware such as the Radeon 9500 and up and GeForce FX 5200 and up to run this demo.

Doom 3 – OpenGL Shading Language