Sure i morph my materials all the time. First you need to understand what morphs are they are basicaly just puhing pixels around and blending their color to something else. As for non linear stuff its just the same interpolated thru several points. There are explanations for doing this with blendshapes, build on that (3d ones).
So how to do the morph fist one needs the source images! than one needs to build a vector field that contains the data where to push the pixels (also known as 2d displacement, this is easily done by diving the 2d placement node wich has a atribute just for this function). Then do the reverse to the destination node. Now make a blender that controlls the blend and connect material to this blend then multiply the vector field intensity with the blend variable for a nice linear blend. With a little of work you can then proceed making non linear blends (i dont do non linears very often since it gets easily messy)... once youyve mastered this.
now the only trick is how you generate the vector field you can use a deformad nurbs surface with equal amount of points to the texture i need and then deform it and querry the diplacement vaules and input into a file for later use (along witha scale for the normalized values obtained!!)
Then theres the second way (wich is a direct offshot of the way i dicribed to get the field) wich i began using about 3 moths ago involves a bit of tinkering im not going into details but basicaly i use 3d cordinates to querry the position of a nurbs plane wich i then querry for uvs and feed the materials. The cool thing about this is that i can use normal blendshapes to tweak the plane about with visual preview. it works a bit like a laticce deformar for uv maps! Also theres no reason why all this cant be done on polys and subds on the uv map level directly! or using them as data carriers.
this said you get very far by thinking about how things actualy work and building on that.