Performance questions

Hi, I was wondering a few things.

I saw the Colossus screenshots and vaguely remember seeing a video clip, and I was wondering if the framerate for that level of detail is good (60+ fps)

Can you multitexture over an mpeg texture, such as adding a bumpmap? There might be some cheap, good looking effects possible with doing that.

Anyhow, I’m working on a visualization tool and won’t be needing panda3D for anything visually demanding at this point in time. I will be diving right in and seeing what I can come up with in my free time.

Awesome community you guys have here, I’m very impressed with the helpful attitudes and clever people :slight_smile:

I noticed that there’s sparse mention of optimization tools such as Psyco. Is this because there is little effect, or is it just an aspect that hasn’t been well explored or documented?

I don’t know about your other questions, but Psyco is mentioned in the manual. (I put it there.) Even so, most of what needs to be fast in Panda3d is already written in C++. (Python is just an interface to the C++ library) To my knowledge, the Python bottleneck hasn’t been a problem for any of our projects so far.

I don’t remember what the framerate for colossus was. On the other hand, I can’t remember what kind of machine it was run on, either. There are three things that can limit framerate:

  • Too many polygons
  • Too many pixels rendered
  • Too many objects rendered

The number of polygons and pixels you can handle depends on your video card, not on your 3D engine (assuming the engine isn’t doing something silly.) The number of objects, however, does depend on the 3D engine. Colossus, however, only contains a few objects.

how many objects can Panda handle?

There’s no fixed answer. It depends on your CPU speed, what kind of framerate you want, and so forth. Try running the sample programs to see what you get on your computer.

Well, I handle about 800 fireflies pretty easily if I reduce their radius to about 3. Would those fireflies be considered objects?

I’m just curious mostly, and I’ve been experimenting with the examples. Seems like a very solid engine, and Python is a very powerful language.

Looks like I’ve found my online home and hobby for the next few months :slight_smile:

panda itself can handle a LOT of objects… depending on your pc=)
the number of objects is mainly limited by the grafic-port. they are simply not made to upload 200000 small objecets to the graficcard. so displaying 1mio triangles with only a few objects will give you much better framerate than displaying 10k triangles spread over 10000objects.
so either grab those 10000 objects and make a few dozen out of it (if they are static) or come up with a good idea. (perhaps like using vertex-shaders for animation and just upload one whole bunch of models as a single one)

If I recall correctly, Colossus was running at about 30 to 35 FPS on average on the workstations that we used for the Building Virtual Worlds presentation. I’m not 100% certain, so your mileage may vary.

While rendering that scene, the framerate was primarily sensitive to particles and transparent textures. We had used transparent texture cards (with billboard effect enabled) arranged in a ring to simulate a cloud of sand thrown up every time the colossus took a step; viewing the foot directly as the cloud of sand was thrown smacked the framerate around a bit. If I had it to do all over again, I might consider the particle engine; on the other hand, texture cards gave us a very nice density of material for less individual geometry pieces.

I found my copy of the Colossus source code; if anyone would like the shader files we constructed, I can make them available. The difficulty is that I can’t offer any guidance on them. Bei Yang was responsible for the shader code for that world, and my shader-fu is vastly weaker than his—I’ve only ever run the shader demos, and I acquired a personal computer capable of using the Cg language just last week :wink: Perhaps someone would like to help me go through the object creation code and the Cg code and understand how it works? I’m afraid I’m too busy to do it myself before January, but if someone would like to assist me I’d gladly fork over the code.

Take care,