Note that this is a bit of a rant, normal service will be resumed as soon as possible... Anything I say is not the opinions of my employer, etc..., etc...
In a recent thread over on AVSim, people have picked up on a "fix" to Flight Simulator that helps fight shimmer with objects (such as AutoGen objects, e.g. trees) that heavily rely on alpha test.
Basically, this dll shims DirectX and forces some state settings, in this case both anti-aliasing and alpha-to-coverage.
Putting aside that it is an incredibly risky thing to be doing "Ah, here's a dll that effectively replaces a system component as far as the app in concerned, lets drop it in and see what happens!" - just witness the people that have had problems:
Dropped the two DXOverride files (.dll and .ini) into my FS9 directory and then found FS9 wouldn't start.
Might I need to edit the ini file? If so, does anyone know what changes I would need to make and why??
A friend has a MSI 9800 PRO 128MB card, the tweak is not working for him.
He gets an error message when starting FS9:
"FS cannot run because the version of MS DX installed on your computer is incompatible. Please reinstall DX9.0 by running FS setup."
He reinstalled Windows XP, Service Pack 2, Catalyst 5.8 drivers and FS9 and he stills get the error.
Any help will be appreciated.
Yup - risky thing, but if it works for you, err, ok. Just please don't start calling customer support when random things start going wrong.
Oh, and don't start me on that one. I've lost track of the count of email we check saying something like "Blah add-on won't start because it says FSUIPC is a wrong version, can you help?"
But I digress.
Back to this mod.
As far as I understand it (note, I have not installed it), this mod forces on some newish features on 3D hardware called "Alpha To Coverage". What this basically does is gives you a form of sort-independent transparency It requires anti-aliasing to work as basically it samples the coverage of an output pixel in the multi-sample buffer and uses that to calculate a level of alpha. The problem with normal alpha-test is that it generates hard edges that are unrelated to real geometry - this means that standard multisample anti-aliasing can't help soften the edges.
So, how does this affect you? Well, for a start it forces on anti-aliasing. If you weren't already using anti-aliasing then you just took a big fillrate hit as Flight Simulator his now having to render many more pixels, plus the associated memory requirements for the render targets.
More important is that FlightSim did not know that this is going on. I.e. FlightSim thinks that it's not doing anti-aliasing and is doing different things because of that fact. You're doing things behind it's back - not good (and don't get me started on hardware vendor's "value add" control panels that basically do the same thing). Don't blame FlightSim if you start having panel problems...
Now, lets look at how the fix for alpha-test is enabled in the mod. This is a new feature of some hardware, and not exposed in DirectX 9, so I imagine it is turned on via a vendor specific backdoor to the API similar to this one by nVidia. In this example, a feature is turned on by setting a state that controls adaptive tessellation (i.e. a totally unrelated state), with a value that is a private communication between the vendor's driver and the application.
Does that sound portable and hardware independent to you?
At least if the application is doing it, it has some idea about what is going on (it might have checked PCIIDs to confirm the hardware type, etc...) But in the case where a shim between the application and driver/hardware is doing it? Well, caveat lector...