Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Nick McVeity, posted on November 09, 2001

Image Description, by Nick McVeity

This is a collection of screenshots from my 3d graphics engine, called mercury. I created it for a games programming subject at my school, the Royal Melbourne Institute of Technology. Essentially, it is a quake3 level viewer that implements nearly all of the graphical features implemented in the real quake3 engine. This includes:
  • PVS optimised BSP rendering
  • Volumetric fog
  • Curved surfaces
  • Extensive shader support
  • In fact, all it doesn't include is dynamic lighting and a few of the fancier shader operations (that is, the skyparms and deformverts).

    The rendering code is only moderatly optimized because I consider this project one which will continually evolve (and trying to extend highly optimized code is hard). Even so, the engine performs well on most modern multitexture capable accelerators including my own "low end" 400Mhz K6, Nvidia Vanta equipped PC. There is a demo available on my website which you can download and run provided you have a copy of Quake3. At the moment there is only a windows version for download, however, there will be a linux demo available soon (most of the project was developed using linux!). More information, plus full size screenshots are available at the above site.

    Oh yeah, I graduate soon and am looking for work as a programmer. I live in Melbourne, Australia, but would consider relocating (especially to Mesquite, TX :) )

    Have fun.

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

    November 09, 2001, 01:47 PM

    TX! Ha that is funny. This is sweet and I am doing a similiar q3 viewer thing right now. Did you have to release the source code for the project? And if so where is it? Danka...

    Chris 12345

    November 09, 2001, 02:07 PM

    Scenes are mirrored, possibly about the z-axis ? I beleive Quake 3 uses a negative-into-screen z axis. Just something to consider :)


    November 09, 2001, 02:07 PM

    Hey I know that game!


    November 09, 2001, 02:15 PM

    No skybox? Or is there one, but only with a black texture? At least you could clear the buffer every frame with that orange color used to make it look a bit more like quake.

    Chris 12345

    November 09, 2001, 02:16 PM

    Either the -z thing, of the y/z axis are changed, the left/right handed thing, something like that. Im working on a Q3 importer at the moment, and though I havent gotten there yet, this issues have been noted in advance.


    November 09, 2001, 02:36 PM

    Looks good!


    November 09, 2001, 02:50 PM

    very good lookin and interesting, especially the shaders.

    is it hard to implement the shader system?
    where you have got the infos from?

    Chris 12345

    November 09, 2001, 05:25 PM

    You can get the complete shader .doc from id's ftp site. It is meant for level designers, but its not too hard for a programmer to implement them since all the functions and parameters are well documented. The tricky part is using multitexture, and only so because of the differant capabilities of video cards.


    November 09, 2001, 05:42 PM

    This may be a stupid question but what is the address to id's ftp where the shader doc is stored?

    Jeff Quesnelle

    November 09, 2001, 05:46 PM

    I've seen those levels before. Somewhere... :-)


    November 09, 2001, 05:58 PM

    Those are -extremely- nice images, sounds like you've got quite an engine on your hands there. Definitely one of the higher quality projects I've seen up for IOTD (this is my first post btw). Unfortunately I don't have a copy of Quake 3 installed but nonetheless I am quite impressed! It's been a while since I've played it, and these images almost make me feel nostalgic, which should speak quite highly of your work! ;)

    Best wishes finding work after school!


    November 09, 2001, 06:29 PM

    Hey a fellow Melbournite and I also spent some time at RMIT.
    Anyway I have only just discovered the delights of Q3A and those screen shots seem fairly accurate to me.

    Keep up the excellent work!




    November 09, 2001, 06:37 PM

    Quake uses x as the forward axis, y as the left axis, and z as the up axis.

    The images are not inverted; the bottom center one is obviously DM5 from the proper angle.


    November 09, 2001, 06:46 PM

    Here's mine,

    I was working on writing DX8 based Q3A BSP renderer aswell (done it with OpenGL year ago, though ;-) Just comparing the differences in performance, atleast with DX8 it was trivial to get decent fps out of the hardware.

    OpenGL has a lot of work ahead itself to catch up on the consumer hardware (DX8 can't even dream of going to places OpenGL has, but hey, for consumers it's better API, IMHO).


    Chris 12345

    November 09, 2001, 06:54 PM

    Nah, its reversed, trust me. The stairs leading to the outside should be on your left along the wall, and the stairs going up to the yellow armor in the room belong on the other end of the platform. From this angle you should be seeing out into the courtyard looking and a set of DOWN stairs, but instead you seeing the reverse of the side with the plasma gun, which should be BEHIND you at this angle. Its as if the level was collapsed along an axes to a plane, then expanded in the same direction as it was compressed, so as to make the level "inside out"

    Chris 12345

    November 09, 2001, 06:57 PM
    file name is Q3Ashader_manual.doc


    November 09, 2001, 10:21 PM

    Yes Chris is correct, the images are flipped about the y axis (well if y is up and down, i think JC uses z for up and down so i guess it would be more correct to say its flipped about the z :) ). I just loaded up quake 3 and for example, the stairs on the bottom middle image is on the wrong side of the screen. The stairs should be going to the right not the left. Anyway, nice little engine you got there though. I didnt think anyone was making q3 map viewing engines anymore besides me but i guess i was mistaken. :)



    November 10, 2001, 12:43 AM

    I have to second Chris on this -- there is some flippage. I haven't played these levels enough lately to say it appears in all of them but its there in at least some of them.

    For me its most noticable on the dm7 shot from the 'rocket launcher bridge'. The steps should be on the other side (in the distance)...and the ledge where the switch is to drop down to red armor should also be to the right not the left.

    I'm pretty familiar with this issue myself by way of implementing a Quake3 BSP renderer for The Nebula Device (which uses a different coordinate system than Q3). To 'get something going' I was just swapping x and y (to avoid having the BSP render 'on its side') but this resulted in this inside-outness. To fix it, I implemented some conversion routines which take the Quake3 coordinates and correctly flubs them into a Nebula-friendly format (basically just a simple axis rotation, with some specific handling for normals to keep the AABB information correct as it uses the BSP data to do vis as quake3 does).

    I don't know how useful that might be to other people implementing Quake3 rendering in non-Nebula-Device settings, but the code is available to look at:

    Take a look at the 'CoordinateAdjust' methods (there's a couple of them, using parameter overloading).


    November 10, 2001, 01:41 AM

    You're right, this one is flipped. It could be that D3D uses a left-handed coordinate system and OpenGL uses a right-handed coordinate system (like almost everything else in the universe except Microsoft).


    November 10, 2001, 02:19 AM

    Good to see a post from Australia... I attend Deakin University in Geelong so I'm not too far from you actually :). If I had know RMIT did game related units I'd have considered going there instead. Oh well... After I've finished my Bachelor of Computing degree I'm considering going to AIE in Canberra. (
    Great project, and good luck with your career!


    November 10, 2001, 03:40 AM

    I don't know what D3D uses but OpenGL's positive Z-axis is into the screen, positive X-axis is to the right and positive Y-axis is up.

    Wim Libaers

    November 10, 2001, 04:12 AM

    In OpenGL, the negative Z-axis goes into the screen. Positive points from the screen towards you.


    November 10, 2001, 05:09 AM

    Really? Then why does one need to supply the gluPerspective function with positive near and far values?


    November 10, 2001, 07:19 AM

    Hey ! Really nice work ! how did you implemented the volumetric fog ? Do you use the same algorithm implemented in Q3, or something different ?



    November 10, 2001, 09:05 AM

    So, you also want to own a few ferrari's? :)

    Looks very nice!

    A DHenstock

    November 10, 2001, 10:40 AM

    Shrike in Quake3 the skybox is a special kind of shader which is what Nick refers to when he mentions the lack of skyparms (I presume).

    Very nice work Nick!


    November 10, 2001, 10:51 AM

    Well, these values are interpreted as distances with reference
    to the cameraposition.


    November 10, 2001, 11:55 AM

    skyparms in q3 is how you control such things as scrolling clouds. You can do a skybox without them.

    ki young moon

    November 10, 2001, 01:41 PM

    Wow!!! excellent work! but
    There is not a photograph of the Tourney4 : |
    ps. i like Quake3 Arena! In the aXe_Clan now


    November 10, 2001, 02:31 PM

    It's a Quake 3 level viewer...

    This thread contains 44 messages.
    First Previous ( To view more messages, select a page: 0 1 ... out of 1) Next Last
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.