atten=max(1.0-(dot(dist,dist)*0.001),0.0);
  color=color+(((SEA_WATER_COLOR*(p.y-SEA_HEIGHT))*0.18)*atten);
  color=color+vec3(specular(n,l,eye,60.0));
  return color;
}
vec3 getNormal(in vec3 p,in float eps){
  vec3 n;
  n=vec3(n.x,map(p),n.z);
  n=vec3((map(vec3(p.x+eps,p.y,p.z)))-n.y,n.y,n.z);
  n=vec3(n.x,n.y,(map(vec3(p.x,p.y,p.z+eps)))-n.y);
  n=vec3(n.x,eps,n.z);
  return normalize(n);
}
vec3 pOut=vec3(0.0);
float heightMapTracing(in vec3 ori,in vec3 dir){
  float tm=0.0;
  float tx=1000.0;
  float h