function FilmMaterial() {
	    var _this;

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

	    classCallCheck(this, FilmMaterial);

	    var settings = Object.assign({
	      screenMode: true,
	      noise: true,
	      scanlines: true,
	      grid: false,
	      greyscale: false,
	      sepia: false,
	      vignette: false,
	      eskil: false,
	      noiseIntensity: 0.5,
	      scanlineIntensity: 0.05,
	      gridIntensity: 1.0,
	      greyscaleIntensity: 1.0,
	      sepiaIntensity: 1.0,
	      vignetteOffset: 1.0,
	      vignetteDarkness: 1.0
	    }, options);
	    _this = possibleConstructorReturn(this, getPrototypeOf$2(FilmMaterial).call(this, {
	      type: "FilmMaterial",
	      uniforms: {
	        tDiffuse: new Uniform(null),
	        time: new Uniform(0.0),
	        noiseIntensity: new Uniform(settings.noiseIntensity),
	        scanlineIntensity: new Uniform(settings.scanlineIntensity),
	        gridIntensity: new Uniform(settings.gridIntensity),
	        scanlineCount: new Uniform(0.0),
	        gridScale: new Uniform(new Vector2()),
	        gridLineWidth: new Uniform(0.0),
	        greyscaleIntensity: new Uniform(settings.greyscaleIntensity),
	        sepiaIntensity: new Uniform(settings.sepiaIntensity),
	        vignetteOffset: new Uniform(settings.vignetteOffset),
	        vignetteDarkness: new Uniform(settings.vignetteDarkness)
	      },
	      fragmentShader: fragment$8,
	      vertexShader: vertex$8,
	      depthWrite: false,
	      depthTest: false
	    }));

	    _this.setScreenModeEnabled(settings.screenMode);

	    _this.setNoiseEnabled(settings.noise);

	    _this.setScanlinesEnabled(settings.scanlines);

	    _this.setGridEnabled(settings.grid);

	    _this.setGreyscaleEnabled(settings.greyscale);

	    _this.setSepiaEnabled(settings.sepia);

	    _this.setVignetteEnabled(settings.vignette);

	    _this.setEskilEnabled(settings.eskil);

	    return _this;
	  }
Constructs a new film material.

@param {Object} [options] - The options. Disabled effects will not be included in the final shader and have no negative impact on performance.
@param {Boolean} [options.greyscale=false] - Enable greyscale effect. Greyscale and sepia are mutually exclusive.
@param {Boolean} [options.sepia=false] - Enable sepia effect. Greyscale and sepia are mutually exclusive.
@param {Boolean} [options.vignette=false] - Apply vignette effect.
@param {Boolean} [options.eskil=false] - Use Eskil's vignette approach. The default looks dusty while Eskil looks burned out.
@param {Boolean} [options.screenMode=true] - Whether the screen blend mode should be used for noise and scanlines. Both of these effects are computed independently.
@param {Boolean} [options.noise=true] - Show noise-based film grain.
@param {Boolean} [options.scanlines=true] - Show scanlines.
@param {Boolean} [options.grid=true] - Show a grid.
@param {Number} [options.noiseIntensity=0.5] - The noise intensity.
@param {Number} [options.scanlineIntensity=0.05] - The scanline intensity.
@param {Number} [options.gridIntensity=1.0] - The grid strength. 0.0 to 1.0.
@param {Number} [options.greyscaleIntensity=1.0] - The intensity of the greyscale effect. 0.0 to 1.0.
@param {Number} [options.sepiaIntensity=1.0] - The intensity of the sepia effect. 0.0 to 1.0.
@param {Number} [options.vignetteOffset=1.0] - The offset of the vignette effect. 0.0 to 1.0.
@param {Number} [options.vignetteDarkness=1.0] - The darkness of the vignette effect. 0.0 to 1.0.