I did this quick setup using SOuP. Check it in order to see if it can work with your mesh.
Here I used only a point node and I simply computed the new position like this :
$NX, $NY, $NZ are the object normals and $WEIGHT is filled with BW values from the texture.
You can also use a peak node to do that kind of stuff