the only other method for the stoned effect ive had working so far is a custom method to create a seperate texture, obiously using the cpu meaning it lags like hell. the geforce 3 series was 2001, pretty old but they still sell machines with just the onboard so i see your point. all other effects (drawing magic files with correct transparencys, color tinting etc) work ok, with the right combination of renderstates. the pixel shader version (if any) supported by the client hardware can always be detected and renderstates used instead. the engine is designed in such a way to make any change like this as easy as possible.
http://www.gamedev.net/community/forums/topic.asp?topic_id=345032
found this in my bookmarks, this is the closest i have to a working example, the only problem being it overwrites the alpha channel. its uses texturestates so the second pass should be able to restore that, but i wont have time to check this till later.
the reason i suggest the grasshopper thing for porting to linux is its a simple re-compile of the original source, the framework claims to take care of everything, meaning updating the different sources and keeping both versions the same isnt a problem.
another advantage of .net being the CLR, no matter what language you write the code in it all comes out the same, and essentially C++ is no faster than VB. this also means that youre not limited to one language, a server coded in vb can load plugins written in c#/++, and even compile assemblies at runtime from script (goodbye mir npc scripts hello native code). ive never tried but im sure there must be a way of doing this with unmanaged code (delphi, vannilla vb etc.) too.