GC Fetch Limitations

How many fetches, on average and based on today’s technology, would you say a graphic card can make before it drops performance?

In other words, how many different pieces of geometry/textures/materials can one send to the gpu in one frame without destroying performance?

GCs now and days are built to handle a lot of geometry at one time and not a lot of individual nodes per frame. I would imagine, 200 free floating nodes of static geometry would not kill an fps with P3D on a modern card. Non static geometry would.


Off topic question… Are most of P3D’s opengl functions/methods built upon standard opengl functions/methods?

The rule of thumb is, and has been, about 300 individual objects in a frame to maintain 60Hz. If you’re happy with 30Hz, you can go to 600 objects. This is actually a limit of the PC bus and isn’t related to the graphics card; that’s why it doesn’t go up when you get a better graphics card. Better graphics cards can handle more vertices in a single call, but you still can’t push more than a few hundred calls in one 17 ms frame.

All of Panda’s OpenGL calls are standard OpenGL calls. The graphics API that is available to Panda is whatever is provided by OpenGL. The thing that Panda adds on top of OpenGL is the scene graph, and tasks, and convenient state management tools, and all this high-level stuff; but it all fundamentally calls down to OpenGL at the end.

David

I don’t expect on having a lot of individual objects; maybe around 100 at the most for one particular scene (if that many). What really creates the individual objects is the break down of material kind. For example, a sink structure maybe made of wood with a slight shine, but the inner sink itself might be made of a metal with a greater shine; think of a toilet’s shinny body, but then imagine a wood based seat with less shine. In order to set different materials and different textures stages, object’s have to be split; since P3D will only flatten an object with one texture and one material. Graphic cards will break batch processing on an object anyway if it has to fetch different textures or apply different materials (per object).

I guess geometry doesn’t worry me nearly as much as animated vertices. P3D fights with that for some reason.

Keep in mind that it’s only about the number of objects that aren’t culled away, so proper use of culling algorithms will really help keeping down the number of objects actually sent to the GPU especially in indoor environments. So if only a few hundred unique objects are in view at a particular moment, that’s OK.