 }
 
 void main() {
-  vec3 tot = vec3(0.0);
+  vec3 tot = vec3(.0);
   for( int m=0; m<2; m++ )   // 2x AA
   for( int n=0; n<2; n++ ) { // 2x AA
     // pixel coordinates
-    vec2 o = vec2(float(m),float(n)) / float(2) - 0.5;
-    vec2 p = (-b.xy + 3.0*(gl_FragCoord.xy+o))/b.y;
+    vec2 o = vec2(float(m),float(n)) / float(2) - .5;
+    vec2 p = (-b.xy + 3.*(gl_FragCoord.xy+o))/b.y;
 
     // camera
-    //vec3 ro = vec3( -0.5+3.5*cos(0.1*a), 1.0, 0.5 + 4.0*sin(0.1*a) );
-    vec3 ro = vec3( -0.5+0.2*cos(0.1*a), 1.0, 0.0 + 2.0*sin(0.1*a) );
-    vec3 ta = vec3( 0.0, 0.5, 0.0 );
+    //vec3 ro = vec3( -.5+3.5*cos(.1*a), 1.0, .5 + 4.0*sin(.1*a) );
+    vec3 ro = vec3( -.5+.2*cos(.1*a), 1., .0 + 2.*sin(.1*a) );
+    vec3 ta = vec3( .0, .5, .0 );
     // camera-to-world transformation
-    mat3 ca = setCamera( ro, ta, 0.0 );
+    mat3 ca = setCamera( ro, ta, .0 );
     // ray direction
-    vec3 rd = ca * normalize( vec3(p.xy,2.0) );
+    vec3 rd = ca * normalize( vec3(p.xy,2.) );
 
     // render
     vec3 col = render( ro, rd );

  return vec2(sdBloodCell2(
    opRep(
      pos,
      vec3(sin(a / 5.0) * 0.4, 1.0, sin(a / 5.0) * 0.4)
    )
  ), 84.0);
}
vec2 scene16(vec3 pos) {
  vec3 offs = vec3(-.5, -0.35 * sin(a) / 5.0, sin(a) / 4.0);
  vec2 res = vec2(opBlend_1(
    sdSphere(pos, .5),
    sdSphere(pos + offs, .5)
  ), abs(50.0 + sin(pos.x)*100.0));

  res = opU(res,
    vec2(
      -sdSphere(pos, 5.8),
      abs(50.0 + sin(pos.x) * 10.0)
    )
  );


  float d1 = length(vec2(length(p.xz)-t.x*1.5,p.y)) - t.y/2.2;
  // float d2 = udBox(p,b);
  vec2 d = abs(vec2(length(p.xz),p.y)) - h;
  float d2 = min(max(d.x,d.y),.0) + length(max(d,.0));
  return smin(d1,d2,32.);
}

float PI = 3.14;

float calcPlasma(float x, float y, float z, float t) {
  // horizontal sinusoid
  float sine1 = sin(x * 10. + t * 2.);

  // rotating sinusoid
  float sine2 = sin(10. * (x * sin(t / 2.) + z * cos(t / 3.)) + t);

  // circular sinusoid
  float cx = x + .5 * sin(t / 5.);
  float cy = y + .5 * cos(t / 3.);
  float sine3 = sin(sqrt(100. * (cx * cx + cy * cy) + 1.) + t);

  float blend = sine1 + sine2 + sine3;

  //blend *= 1.0 + sin(t / 4.0) * 2.0;
  //blend *= 3.0;
  blend = sin(blend * PI / 2.) / 2. + .5;
  //blend = pow(blend, 2.0);

  return blend;
}

float sdPlasmaSphere(vec3 p, float s, float t) {
  float plasma = calcPlasma(p.x, p.y, p.z, t / 1.);

  return sdSphere(p, s) + plasma * sin(t / 20.);
}

float calcPlasma2(float x, float y, float z, float t) {
  // horizontal sinusoid
  float sine1 = sin(x * 10. + t * 2.);

  // rotating sinusoid
  float sine2 = sin(10. * (x * sin(t / 2.) + z * cos(t / 3.)) + t);

  // circular sinusoid
  float cx = x + .5 * sin(t / 5.);
  float cy = y + .5 * cos(t / 3.);
  float sine3 = sin(sqrt(100. * (cx * cx + cy * cy) + 1.) + t);

  float blend = sine1 + sine2 + sine3;

  //blend *= 1. + sin(t / 4.) * 2.;
  blend *= 3.;
  blend = sin(blend * PI / 2.) / 2.;
  //blend /= 1.;
  //blend = pow(blend, 2.);
  return blend;
}

float sdPlasma(vec3 p, float t) {
  float plasma = calcPlasma2(p.x, p.y, p.z, t / 100.);
  return plasma;
}

/*
float random(vec2 p) {
  vec2 r = vec2(
    23.14069263277926, // e^pi (Gelfonds constant)
