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

Submitted by Dennis Meffert, posted on March 09, 2001

Image Description, by Dennis Meffert

Some screenshots of my almost completed 3D Engine. This is NOT a Quake 3 level viewer. I wrote the BSP/PVS compiler myself. There are some few problems regarding "illegal geometry" but I think I will have them fixed very soon.

Main features:
  • BSP/PVS compiler/rendering
  • Curved Surfaces
  • Static Lightmaps
  • Entities
  • Collision detection and response
  • Scripted shaders
  • Dennis Meffert
    (The Netherlands)

    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.
    Michael Kurth

    March 09, 2001, 11:42 AM

    I'll bet you already knew people were going to start asking "why is the FPS so low with so few polygons?", so what the heck - it's early, I'll start the questioning off. Debug build, not using vertex buffers, not managing texture states?

    Anyway, its good to see people are still experimenting with making their own BSP/PVS systems. While Carmacks work is really good, that doesn't mean there isn't room for innovation.

    Some people think that BSP's are boring/old-school, I disagree with that. If you wanted to get really picky you could say that single texture stages and polygon based geometry are boring/old-school and everyone should be using scripted shaders and progressive/procedural/subdivision/parametric/displaced surfaces ;-)

    David Olsson

    March 09, 2001, 11:56 AM

    Vertexlightning or lightmaps ?

    What kind of collision system do you use, per polygon or bounding volume hierarkies ?


    March 09, 2001, 12:09 PM

    Hehe, well Dennis you had to go and show me up didnt you =)

    Wow dude, this looks pretty damn good! Keep up the good work.

    -=[ Megahertz ]=-

    P.S drop by #flipcode again, I'd love to shoot the shit with ya.


    March 09, 2001, 12:15 PM

    I think this looks sweet, but the shot is so dark I can barely see it on this monitor.


    March 09, 2001, 12:21 PM

    @ David Olsson :
    i'd say its lightmap. look at the lighted areas, if it's vertex lighting, he'd have a high surface tesselation to get these nice FX.

    Fabian Giesen

    March 09, 2001, 12:37 PM

    Oh please.

    People. Start reading the descriptions, because that is what they're meant for. When he lists something like "Static Lightmaps" in his description, I think it's quite clear that he's not generating them for fun, but actually using them, now isn't it?

    It kinda annoys me that about a quarter of the questions to any IOTD can be answered by looking at the description.

    David Olsson

    March 09, 2001, 12:42 PM

    I totally agree with you, don't know why I missed it, shouldn't had, but did. Sorry for this.

    David Olsson

    March 09, 2001, 12:43 PM

    Obviously the first question is just plane stupid. The answer was stated in the description but somehow I missed it. Sorry for this.


    March 09, 2001, 12:47 PM

    Wow, looks good man!

    But it looks like the sky in the upper right shot is a little too flat..
    Are you using a skybox or is that just a texture on the ceiling?

    btw. Do you have a demo? ;)


    March 09, 2001, 01:10 PM

    Why people wants to create 3d engines ? Is it kind of sport, or something else ?


    March 09, 2001, 01:30 PM

    Ok, some answers to the questions.....

    Michael: you are right, the only optimization I made is that 64 lightmaps are now put in 1 texture. It helped a lot. But it's still 1 DrawPrimitive call per poly (yeah, I know that's horribly wrong, but I still have to think of a good way to batch primitives, this is not so easy with shader scripts and multitexturing on).

    David: I use Paul Nettle's collision detection algorithm wich uses
    ellipsoids. You really should check it out, it's the best algorithm out there.

    Richard: It's a skybox, maybe I'll make a skydome later.

    Megahertz: Thank you for your tutorial. I finally get rid of all the illegal geometry now.

    Dennis Meffert


    March 09, 2001, 02:28 PM

    Dang, that is awesome. Do you have a demo available?


    March 09, 2001, 02:31 PM

    Since when is >30 fps slow? Do you go to the theatre and ask "why is this film so damn slow!? My warez copy of Quake3 runs at nearly 60 fps!"

    35 fps is not slow


    March 09, 2001, 02:34 PM

    Oh ya, I got up on that soapbox and forgot to come down and tell the author how much I enjoyed the IOTD. Good work! The textures are very nice, the floor reminds me of American Mgee's Alice. Well done. What's with everyone complaining about the dark IOTD's? Try playing everquest on a Voodoo card for an hour before coming in here. That should fix your problem.

    Michael Kurth

    March 09, 2001, 02:50 PM

    Another thing that gets old.

    People complaining about IOTD's being too dark. Honestly, none of these shots have been too dark on any of the monitors I've viewed them with. You guys must need new monitors, or need to turn up your brightness (no pun intended). Do you really think that the authors would release a screenshot from an engine that had a gamma defficiency?

    One of the reasons most of these shots have "dark areas" is because they are showing off their lighting. If the whole scene was bright then the colored-lighting and lightmaps would be washed out and not very noticeable.

    In my quake-rip-off engine there is a flag for "overbrightness" that increases the gamma so that it looks more like the quake maps. It's not something I like because you loose the light effects contrast. Look at the shots above and you can clearly see the walls are illuminated by blue, red, and yellow/green lights.

    Kurt Miller

    March 09, 2001, 03:04 PM

    ">>Why people wants to create 3d engines ? Is it kind of sport, or something else ?"

    Its fun, educational, and potentially lucrative.


    March 09, 2001, 03:05 PM

    I'd never think about drawprimitive call for every poly ...

    Michael Kurth

    March 09, 2001, 03:06 PM

    There is an interesting article on the net somewhere that talks about your exact argument.

    According to the article the problem with comparing the movie screen to the computer monitor is that the "slow" shutter speeds involved in film making creates motion blur which, when interpreted by our chemical brains, creates the illusion of speed. (Personally a quick camera pan in a movie makes me sick, but then again so do roller coasters).

    The other thing that occurs in movie theaters is that the movie screen is a highly reflective silver/white surface and you are sitting in a pitch black room. This results in a residual image as your chemical eyes reset themselves between frames.

    And I think that the most important difference is that your computer screen has to "retrace" the screen one scanline at a time, whereas a movie theater blasts an entire frame at you at once. If you look at a white computer screen out of the corner of your eyes you can usually see the refresh occuring (depending on refresh rate, brightness, view angle, etc).

    The point is that comparing a movie to a computer is not a good comparison. The main reason for concern over an engine performing at 35-40fps is that, in the heat of battle, it will surely dip below 20fps which will be very noticeable. Whereas an engine that runs at 70-80fps has a better ability to handle slow downs without the player noticing.

    Kurt Miller

    March 09, 2001, 03:08 PM

    >>But it's still 1 DrawPrimitive call per poly (yeah, I know that's horribly wrong, but I still have to think of a good way to batch primitives, this is not so easy with shader scripts and multitexturing on).

    I'm sure you'll come up with a good solution when you decide to tackle that aspect of the engine, but if you're looking for some ideas, try here or here.

    Very nice shot btw...


    March 09, 2001, 03:20 PM

    I like the work you've done so far, now I'm wondering if you've thought of trying to do some sort of destructible geometry too seeing the hype that feature is getting?

    You're gonna have a fun time optimizing, its fun seeing the fps-o-meter increase as you change some rendering function :)

    *note on the too dark pics, they aren't THAT dark*


    March 09, 2001, 03:25 PM

    - BSP tree does not hold actual polygons, but pointers to a global list.
    - Sort this global list by material, placing translucent materials last.
    - Run through BSP tree marking polygons as need-to-render.
    - Run through polygon list and send polygons to a dynamic vertex buffer.
    - Flush buffer when either a) you hit a material change b) you fill it up.
    - Possible sort translucent materials back to front in eye space and send them to the dvb.

    - Repeat.

    See nvidia's developer pages for how to use dynamic vertex buffers.


    March 09, 2001, 04:04 PM

    Regarding the darkness some claim to have, you need to adjust the Gamma setting on your video cards or turn up the brightness.

    I experienced this darkness on my system at home with a geForce card, all I had to do was increase the gamma by 1 point and it was fine. If your video cards don't support Gamma adjustments then try the brightness of your monitor.

    Nice images for IOTD.

    In regards to the FPS being low, it's just optimization. Something entertaining and educational and a learning curve for all. Look at the image with the best rate of 39 FPS, it has 4214 triangles. =) Then look at the lowest count, 35 FPS with 2162 triangles. =)

    If the author revisits this with additional responses, the only question I have is what do you use for the level editor?


    March 09, 2001, 05:19 PM

    That would be an interesting argument, except that it doesnt matter wether the film is blasted onto the screen all at once, and the computer has to scan every line, because each one is considered a frame. I worked in the video industry (AT&T cable for 2 years as an engineer, and I know that there is no difference between 35 fps on a computer screen and 30 fps on a movie screen.) When you watch movies on your TV what happens? What about watching a quiktime movie on your PC? Quicktime format is under 30 fps. Don't tell me its not a valid comparison because it is. Try rendering film or tape to digital video on a non-linear editor. And dont say that an engine will surely fall below 30 fps in a fight scene. A good engine will maintain the same fps no matter how many polys are drawn to the screen. perhaps the engine is capable of 60 fps in most situations, but caps it to 30 fps, to avoid that exact dip.

    My two cents.


    March 09, 2001, 05:21 PM

    Didnt mean for that post to sound shitty if it did =) Happy happy.


    March 09, 2001, 05:29 PM

    "There is an interesting article on the net somewhere that talks about your exact argument."

    I think Hugo Elias has written an article on that.



    March 09, 2001, 05:40 PM

    The key difference between tv and pc-games, here being that tv has motionblur(at least most of the time) and pc's have really sharp pictures.


    March 09, 2001, 06:19 PM

    Sorry if I've missed something but why do so many people complain about the frame rate being slow on these pictures?

    If you think about it carefully, the framerate is rather dependant on the speed of your computer. My computer is pretty slow so I'm pretty impressed when anything runs faster than 35 fps.


    March 09, 2001, 06:22 PM

    Looks great Dennis!
    Wish I could do that :)
    Take a demo or whatever to school next week!


    Michael Kurth

    March 09, 2001, 06:26 PM

    Hmm, I read your other post saying not to take this as flippy. So I am trying really hard not to. :/

    So don't get mad when I say that you can't possibly compare a quicktime movie to a 3D engine.

    Michael Kurth

    March 09, 2001, 06:28 PM

    I'm not sure why people do. I agree with all of the arguments as to why challenging someones FPS is a silly thing to do. My first post was poking fun at the current "d00d, ur FPS bl0ws" attitude ;-)

    The other one that will hopefully stop after today is the "its too dark" line.

    This thread contains 59 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.