Author Topic: Question for developers or texture gurus  (Read 5187 times)

cmpbllsjc

  • Beta tester
  • Hero Member
  • *****
  • Posts: 948
Question for developers or texture gurus
« on: September 22, 2009, 10:16:55 am »
I have noticed that in better airports like the ones made by FSDT and FlyTampa they use .dds files for textures rather than BMP files. I have an airport from another developer that I bought a few weeks ago, who shall remain nameless, but I am less than impressed by the appearance and performance of the said airport. It has no mipmapping and shimmers like crazy, not to mention that fact that this airport isn't even that complex like Zurich, Geneva, Ft Lauderdale, and Las Vegas are, and I only get about 20 FPS in addition to the shimmers.

I am guessing that perhaps using BMP's instead of .dds for textures may be part of the problem, as well as lack of mip mapping.

What I would like to know is what is the advantage, if any, to using .dds format for textures, and if it better why aren't more developers using that format.

One other question while I am at it. In my quest to fix the said airport, I have been adding the mip maps myself while the developer is trying to get an update out to fix the shimmers. A fellow on the devlopers forum where I bought this aiport said that in addition to adding the mips it would be wise to convert the textures from DXT3 to DXT1. Before I take the time to do so, what is going to be the difference in performance and look of the textures if I do convert them to DXT1?

Thanks in advance to anyone who may know the answers to these questions. I would have asked on the forum where I bought the product I am trying to fix, but it isn't as user friendly as the guys here are.

Regards.

virtuali

  • Administrator
  • Hero Member
  • *****
  • Posts: 50710
    • VIRTUALI Sagl
Re: Question for developers or texture gurus
« Reply #1 on: September 22, 2009, 10:36:15 am »
Lack of Mip Mapping is the main cause of shimmering, and it might also cause fps loss, because always the highest resolution version of the texture will be shown, regardless of the distance.

It shouldn't make big difference using .dds or .bmp, because what really matters is the format textures are, like DXT1 or DXT3. If would matter, instead, if the .bmp were in the BMP format, which is inefficent. Note the possible source of confusion: .DDS and .BMP are used as containers here so, a .DDS can contain a DXT1/3/5 texture, and a .BMP file can also contain the same formats. But, a .BMP container might also contain a *real* .BMP, so it's easy to make mistakes...

You shouldn't blindly convert *everything* in DXT1. The rule is:

- If a texture doesn't have or need an Alpha channel, convert it to DXT1, and check no Alpha channel is included

- If a texture need a straight 1 bit ( pure black and pure white only ) Alpha channel, convert it in DXT1 as well

- If a texture needs partial transparency, so the Alpha has multiple levels of grey, it HAS to be DXT3.

- If a texture, on top of having partial transparency, it also features a smooth color gradient, it's best to use DXT5 (FSX only )

cmpbllsjc

  • Beta tester
  • Hero Member
  • *****
  • Posts: 948
Re: Question for developers or texture gurus
« Reply #2 on: September 22, 2009, 11:00:21 am »
Thanks Umberto for the great explanation. I didn't expect a reply from anyone so quickly.

I forgot to ask about converting files depending on sizes. I usually only mip files that are 1024X1042, 512X512, and 256X256. Is there a problem mipping files that are either smaller than 256X256 or have weird sizes like 1024X64?

I always make backups before I fiddle with anything, but it's good to know the rules first before I waste time fiddling with things I am not so certain about. I will mark this post or copy it to a note pad for future refernece before I proceed with any more conversions of scenery textures.

Umberto, can you explain to me how your sceneries are very complex, have mip maps, don't shimmer, and perform very well, while another aiport I bought from this other developer is much less complex in size, came with no mip mapping, and doesn't perform so well? I know that FSDT uses the LOD techniques to make objects disappear when you get a certain distance from them, so I am guessing that is part of the reason. But what I dont get is how this aiport I bought that is located in the south of France, is pretty small and I get only about 20 FPS around it, while I can get 40 to 50 FPS in Zurich.

Thanks

virtuali

  • Administrator
  • Hero Member
  • *****
  • Posts: 50710
    • VIRTUALI Sagl
Re: Question for developers or texture gurus
« Reply #3 on: September 22, 2009, 11:32:06 am »
I forgot to ask about converting files depending on sizes. I usually only mip files that are 1024X1042, 512X512, and 256X256. Is there a problem mipping files that are either smaller than 256X256 or have weird sizes like 1024X64?

There shouldn't be any problems, as long as textures have dimensions (even not equal in x and y) that are Powers of 2.

Quote
Umberto, can you explain to me how your sceneries are very complex, have mip maps, don't shimmer, and perform very well, while another aiport I bought from this other developer is much less complex in size, came with no mip mapping, and doesn't perform so well? I know that FSDT uses the LOD techniques to make objects disappear when you get a certain distance from them, so I am guessing that is part of the reason. But what I dont get is how this aiport I bought that is located in the south of France, is pretty small and I get only about 20 FPS around it, while I can get 40 to 50 FPS in Zurich.

Shimmering is mostly caused by lack of Mip Mapping.

Bad performances, instead, are more difficult to diagnose, it's usually a combination of several issues.

LOD has a part, of course. With SP2, FSX doesn't support LOD anymore in .BGL files so, this affects basically everybody, except us, since we are drawing most of our 3D objects in C++, not using .BGL, so LOD is not lost for us.

Apart for lack of LOD, we also manage a lot of optimizations with the Addon Manager, that are no longer possible when using the FSX BGL format. For example, we can cut objects over a certain altitude (like, for example, small ground details), and we can finely tune all loading distances with more control compared to what is allowed by the FSX BGL format.

If you combine this with the lack of LOD, it's easy to understand why we might not be able to do something as large and complex as JFK ( which also resides in an area that is very slow on its own ), without using the Addon Manager.

Bad fps in FSX also depends how much of FS9 or (even worse) FS8 commands are used, especially those related to 3D objects. There are many design techiques that pre-date even FS8, which are *still* supported in FSX, but were already obsolete in FS9, and are more and more inefficent, the more the sim relies on video card hardware acceleration. This affects mostly 3D objects made in Scasm, for example, using old design tools like Airport, and the old .API macros, that use commands that were not needed since FS8/FS9, and slow down performances considerably in FSX. They slow down fps even in FS9 but, since FS9 on a modern hardware is so fast, even slowing it down to 50%, is still usable so, nobody complains too much, even if the scenery is sloppily-made, FS9 is more forgiving.

And, there are other advanced stuff that can be used to optimize scenery, like the number of materials used, the number and the types of *shaders* used and shader constant used, the welding of texture vertex coordinates, etc. All these optimization techniques are only meaningful for FSX, and FSX is *expecting* a scenery developer will use them. Unfortunately, not many scenery developers knows about this: there were a couple of tutorials on some of the ACES's people blogs discussing this, and there was also a presentation at the 2007 DevCon in Seattle by ACES about optimizations, but not many scenery developers probably know about these issues, also becasue it would force them to design with an "FSX mind", which is not something they usually do.

Problem is, many mistakenly believe that, just taking a Gmax file and compiling it with the FSX SDK exporter would auto-magically result in a FSX native scenery that would perform at its best in FSX.  

It's not like that: one should start to think about how FSX will react to that object, when is still in the design stage so, basically, it has to start from scratch with FSX in mind. And, using this methods will not have any negative effect on FS9: when dealing with those FSX-specific optimizations, the worse it can happen, is that you are working to get no benefits in FS9, but otherwise there will be no problems.

THAT'S why we start with the FSX scenery, and port *back* to FS9 when FSX is done: so we can get the best possible result in FSX, which doesn't affect FS9 anyway.
« Last Edit: September 22, 2009, 11:33:50 am by virtuali »

JFKpilot

  • Full Member
  • ***
  • Posts: 171
Re: Question for developers or texture gurus
« Reply #4 on: September 22, 2009, 06:45:59 pm »
I forgot to ask about converting files depending on Umberto, can you explain to me how your sceneries are very complex, have mip maps, don't shimmer, and perform very well, while another aiport I bought from this other developer is much less complex in size, came with no mip mapping, and doesn't perform so well? I know that FSDT uses the LOD techniques to make objects disappear when you get a certain distance from them, so I am guessing that is part of the reason. But what I dont get is how this aiport I bought that is located in the south of France, is pretty small and I get only about 20 FPS around it, while I can get 40 to 50 FPS in Zurich.


It's too bad you still have shimmering trouble with Aerosoft's Nice. I seriously don't understand why a "fsx-only" airport would have bmp textures without mipmaps, this is completely wrong. As far as converting the textures goes -- I think Aerosoft should solve this but, since you seem to be converting them yourself, what tool(s) are you using? I hope you are not doing it one-by-one, with DXTbmp. You can just make a batch file and use imagetool instead, it only takes a few minutes. As Umberto said, the way to go is DXT5 with mips.
Still, it'll never be as optimized as Fsdt sceneries. Umberto more than covered that with his great explanation.  ;) 
Flight is the only truly new sensation than men have achieved in modern history.  -James Dickey

cmpbllsjc

  • Beta tester
  • Hero Member
  • *****
  • Posts: 948
Re: Question for developers or texture gurus
« Reply #5 on: September 22, 2009, 08:06:24 pm »
Umberto,

Thanks for the in depth information. It amazes me how much goes into one scenery and all of the different ways it can be done, Thanks for taking the time to explain the ways you optimize them for FSX and also the texture differences.

JFKpilot,

How did you know what scenery I was talking about? I was trying to be somewhat vague because I don't like to talk bad about other companies work, but this airport is not very good the way it was produced.

In this day and age I can't understand why they dont use mipmaps when they made this. Although according to some of the developers at that "other site" they say that adding mip maps takes away from the sharpness and makes the textures blurry. I have never noticed that mip maps make textures blurry.

I am not very happy with the support over there either. They seem to like to pin it on the fact that people who are using nVidia cards are the only ones having issues. The main fellow there suggested that I reinstall my operating system and FSX and that would fix the shimmering. I can't believe they even suggested that.

Anyway, I am using an imagetool batch file for the BMP's and DDS Converter 2 for adding mips to the .dds files. After reading Umberto's tips on DXT1 and DXt5 above I am going to revisit the textures and see if I can convert some to DXT1 and see if it makes a difference. I also noticed that I can get away with not mipping the ground tile light maps and just mipping the day ground textures.