Adding a custom vertex shader distortion keeping all the features of THREE.MeshStandardMaterial (PBR, shadows, etc).
Click anywhere to wobble!
More details...
Using MeshCustomMaterial to build a material with custom vertex shader and the default physical fragment shader.
The distortion are several 3D perlin noise with different scales, added up, that move the vertex along the normal. The tangent and binormal are calculated with partial derivatives of the noise function, in the vertex shader; and the new normal calculated from the cross product.
Also using a ShaderMaterial to build a custom depth material so the shadows can reproduce the object's distortion.
The rest is all the MeshStandardMaterial rendering features.
Credits
Based on Matt DesLauriers's Custom mesh standard material.
Coded using WebGL with three.js, isMobile.js and EquirectangularToCubemap