Archived

This topic is now archived and is closed to further replies.

anthony_d

Designing airports with performance in mind..

Recommended Posts

I've just released Aberdeen EGPD Dyce Version 3 here:http://forums.x-plane.org/index.php?app=downloads&showfile=16102Lots of custom buildings, and openscenery x objects too. As I've been adding items, I've been observing a slow but steady drop in FPS from 30 in version 1 to 22fps in version 3.In terms of custom buildings, the terminal tops the triangle count at ~10000 triangles. The firestation at 6000 triangles.... Does this strike developers as high numbers that can exert a heavy toll if duplicated across 20-30 airport buildings? Or is it actually quite a light overhead? Typical texture size is 256x512 or 256x1024 resolution textures.I've noted in one of Ben's blogs that object meshes as stored in VRAM (32bytes per vertex), and having multiple LOD's helps a bit but help too much. So I'm guessing 10000 triangles x 30 buildings x 32 bytes + overhead ~= 10 MB VRAM. or 1% of my graphics card memory. Not much I guess, but any savings here could get my fps back up. What I've noticed is that any text done as a vector graphic in google sketchup really ramps up the triangle count! The "Aberdeen Airport Fire Service" text doubled the triangle count for my firestation. What is "best practice" for text on buildings? Textures, or vectors?Then there's the library objects (in my case used for planes, and other vehicles). The only control I have is to set the density parameters in WED so that users can adjust the rendering settings to suit performance. What I notice is that small items like baggage carts are fully rendered even when you're at the other side of the airfield to the object (and the triangle count is actually quite high). Without adjusting the .obj files themselves for the (ATTR_LOD) parameter, is there anything I can do to make small objects invisible beyond a certain distance (say 500 meters)?

Share this post


Link to post
Share on other sites
Help AVSIM continue to serve you!
Please donate today!

The triangles are not your problem. I've made an add on with 1.6 million triangles and I still get 30-40fps on the ground and up to 90 in the air. The problem is the textures. The more texture maps you use, the more it taxes the graphics card. Normal maps are especially rough on graphics cards. You need to make a small base mesh or section, of, for example, an airbridge, and then texture it, and then duplicate the mesh however many times you need to. That way, you have a small texture for a small section of an airbridge, but after duplicating that section, you can expand the airbridge to it's full size while still using that small section of texture. Making an entire airbridge and then texturing the whole thing will tax the system a lot more than just making and texturing a section and duplicating it a few times.The same goes for terminals, hangars, etc...Here's another good example of what I'm talking about.http://www.asap.co.uk/blog/wp-content/uploads/2008/09/aircraft-hanger.jpgYou could model and texture just 1 window and then duplicate just the mesh to make up all the windows. Same with the hangar. It's symmetrical, so model half of it, texture that half, and then use that same texture for the other side. 2 meshes drawing from 1 texture.

Share this post


Link to post
Share on other sites

Just to clarify, a texture "map" is a portion of your texture file, mapped onto your object? So if I have a single small texture file (256x512), with many individual maps onto the surface of my large object, that's not best practice? Whereas having a large object subdivided into duplicate copies of components, all with the same map, that's a lot better?What I've done in my scenery is to make a typical texture file for each building, such as the one below:Within google sketchup, I've positioned the textures in such a way that the texture pattern is "tiled" horizontally in order to save on texture size. That way I can have a corrugated metal effect for all the walls around the hangar. It's the same texture portion, but each wall is has the same file positioned indivdually.So it's better to make a common component (a 10 x 2 meter wall section for example) , map the texture onto that single component, and then duplicate the component it all the way round my hangar? Is that what you're suggesting?

Share this post


Link to post
Share on other sites

No. A texture map is a texture. Could be a 512 x 512, 1024 x 1024 or 2048 x 2048. XP10 has now introduced texture maps as large as 4096 x 4096 as standard. You need to try and cram as many textures from as many objects on as few texture maps to improve fps. But don't go overboard or you're going to get blurry textures on large buildings if they're squeezed in too tightly and are too small on the texture map. There needs to be a balance of the number of texture maps and individual texture resolution. Example, something with lettering on it, you'll want as much texture space for that as possible, because if you make the lettering too small on the texture map, it'll be a blurry mess in sim on a huge building or hangar...but again, you need to find a balance where you can squeeze as much as you can on a texture map with lettering without making it a blurry mess in the sim.Another example is you could take up a whole texture map to texture a complete airbridge, or you could texture 1 section of the airbridge, add that to the map, and still have a lot of room for other objects, thereby minimizing the number of texture maps and ultimately increasing performance by easing the load on the graphics card.Hope that all makes sense.

Share this post


Link to post
Share on other sites

Here is one for you. I'm learning the ropes and building a couple of GA small airports. I am using the "group" menu item to keep things as orderly as possible in WED. The question is this.I have the triangle runway markers that small airports use (3metres *0 .5 *0 .5). Very basic so only a few minutes in blender. So I have them in their own group for each runway but there are quite a lot of them. I have noticed no FPS drop. But which would be better? To make all the markers as they are now individual objects (one tiny texture of course) or to make them as a single object which will make the object slightly bigger than the runway?Which is better, individual objects and lots of em or one big object?RegardsPS I thought my question was close enough to the topic to not warrant starting another thread

Share this post


Link to post
Share on other sites

If you get no fps hit, then you can do it pretty much any way you want. But when it comes to complex objects (hangars, towers, terminals) with multiple layered textures, you need to cut back wherever possible while still keeping the quality at an acceptable level. Don't forget, it might run fine with a default cessna parked at the gate, but when a million polygon payware aircraft comes flying in, framerates will drop...a lot or a little...depending on the level of detail in the aircraft.

Share this post


Link to post
Share on other sites

Thanks, the only reason I was wondering about it was Xplane loading say for eg; 40 tiny objects or 1 object with almost the same triangle count.Anyway I'll go with the many for now and maybe look at it again further down the track. It probably works out almost the same thing to Xplane anyway.

Share this post


Link to post
Share on other sites

Good luck with it!Looking forward to some WIP screenshots.

Share this post


Link to post
Share on other sites

Ahha! Ok, sounds like I'm halfway there towards efficient texture use. :-) The "horizontal tile" method is probably a good method.But, say I have two buildings each with their own 256x512 texture. Is it better to combine the textures into a single 256x1024 texture that's shared between both buildings? Fewer maps, but a bigger single file.

Share this post


Link to post
Share on other sites

It's better to use 2048 x 2048 texture maps. I would only use 256 x 512's if I had very small, miscellaneous objects left over that couldn't fit on the 2048's.If you have space on the 2048, cram something else on there. You can have, for example, a few hangars on one map, and if you have some space left over, you can add the wheels of baggage trucks on there, or a fire truck, or a misc car or something. Anything to make your texture space more efficient. And if you have to map other objects onto an already used texture map that has some space, you can.

Share this post


Link to post
Share on other sites