Hardware Rendering Probs/Performance

Hi,

I’ve just downloaded Panda3d 1.0.4 and seem to have some performance issues. The examples that came with the Installer run with approx. 2- 4 frames (!). Now I don’t have the latest Hardware, but this seems a bit poor.
I’ve tried to change the config.prc file to render with DirectX but this failed (it just opens and closes the Panda Window very quickly).
I also uncommented the software keyword to force hardware rendering, but then i get a bunch of windisplay.wgldisplay errors about not finding HW-accelerated OpenGL pixfmt. This confuses me a bit, since other software/games don’t seem to run in software mode (they’re slow,but not THAT slow). Any ideas where the problem lies? Is it my really hardware causing this?

My Specs:
Athlon 1.4 GHz
128 MB Ram (actually 96 + 32 for the onboard graphics)
integrated graphics chip (s3 ProSavage8)
WinXp

I’m really looking forward to get this running since Panda3d looks very promising. :slight_smile:

Thanks for your help!

Chances are, this is just a driver compatibility problem of some sort that we never encountered before because the S3 Prosavage 8 is a somewhat uncommon video card.

When you tried to switch over to DX mode, did you try to switch to DX8, or DX9? Not all video cards support DX9. I would try DX8. The correct way to do that is to put this line into Config.prc

load-display pandadx8

And remove the load-display pandagl. Is that what you did?

I would also try updating my video drivers. If neither of those works, let me know.

Ok, it seemed that the default OpenGL drivers that came with WinXP didn’t work properly with my onboard graphics chip. I installed the latest driver from the S3 Website and it seems to work OK now. The Samples run more smoothly and DirectX Rendering works as well.

I did some benchmarking in OpenGL 800x600 x 16 bit colour:

Eve software: 4 fps
Eve hardware: 15 fps

Carousel software: 2 fps
Carousel hardware: 13.5 fps

Greeting Card software: 1.3 fps
Greeting Card hardware: 5.5 fps

Two things baffle me though:

  1. Although hardware rendering now obviously works, I still get the following error messages:

DirectStart: Starting the game.
Warning: DirectNotify: category ‘Interval’ already exists
Known pipe types:
wglGraphicsPipe
(3 aux display modules not yet loaded.)
:windisplay:wgldisplay(error): Couldn’t find HW-accelerated OpenGL pixfmt a
riate for this desktop!!
:windisplay:wgldisplay(error): make sure OpenGL driver is installed, and tr
ucing the screen size, reducing the
desktop screen pixeldepth to 16bpp,and check your panda window properties
:windisplay:wgldisplay(error): SetPixelFormat(0) failed after window create
:windisplay:wgldisplay(error): SetPixelFormat(0) failed after window create
:windisplay:wgldisplay(error): Could not create GL context.
:windisplay:wdxdisplay9(error): Direct3DCreate9(9.0) failed!, error=5
:express(warning): Adjusting global clock’s real time by -15.4057 seconds.

What could cause this? There is a definite speed improvement if i comment out the software keyword, so i guess it is running in hardware mode just fine?

  1. The Samples STILL seem a bit slow (Greeting Card for example). Eve Joint Manipulation with it’s 15 fps looks smooth enough to me, but then again it’s just one animated model without other objects, terrain, music, game logic etc. I don’t think that’s enough for an actual game. Is this now the definite hardware limit of my machine or is there anything else that i should try to improve framerate?

It does sound like something is still wrong. Possibly the problem is 16 bit color? Most video cards prefer 32 bpp these days. Also, I would try directx8, just to see what happens.

It looks like your driver, even the newer driver, simply doesn’t support OpenGL hardware-accelerated mode (at least with your current desktop settings), so Panda is automatically failing over to DirectX.

David

@Josh:
I tried your suggestions, but it didn’t help much. Setting the colour depth to 32 bit lets the framerate drop severly under OpenGL and DX9 and a little less under DX8. If i set the colour depth to 16 bit, OpenGl, DX8 and DX9 all run at the same framerate (faster than 32 bit):

Benchmarking Fun:
Eve Demo (800x600)
16 bit:
OpenGL: 20 fps
DX8: 20 fps
DX9: 20 fps

32 bit:
OpenGL: 9 fps
DX8: 15 fps
DX9: 9 fps

Interestingly enough i now get 20 fps in the Eve Demo, whereas before it only ran at 15 fps (see previous post, not 32 bit mode) with the exact same driver and settings. Hmmmm…?

@drwr:
I know that both my graphics card and the new driver support OpenGL. To be sure, I ran an OpenGL Benchmark/Demo Tool (GL Excess) and it ran perfectly, with higher framerates than i even expected. So it’s not a driver problem.

I’m now officially lost. It seems to me that Panda3d just isn’t fast enough, but then again it claims to run on low-end machines without problems. What framerates do other users get on their machines? Care to post some benchmarks? I still don’t want to throw in the towel. :unamused:

But what do you mean? You’re getting 20Hz on an S3 Prosavage/8. Isn’t that pretty dang fast for this graphics card?

There are other issues, sure. It doesn’t run that fast in all modes. That’s exactly why Panda provides so many modes; few cards run fast in all of them. Pick the one that runs the best for your particular card, and stick to it.

Are there other applications that draw similarly complex 3-d scenes faster on your card?

David

My question was if that framerate is normal for that kind of hardware. Of course I’ll have to stick with what I get (unless i buy a new card). But if I didn’t wonder about the speed and installed new drivers I’d still be running Panda in software mode with 2 frames. I was figuring that maybe there’s STILL something that is wrong and could be improved. Especially since 3D Games seem to run at about 15 - 30 frames (on the lowest setting) and that’s a complete 3D World, not just one model. Also, other people in this forum with very powerful machines have complained about low framerates (see “General Speed of Panda3D” Thread).

Yes, like i said, most games. And the GL Excess Demo ran with 20 -70 fps (depending on the scene) and had LOTS of eye candy.

Keep in mind that these demo programs all use fairly complex models that were designed for a much better graphics card. For instance, Eve has about 12,000 vertices, and they’re all soft-skinned and animated. The carousel is pushing nearly 20,000 vertices.

Most games that are designed for lower-end graphics cards limit themselves to this many vertices, or fewer, for the entire scene, including all onscreen characters and the entire environment. Furthermore, GL feature demo programs tend to have way fewer than this; probably many of the GL excess demo programs don’t even break 1,000 vertices–even if they have lots of eye candy going on.

For comparison, the Toontown characters, which were designed for a low-end graphics card, have about 2,000 vertices at their highest level of detail, and go down to 500 for the lowest (which is what you see most often).

Also, the user who started the “General Speed of Panda3D” thread was actually complaining about the speed of one particular application, Airblade–which unfortunately has not yet been tuned for high-performance on any platform.

So the bottom line is, as with any engine, you have to tune your models to the platform you are targeting. If the Panda demo programs had been designed with much simpler models, then they would run much faster on your hardware–but then people with higher-end hardware would be complaining that Panda looks like it can only handle simple models. Neither objection is true.

David

OK,I see. I guess I’ll just start building my first few scenes with some low-poly models and save for a better graphics card. :wink:

Thanks for taking your time explaining all this.