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

Submitted by Steve Streeting, posted on December 06, 2001

Image Description, by Steve Streeting

Here's a few shots from the Quake3 level rendering of my engine, OGRE (Object-oriented Graphics Rendering Engine).

I know what you're thinking: ok, ok, another Q3A level renderer, yadayadayada... but what makes OGRE a little different is that it's a highly abstracted OO engine which is not designed around BSP scene management, or even indoor rendering - it's designed to be scene oriented rather than level structure oriented, with a class hierarchy dealing with specialisations like using BSPs in an indoor environment. All the features used in the rendering of the Q3 level (material/shader management, geometry buffers, texture loading, curved surfaces) are all generalised and just used by the indoor implementation - this does lead to a bit of conversion overhead as it loads the BSP though.

If you don't want to, you don't have to know that OGRE is using BSPs internally for indoor rendering, just use the top-level interface which is the same for any scene manager, and just give OGRE a hint that you're going to render an indoor scene and it will do all the optimisations internally. Frame rates are pretty good but little optimisation has occurred yet beyond the general culling algorithms so there's room for more. To be honest though I'm pretty pleased with the results - one of the main reasons I implemented a Q3A renderer in the engine is to see whether OGRE's abstracted architecture could handle a large complex scene at a fair speed. I think it does pretty well.

OGRE also abstracts the platform and 3D API - it currently it runs on Win32 under DirectX, but the interface exposes nothing of that - again subclasses deal with the specifics and I've deliberately tried to ensure that the interface will map onto OpenGL easily (probably more easily than DX to be honest! - hmm).

Take a look at if you like: all source is freely available for non-commercial use.

Steve Streeting

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.

December 06, 2001, 03:36 PM

Interesting! I will look at it on SourceForge...

And of course, it looks great ;)


December 06, 2001, 03:47 PM

Good looking! Have you already started implementing support for animated characters (with skeletons)?

- Rolando


December 06, 2001, 03:52 PM

Am I glad to see some technology, not just eye candy on this image of the day forum. I really love to see people spend time on architecture and stuff then on eye candy. [that is probably why I frequent code of the day more than image of the day]

Checking out sourceforge now ...



December 06, 2001, 04:23 PM

is there a demo??
i really would like to see OGRE in action.


December 06, 2001, 04:43 PM

Very impressive. Most definitely a step in the right direction.

Alex Taylor

December 06, 2001, 04:44 PM

OGRE's been going for a while now hasn't it? I like the concept.


December 06, 2001, 05:13 PM

Congratulation for your OO library and these new functionnality.. but why do you show us Q3 IOTD that we all know.. I'm not saying that your library is not good, but that your IOTD is not.

Sorry if I'm not kind enought, but I really wished to see another kind of images.. you implement Q3 level rendering but why also using the game's levels to show us your work ?

Ok.. I'm stopping my cynicism :-) but its a shame to go back from today's IOTD page without taking more than 30 sec to look at it.



December 06, 2001, 05:15 PM

Great engine. I have been following it for awhile and look at it for inspiration(the code that is). I have a question though. Where did you learn about software architecture, scene graphs, etc.... Basically where I am getting stumped is the design. I can code the crap out of the stuff but when it comes down to how things fit together in a project of this maginitude I have a hard time. Any suggestions would be much appreciated. And again great engine. Keep up the good work. You give us intermediate programmers something to hope for.


December 06, 2001, 05:15 PM

Definitely good !!
I'm waiting for the OpenGL render implementation, but i'd like to see a more C-like script language.... Cool jod, really ;)


December 06, 2001, 06:24 PM

Wow, it's the first engine i've seen that isn't TOO DARK!

NICE JOB! I plan to give it a look-through very soon.


December 06, 2001, 06:39 PM

I saw these images on your site the other day... I'm blown away by the architecture of your engine moreso than it's graphical features. It's just so well designed. One little thing though... You really need to turn on alpha transparency for that flame in the bottom image! Other than that, great job. I don't see the problem with showing Q3A levels to showcase your engine either. It's better IMO actually because they're levels we all know and so can compare. It's your engine on display here, not your level design skills!

One question though... I hacked together a quick Q3A level loader/viewer the other afternoon. It just renders the model[0] with texturing and light maps. No BSP/Portals/PVS, no animations or shaders, only the JPEG textures, only the polygon and 'triangle soup' faces (in other words... even quicker than just a quick hack!). Before I go any further though, my levels are so dark. I'm unsure as to why this is... Is it the lack of dynamic lighting? Any ideas would be appreciated!

Nate Miller

December 06, 2001, 06:50 PM

The darkness of your levels has nothing to do with dynamic lighting. Dynamic lighting only happens with explosions, rockets, powerups and that sort of thing.

What you need to do to make your viewer look like Quake3 is overbrighten the textures. You can use the Win32 gamma stuff to do this, but I have never tried it myself. You can also do it by checking every RGB value of the texture to see if it is less than 128, if it is you multiply the value by 2 and store it. If the value is greater than or equal to 128, then you set the value to 255. I use this method and it worked out pretty well for me. Probably not exactly what Quake3 does, but good enough.


December 06, 2001, 06:52 PM

Try this one, youll not be disappointed with darkness :-)

Its the viewer Im fiddling with for a while now. Like OGRE it is based on some sort of scenegraph. Its quiet fast and should run on most hardware (only windows is supported, though). It is aimed at speed and is probably the viewer that shows most Q3A features (Ive tried quiet a lot other viewers, some of them didnt work, others were quiet basic)

to Steve:
OGRE has well structured code! Wish I had the discipline neccessary.


Das Wolf

December 06, 2001, 07:11 PM

great job!!
I would really like to see it in action with both indoor and outdoor scenes together.


December 06, 2001, 07:13 PM

Sweet. Ogre is a great project, not because it's a 3d engine but because the docs, diagrams, OO design are so clean. It's ironic that this kind of thing would probably not happen if it wasn't a sourceforge project. Game engine design usually gets co-opted so the game can get finished. With something like this the proper work can/has been put into the design.

I'm not normally a "wooo. IOTD rules!", but I've seen & used some of the design concepts from OGRE, so it's really deserved.

I would like to see a nethack level loader for this though. . :>


December 06, 2001, 07:31 PM

Your description of this engine sounds a lot like the description of Aurora. In fact, this engine is very much like Aurora. In fact, you probably ripped off Aurora's design! Except for a few details, like your engine actually being implemented and running cool stuff, the two are very similar!

To all of you who know Aurora, congrats! You are the 31337. The others, you are only 19347.5. But no matter; even if you dont get a cookie (check your HD) you can still find out about Aurora because I will make a shameless plug here.

Aurora is an engine that has an open architecture, like OGRE, will incorporate the features presently in OGRE, and in fact completely base itself on OGRE. No, wait, I invented it, and I dont engage in blatant plagiarism. Usually. Instead, I'll just rip off CS.

Cheers to all, and shouts out to #flipcode peepz, cheepz and creepz


December 06, 2001, 07:42 PM

For a while I've been fiddling with the idea of using some of my spare time to write a tutorial series on designing an engine. I consider the design of Aurora to be pretty structured, kind of like what I hear about OGRE's design. Basically I wanted to make a tutorial series on making an open-architecture engine. But I kind of wanted to make it on my own Aurora site rather than All I had to do before that is mcome out with some kind of alpha version of Aurora. The problem is, it's been already overa year that I've been fiddling with the engine and I haven't released an alpha version, simply because, well... I keep redoing stuff, doing directx 8 support and only this month have I been working on it about five hours a week -- not a lot.

So maybe I should just write the series without first uploading Aurora. Anyway, before I actually begin this series of articles I want to find out who would be intersted in reading aobut this sort of thing. Remember, I will be giving out my trade secrets, my awesome ways of organizing stuff so it rocks. Yes, indeed.

Oh yeah, the other reason I wanted to release Aurora first is that you could read the articles and also see the documentation for aurora. Oh well.

My engine is so cool and awesome man....... yeah baby


PS: It just rocks

PPS: Seriously my engine's design is cool

PPPS: Okay so my engine doesnt really render much right now after i started directx 8 support

PPPPS: But dont forget. Its design rocks. If you forget I cannot be held responsible. Well, maybe I can but I probably shouldn't.

Ron Frazier

December 06, 2001, 09:33 PM

I'm not really sure what to make of your post. Are you joking around (just poking fun), or are you seriously being a prick like it sounds. I mean, to say the guy stole your stuff?

On the other hand, I do know how you feel. I was just as pissed when Nintendo stole my idea from me. I had this awesome idea for a game where you control a guy, and you have to go around killing enemies, and if you kill enough of them you get to the next level. Other than the fact that I never made the game, its exactly like the original Mario Bros. Those bastards stole it from me, and then had the nerve to make an entire franchise of the dang thing. The nerve of some people.


December 06, 2001, 10:36 PM

I would be interested in reading your stuff.


December 06, 2001, 11:57 PM

Nah, man, I am just kidding around there. I was just at school, saw this screenshot, liked the engine, and wrote some bullshit :) I was just hyping up my currently vaporware engine, Aurora. That's why i said his engine's almost totally like mine except for minor details like being implemented and working :)


PS: yeah Nintendo did that to me too, man! And the powerglove, man! I had that idea after nintendo without realizing it so like nintendo kind of ripped it off me by psychically reading my future mind! And what about WaterWorld -- "a magical world in the making"? Oh man, I had that idea about making toys with the same density as air or water and suspending them before the thing came out. Dont u just hate it when no one takes ur ideas seriously and then they come out in large commercial projects and sometimes prove to be a flop? Don't u just wish you were the guy who could have proved the investors wrong? :)

Why didnt you copyright your idea of killing enemies, man! You would have made a fortune in royalties! :)


December 06, 2001, 11:59 PM

speaking of the powerglove i recently saw something that was called the P5 (i thought at first it was the pentium 5) from some company called something like ultimatereality or something..... .com..... and they have this glove thingie which I had an idea for for a long time but people told me nintendo had cmoe out with a powerglove thingie and failed, so why are these guys trying it? :)



December 07, 2001, 12:00 AM

I dunno about killing enemies but man, controlling a guy? That must be pretty cruel.



December 07, 2001, 02:17 AM

Hi, just my two cents...

You probably should not blabber so much crap on forums, trust me when I tell you that it comes back to haunt you... While reading your boredom hyped plug of your engine in three years time might not bother you, I had the recent experience of doing the check on my name and found an extremly embarassing forum post done by myself (or at least my e-mail) three years ago...

Just trying to warn you, as I know for a fact that prospective girlfriends, employers etc do often run you name through search engines to see if you have done anything noteworthy.



December 07, 2001, 02:18 AM

Quake3 textures will seem very dark if they aren't lit. If possible, use the lightmap data in the BSP file to generate lightmaps to apply to the main textures.

Or, if you want to get something up quicker than that, use the vertex color values that are encoded in the BSP file to do vertex lighting. It makes a big difference.

Steve Streeting

December 07, 2001, 03:49 AM

Very simple - I don't have time to create Q3 levels as well as code the engine. I used Q3A level data so I *could* show you what the engine can do.

Steve Streeting

December 07, 2001, 03:50 AM

I have a top-level design for this but no implementation yet. I've had a couple of offers from other people to develop this model animation support so hopefully it will get done soon.

Steve Streeting

December 07, 2001, 03:54 AM

No binaries yet, I keep meaning to produce a downloadable tech demo but I have so many other things to do I've concentrated on getting engine features in for developers who want to use the source. I take the point though - I'll try to get a binary demo out soon.

Steve Streeting

December 07, 2001, 04:07 AM

Glad you like the engine. I learned OO design through a combination of college courses, books, and just developing lots of OO systems (I develop business software during the daylight hours where quality is more important than speed most of the time). The last is probably the most important, just doing it, asking others for feedback, making mistakes and learning from them is the best way to learn in my view. I'm still learning - hell, everybody is, even the gurus!

There are loads of books on OO design, I particularly recommend the 'Gang Of Four' book ("Design Patterns" by Gamma - although this does require some prior experience in OO systems to really appreciate; it's one of those books that just gets more useful over time. So good I bought a copy for home as well as work. ;)


December 07, 2001, 04:31 AM

Wow, you really need to look for another kind of girlfriends ;)


December 07, 2001, 04:43 AM

Good point, but I think a gamma correction curve would be much nicer...

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