// This should return continuous positive values when outside and negative values inside,
// which roughly indicate the distance of the nearest surface.
float Dist(vec3 pos)
{
   float height = smoothstep(FractalNoise(pos.xz)*.853,0.0,0.7);//Noise(pos.xz)*.1753 + Noise(pos.xy*(cos(time*.11)*.13))*.255 + Noise(pos.zx*(0.3+(sin(time*.1)*.1)));
   return Plane(pos-vec3(0.,-height+(sin(time+pos.x-pos.z)*0.5)-(cos(time*.333114-pos.z*.5+pos.x*.5)),0.), vec3(0.,1.,0.));
}

vec3 GetNormal(vec3 pos)
{
   v