Shader model 3 was supposed to give us a nice new feature called "vertex texture fetch" (VTF), i.e. one would be able to read a texture inside vertex shader code and for example displace the vertex position according to the pixel value. This opens a huge set of options to control the screen using mathematical surfaces.
Having investigated this for a full day, i've now came to the conclusion that
only Nvidia cards support this feature. This was a surprise for me, although it now appears that the subject has been discussed in www space for a year or two.
Here's how ATI cheated:
http://www.behardware.com/articles/616-1/ati-s-demos-without-vertex-texturing.htmlAn excerpt: "Then for each texture format, it must be indicated if it’s usable in vertex shaders. And this is where the loophole is. Microsoft forgot to make at least one of the formats obligatory. In other words, ATI tells DirectX to support vertex texturing in point sampling but doesn’t authorize it on any texture format. It’s rather subtle, but enough to pass all DirectX specifications and not support vertex texturing in practice while obtaining Vertex Shader 3.0 certification."
This is important if you plan to support both ATI and Nvidia cards in your application. That renders tex2Dlod() useless as the general solution; you may use the texture fetch if there is an Nvidia sm3 card but then you have to do a fallback to something else in case of ATI.
ATI proposes a DX9 quasi-solution instead; render to vertex buffer (R2VB). I've found that this method has several weaknesses, although it might in some cases be an opening to something. It's still unclear to me how (or why not) this would work in companion with TV3D. If the set-up was easy enough, i might want to give that a try.
For example ATI X1950 is a VTF no-go. It appears that the latest 2900-series of ATI cards do support VTF, i haven't been able to test that.
darqShadow said he would approach one of his contacts at ATI with a question about which ATI cards now and in the future support VTF. If you get an answer John, maybe post it here?