Hi ! This is Joel's 3d graphics engine page, detailing my slow implementation of many ideas I've had, and others I have found out from elsewhere. The goal is ... well the goal is Quake. ish.
  • The Topic contents of this page is ;
    (a) Introduction to various ideas.
    (b) Connected Polygon drawing method - creating a scene using connected polygons.
    (c) Basic 3d texture mapping (well just texture mapping actually).
    (d) Span-Tree Buffers - implementing an s-buffer with a binary or trinary tree.
    (e) Drawing from an S-T Buffer, fast !
    (f) Lit polygon caching, for extra speed and ... light.
    (g) Advanced shading methods - Phong.
    (h) Collision detection (probably should be earlier).
    (i) Mip-mapping lit polygons for even more speed.
    (j) Interpolating close polygons - real-time, and cached.
    I'll get round to all these topics as soon as I can. (now - 30-1-97).

    (a) Introduction to various ideas.

    This 3d method doesn't use BSP trees, which are quite static and memory hogs and also take a lot of work to fully understand. Instead it uses Convex Polygon drawing, which is the same 3d method that Descent used. Another article on Convex Polygon drawing is available from Mark Feldman's web page (who wrote the games programmers encyclopaedia).

    For now, we'll just work with a simple map, with Doom style 3d, and work our way up to full 3d - you can do that with this method, but not with BSP trees. You need to build a completely new tree for a full 3d viewer, with this method, however, you can just upgrade.

    To generate a view, imagine that a map is a 2d "Floor Plan" of our level, with each distinct room space connected via its walls to other rooms. ie, each rooms co-ordinates are relative to its own centre (0,0), so each room is an entity in itself, then these are connected via their walls.