anchor.diff:          coc = clamp(coc, 0.0, centerCoc * 2.0);
       }
   
  -    float m = step(radius * BLUR_SCALE, coc * (SAMPLE_COUNT * BLUR_SCALE));
  +    float m = step(radius, coc * SAMPLE_COUNT);
       finalColor += mix(finalColor * (1.0 / blurAmount), color, m);
       blurAmount += 1.0;
   }
  
positive.code:     vec4 finalColor = textureLod(colorBuffer, uv, 0.0);
  
      highp vec2 unit = materialParams.resolution.zw;
      direction *= unit * BLUR_SCALE;
  
      float noise = 0.0;
      if (BLUR_SCALE != 1.0) {
          // we span 2 samples because the first sample is always fixed (no noise added)
          noise = (random(gl_FragCoord.xy) - 0.5) * 2.0;
          uv += direction * noise;
      }
  
      vec4 tc = uv.xyxy;
      for (float radius = 1.0 ; radius < (SAMPLE_COUNT * 0.5); radius += 1.0) {
          tc += vec4(direction, -direction);
          tap(finalColor, blurAmount, radius + noise, tc.xy, colorBuffer, centerDepth, centerCoc);
          tap(finalColor, blurAmount, radius - noise, tc.zw, colorBuffer, centerDepth, centerCoc);
      }
      return finalColor * (1.0 / blurAmount);
  }
  
negative.code: 
  // Filter sample count, prefer odd values
  // (keep in sync with PostProcessManager.cpp:dof())
  const float SAMPLE_COUNT = 11.0;
  
  // This is here just for aesthetic reasons
  const float BOKEH_ROTATION_ANGLE = PI / 6.0;
  
  #define unitvec(angle) vec2(cos(angle), sin(angle))
  
  float getCOC(float depth, vec2 cocParams) {
      float CoC = abs(depth * cocParams.x + cocParams.y);
  