function RealisticBokehMaterial() {
	    var _this;

	    var camera = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
	    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

	    classCallCheck(this, RealisticBokehMaterial);

	    var settings = Object.assign({
	      texelSize: null,
	      rings: 3,
	      samples: 2,
	      showFocus: false,
	      manualDoF: false,
	      vignette: false,
	      pentagon: false,
	      shaderFocus: true,
	      noise: true,
	      maxBlur: 1.0,
	      luminanceThreshold: 0.5,
	      luminanceGain: 2.0,
	      bias: 0.5,
	      fringe: 0.7,
	      ditherStrength: 0.0001
	    }, options);
	    _this = possibleConstructorReturn(this, getPrototypeOf$2(RealisticBokehMaterial).call(this, {
	      type: "RealisticBokehMaterial",
	      defines: {
	        RINGS_INT: settings.rings.toFixed(0),
	        RINGS_FLOAT: settings.rings.toFixed(1),
	        SAMPLES_INT: settings.samples.toFixed(0),
	        SAMPLES_FLOAT: settings.samples.toFixed(1)
	      },
	      uniforms: {
	        tDiffuse: new Uniform(null),
	        tDepth: new Uniform(null),
	        texelSize: new Uniform(new Vector2()),
	        halfTexelSize: new Uniform(new Vector2()),
	        cameraNear: new Uniform(0.1),
	        cameraFar: new Uniform(2000),
	        focalLength: new Uniform(24.0),
	        focalStop: new Uniform(0.9),
	        maxBlur: new Uniform(settings.maxBlur),
	        luminanceThreshold: new Uniform(settings.luminanceThreshold),
	        luminanceGain: new Uniform(settings.luminanceGain),
	        bias: new Uniform(settings.bias),
	        fringe: new Uniform(settings.fringe),
	        ditherStrength: new Uniform(settings.ditherStrength),
	        focusCoords: new Uniform(new Vector2(0.5, 0.5)),
	        focalDepth: new Uniform(1.0)
	      },
	      fragmentShader: fragment$15,
	      vertexShader: vertex$15,
	      depthWrite: false,
	      depthTest: false
	    }));

	    _this.setShowFocusEnabled(settings.showFocus);

	    _this.setManualDepthOfFieldEnabled(settings.manualDoF);

	    _this.setVignetteEnabled(settings.vignette);

	    _this.setPentagonEnabled(settings.pentagon);

	    _this.setShaderFocusEnabled(settings.shaderFocus);

	    _this.setNoiseEnabled(settings.noise);

	    if (settings.texelSize !== null) {
	      _this.setTexelSize(settings.texelSize.x, settings.texelSize.y);
	    }

	    _this.adoptCameraSettings(camera);

	    return _this;
	  }
Constructs a new bokeh2 material.

@param {PerspectiveCamera} [camera] - The main camera.
@param {Object} [options] - Additional options.
@param {Vector2} [options.texelSize] - The absolute screen texel size.
@param {Boolean} [options.rings=3] - The number of blurring iterations.
@param {Boolean} [options.samples=2] - The amount of samples taken per ring.
@param {Boolean} [options.showFocus=false] - Whether the focus point should be highlighted.
@param {Boolean} [options.manualDoF=false] - Enables manual depth of field blur.
@param {Boolean} [options.vignette=false] - Enables a vignette effect.
@param {Boolean} [options.pentagon=false] - Enable to use a pentagonal shape to scale gathered texels.
@param {Boolean} [options.shaderFocus=true] - Disable if you compute your own focalDepth (in metres!).
@param {Boolean} [options.noise=true] - Disable if you don't want noise patterns for dithering.
@param {Number} [options.maxBlur=1.0] - The maximum blur strength.
@param {Number} [options.luminanceThreshold=0.5] - A luminance threshold.
@param {Number} [options.luminanceGain=2.0] - A luminance gain factor.
@param {Number} [options.bias=0.5] - A blur bias.
@param {Number} [options.fringe=0.7] - A blur offset.
@param {Number} [options.ditherStrength=0.0001] - The dither strength.