 
   return vec2(
     // tunnel shape
-    sdTunnelThing(p)
+    (1. - c * .25) * (cos(p.x) + sin(p.y) + sin(p.z)) / 20. * (2. * (sin(a / 20.) + 1.15))
 
     // blobby surface
     + (1. - c) * .05 * sin(10. * p.x) * sin(10. * p.y) * sin(10. * p.z) * sin(plasma1),

  pR(p.yz, 1.);
  p += vec3(.0, .0, a * .1);
  res = opU(res, vec2(sdBloodCell(opRep(p, vec3(3.))), 54.));
/*
  // manual repeat, slow AF
  for (int x = 0; x < 2; x++) {
    for (int y = 0; y < 2; y++) {
      vec3 thisPos = repeated + vec3(x, y, x + int(mod(float(y * 4), 5.)));
      pR(thisPos.xy, float(x + y));

      res = opU(
        res,
        vec2(sdBloodCell(thisPos), 54.)
      );
    }
  }
  */
  // TODO start value??
  /*
  vec2 res = vec2(0.2, 54.);

  // manual repeat, slow AF
  for (int x = 0; x < 2; x++) {
    for (int y = 0; y < 2; y++) {
      vec3 thisPos = repeated + vec3(x, y, x + int(mod(float(y * 4), 5.)));
      pR(thisPos.xy, float(x + y));

      res = opU(
        res,
        vec2(sdBloodCell(thisPos), 54.)
      );
    }
  }
  */

  return res;

/*

  pR(p.xy, p.x * 0.1);

  vec3 repeated =
    opRep(
      p + vec3(.0, .0, e + a),
      vec3(1.2)
    );
    // TODO: tweak parameters

  //repeated = opTwist(repeated);
  //repeated.xy = pR(repeated.xy, a);
  //repeated =
  //pR(p.xz, a);

  return vec2(sdBloodCell(repeated), 54.);
  */
}

/*
float sdTunnelThingPlasma(vec3 p) {
  return (cos(p.x) + sin(p.y) + sin(p.z)) / 20. * (sin(a / 20.) + 2.);
}
*/


vec2 bloodVein(vec3 pos) {
  return vec2(

  float end2 = 50.;
  float end3 = 70.;

  /* ---------- DEBUGGING ---------- */
  // Uncomment when debugging single scene
  //return scene1(pos);

  /* ---------- SCENES --------- */

