Sign in to follow this  
dave

How Many Vertices In A Professional Scene?

Recommended Posts

Typically how many vertices are there in a scene in any game. 10,000? 100,000? I've just tested min with 6000 and the fps is at 41 in windowed and 30 in fullscreen. I dont understand why its so low cos i have a feeling my code per frame is damn all. Anyone know? EDIT: my system is athlonxp 1800+, 1gb pc2100 ram, radeon9700pro ace

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Well, with shaders & lots of lights & stuff, the pixel-filling might (and usually does) take up more processing time than the vertexes, whose count you could probably increase and the frame rate wouldnt change.

Also, how are you rendering the scene? Just saying that your scene doesnt render as fast as you want it to, doesnt give us anything to help you with. There could be millions of reasons why its not working fast, be more specific. I mean, it's just like saying "I have a bug in my program, what could it be?"

Share this post


Link to post
Share on other sites
i know what the problem is now, i have 20000 triangles in a vb and i was going through rendering in batches of 2 triangles, because i wrote it assuming each quad had a different texture. This meant having a draw primitve call for ever pair. I have a linked list that the render function runs through and the render functions tells the draw primitve function which triangles to render. i guess i need to sort the linked list somehow so that the batches are bigger.

ace

Share this post


Link to post
Share on other sites
errm, hell yes you do.
Below ~130tris per batch you are CPU limited on practicaly every gfx card in existance which does hardware T&L.
Atm all your CPU time is being spent hand feeding the gfx card with the data and stalls as you switch texture (pipeline flushes and texture cache misses a-gogo)

All professional engines, and indeed all the good semi-pro/amature engines, use batching, where everything which uses one texture is drawn, than the next and so on, which cuts down on API calls AND the time it takes to switch texture (an expensive operation).
Now things are also sorted by shader first as thats expensive to change.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
This all depends on your graphics card. Vertex throughput can vary hugely. I worked on a demo where we've had two 70,000 triangle characters on screen, and a 50,000 tri car, along with about another 60,000 of world geometry. This was only possible because the demo was running on an NV40.

Similarly, if you try this on a ps2, then you'd be chugging the whole time since you'd be wanting something more like 70,000 polys in an entire world!

For ATI's recent demo for the x800 they had the following limits:

Main character 75,000
Main bad guy 50,000
Ninja 25,000
World 100,000
Props 50,000

But then again, that is a brand new graphics card. If you bear in mind these numbers for a top of the range card (~675 million tris per second), then you might be able to work out what might be a good number for your card based on its vertex throughput.

The main speed tip I've noticed for very high poly meshes like these is to batch everything as much as possible. For example, for the characters in the demo I worked on, we mapped the entire model to one set of textures. We used various channels from each texture stage to turn effects on and off. This meant we could render the entire model in one almighty tri strip. Going from about 30000 DrawIndexedPrimitive calls to 1 sped things up from about 15fps to about 120fps!

Share this post


Link to post
Share on other sites
I don't mean to hijack this thread... But I noticed that your windowed version has a higher fps than your full screen version. Does teh windowed version have a lower resolution? Or is windowed generally faster? I thought full screen was faster.

Thanks.

-Nick

Share this post


Link to post
Share on other sites
My likely slow particle system [1 texture, 1 vertex buffer that is totally reallocated each frame, draw 1 quad at a time] can handle about 40,000 alpha blended vertices in 800x600 windowed mode before dropping under v-sync limits. [GF 6800]

My non-particle rendering [which has a texture switch and a vb switch per quad, and should be even more dog slow] has never gone slower than the v-sync limit, but I've never actually benchmarked it, as it should never have to push more than maybe 4,000 verts.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
If you're rendering 40,000 alpha blended particles then you are almost certainly running into fill rate issues rather than vertex throughput issues. I've worked the 6800 really hard and I've never been bound by the vertex throughput.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this