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

Submitted by John van der Burg, posted on August 09, 2000

Image Description, by John van der Burg

Currently I am optimizing Oxygen3D and finalizing the engine core. With optimizing I don't only mean optimizing for speed, but also on memory usage. At the moment Oxygen3D can render up to 6.5 million triangles per second on dynamic objects. But I'm not finished optimizing yet. As you might already have guessed hardware TnL is now supported as well. The above screenshot is not to show the how many polygons it can render etc, but to show a new feature which I almost finished implementing.

It's support for instances of objects. You load one car, and create 100 instances for example, which still one mesh is stored. Each instance is treated like a unique node, so you can rotate, move or scale it, link it to other nodes etc. Also you can still use different materials or material settings per object (see the different car/cardoor colors).

Also animation data can be shared. So you can load one character and a walk animation. All characters can have different cloths and hair and skin colors etc. And can share the animation data of the walk animation. Ofcourse this does not mean that all characters will walk sync. Because then it would not be very usable :)

There is another screenshot at if you would like to see it.

P.s. these cars do not have textures applied to it as you can see. It's a model I downloaded from

- John

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.
RJ West

August 09, 2000, 02:25 AM

Also, how much money have u made on this engine, Ive been watching your site for a while, and watching all those neat videos,
Thats one hell of an engine:)


August 09, 2000, 03:33 AM

Its amasing you get 6.5 milion triangles per sec how? My engine can do 400000 triangles per sec. Does HW transform speed things up that mutch? I have been profiling my engines speed and came to the conclusion that the time needed to send data to the card is the bottleneck. Even if I transform more faces the time to pass the data to the card increases dropping performance incredibly.

With what config did you get that result?


August 09, 2000, 05:25 AM

I've been watching Oxygen3D for a long time now and have been continually blown away by the stuff you've shown of it. When it's done, you're gonna be rich man.


August 09, 2000, 08:11 AM

I thought sharing a mesh among models was a given :) but what do I know :) Still, it looks good!


August 09, 2000, 08:40 AM

/me drooles...

John van der Burg

August 09, 2000, 09:29 AM

Thanks for the positive responds :)

RJ West:
Haven't made money on the engine yet, I do not really license it before the engine core is finished :)

400000 / 30 = ~13333 polys per frame at 30 fps
That's not much. Even without TnL.
I run on a dual p3-600 with 256mb and geforce with 64mb ddr
But speed testing under win98 (so only 1 processor is used) because the win98 drivers are the fastest.
Maybe your approach is wrong on rendering with hardware.
Remember that you don't need to process every polygon anymore if you want full speed. Instead of backface culling every face, just let the hardware backface cull. And try not to touch your vertexbuffers/arrays when it's not needed. And precalc/preprocess as much as possible (like precalcing optimal vertex arrays etc).
I recommend you to read the presentations/papers from NVidia about optimizing for the GeForce and hardware in general.

Thanks :) Well, keep watching because we have some real hot stuff coming up. Can't tell about it yet.
p.s. I'm already rich because I'm a happy man :)

Well, it's not really supported at once. I mean it indeed is possible to share vertex array data etc. But then it's not implemented in your engine yet :)
I know just call something like:

O3D_Actor *car = gWorld->GetNodeMgr()->GetByName("Some car");
for (int x=0; x<100; x++)
O3D_Actor *carInstance = car->CreateInstance(INST_DEFAULT | INST_CLONEMATS);
carInstance->Move( FVector3(x*30.0f, 0.0f, 0.0f) );

Will create 100 cars on a row. +1 original.
I like to keep things as easy as possible for the users of the engine.

[/droolmode] with < > but that's html and doesnt show up here :)

John W. Ratcliff

August 09, 2000, 10:58 AM


What kind of lighting model are you using there? Are you doing any per pixel stuff or is that just vertex lighting? It looks really sweet.


John van der Burg

August 09, 2000, 12:02 PM

Hey John,

It's just vertex lighting with specular included.
But the cars are around 11000 polygons each, so that makes it look pretty well I guess :)

- instance of you, oh no, we don't share the same mesh ;)


August 09, 2000, 06:59 PM

ZOINK! I hope i can grow up to be just like you!

(ps. i read your particle system paper, thanks for taking the time to share your knowledge - enjoy the rest of your life man!)

"Blessed are the cheese makers..." - Life of Brian

This thread contains 9 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.