Well, actually the intrinsic function tex2D and tex2Dlod can be used in a vertex shader to sample a 2D texture, but you require at least Shader Model 3 for it, plus, the graphics card has to support that. For example the function is only supported on NVidia cards from GeForce 6/7 Series and higher, and NV4x-based Quadro FX; for ATI cards I don't have any information about that. Besides, working with matrices on the CPU is not a big deal. I don't know what you are doing and how big the heightmap is, but maybe you should consider to write a multithreaded routine that transfers the contents of a matrix into the mesh on the CPU prior rendering.