               p1,p0,-p3,p2,
               p2,p3,p0,-p1,
               p3,-p2,p1,p0);
+}
+
+float Borg(vec4 p) {
+  return sin(p.x*p.y)+sin(p.y*p.z)+sin(p.x*p.z);
 }
 
 float Sphere(vec4 p) {

  vec4 noise = texture2D(uNoise, vTextureCoord);
  seed += int(1000000.0*noise.r);
#endif
  float x0 = 0.0, y0 = 0.0, z0 = camera;
  float a = x-x0;
  float b = y-y0;
  float c = z-z0;
  float r = sqrt(a*a + b*b + c*c);
  a /= r; b /= r; c /= r;
  // Could move ray start to radius limit.
  solve(x0,y0,z0,a,b,c);
}

                 abs(0.5*sin(K*z/w)+0.5));
  }
  seed = 12345678;
  seed = mix(seed,gridpoint(gridx));
  seed = mix(seed,gridpoint(gridy));
  seed = mix(seed,gridpoint(gridz));
  if (ctype == 6) {
    return vec3(frand(),frand(),frand());
  }
