Profiling strategies

I’m curious how game tech artists are profiling their art assets, like to check what assets are thrashing memory, bottlenecking fill-rate, transforms, etc.

At Whatif we had a very basic HUD, filled with all kinds of programmer code, but only a few basic art-related stats (frame ms, avg fps, total passes, resolution, total mem, etc.), here’s an example. Not very helpful. We talked about using NVPerfHUD but never got around to actually doing so.

Gamasutra has had some articles about profiling in the past, but I wonder what tech artists are using these days? What tricks are you using to sleuth out what might be slowing down performance?

I think it has become a more difficult job to profile rendering because so much can be going on in a single frame these days. You can do a fair amount showing useful information like memory, fps and batches etc. But at the end of the day you only get part of the picture.

But thankfully with 360/PS3 now there are proper profiling tools, you can take a single frame of a game and look at exactly how it’s composed. You can see every draw call and how long it took, what textures it uses, stalls etc. I couldnt list the amount of information you can get, becuase its huge! There are also some realtime tools supplied that you can use to get information. I know with the PC and directx there is a version of PIX (same name as the 360 tool), I have not used the PC version and I dont know if the information it gives is as detailed.

I cannot stress enough how useful these tools are.

I just found some pictures for you of GCM replay (PS3) - bit old , but gives you an idea of how it looks
http://www.watch.impress.co.jp/game/docs/20070316/pe39.jpg
http://www.watch.impress.co.jp/game/docs/20070316/pe40.jpg

Thanks for the info. I’ve heard coders talk about using PIX, time to check that out. Might also be doing some console dev in a little while, so I’ll be able to check those tools out.

In case anyone’s interested, some good papers from MS’ 2008 GameFest here.
http://www.xnagamefest.com/presentations08.htm#GRAPHICS_

The tessellation stuff sounds interesting… don’t have anything to view pptx files though… wish they had a video of it.

Curious how much that could help the pipeline… assuming it works how it is supposed to.

pptx = PowerPoint Viewer

Ah right… thanks.

Sorry I don’t have anything to contribute to the actual topic of this thread… I’ve never had to do any profiling before… but I know a graphics programmer over here was using PIX. Other than that I got nothin’ :frowning:

I haven’t found profiling HUDs all that useful for what you’re asking for. I use NVPerfHUD and swear by it, but it is only informative when you know how the engine works and the order in which DirectX commands are being issued. Same goes for PIX. They’re great tools to diagnose with when things go wrong.

I find it much more useful to audit assets before they even get into the game engine. Build a database of all this data and filter. You’d be surprised at how many assets are way out of kilter when you do this.

Add meta data so you can override the flagging of certain hero class assets. If you want to get cute and generate a single performance measure from this data, go ahead - although I find that less useful than it first sounds. Context is king. Know where these assets are referenced by.

With this data, you can optimize your assets with a bigger picture in view. You’ll save a lot more time doing this than firefighting at the other end with a HUD.

Ted

Ted, I agree it is important to keep track of assets before they hit the game engine. It is very good advice, I also think performance tools depend a lot of platforms.

PIX etc. are very important on Xbox/PS3(probably less so PC) compared to previous generations of hardware. There is no possible way to predict the performance by looking at assets without them being in context of a rendered frame. Yes you must understand how your engine works and how the gpu works, otherwise you would be the wrong person to make decisions on optimization. A single poly can be more expensive depending how how large it is on the screen and depending on its shader, this cannot be predicted. When you factor in post processing and many render targets etc, these performance tools become a life saver.

How about the Wii, anybody have any tool resources to share? From what I hear, Nintendo doesn’t offer much in the way of tools, people have to roll their own for the most part.

[QUOTE=Eric Chadwick;1672]How about the Wii, anybody have any tool resources to share? From what I hear, Nintendo doesn’t offer much in the way of tools, people have to roll their own for the most part.[/QUOTE]

I would imagine as its very similar in terms of architecture to the GameCube(so a lot of GC knowlege helps), there is a lot less to worry about compared to PS3 /360. But it’s a different situation these days. In the past you might do a multiplatform game on PS2/GC/Xbox/Wii (Wii being towards the end of that generation), now you might do PS3/360/Wii ,the Wii goes from the most powerful to the least powerful platform you might develop on. Its obvious that many Wii versions of games are totally different engines and games compared to PS3/360, although it is ‘possible’ to make them closer.