code: function () {
  
      /**
       * @type {number}
       */
      this.motionBlurFactor = 0.99;
      /**
       * Vector field lookup image
       * @type {clay.Texture2D}
       */
      this.vectorFieldTexture = new Texture2D({
          type: Texture.FLOAT,
          // minFilter: Texture.NEAREST,
          // magFilter: Texture.NEAREST,
          flipY: false
      });
  
      /**
       * Particle life range
       * @type {Array.<number>}
       */
      this.particleLife = [5, 20];
  
      this._particleType = 'point';
  
      /**
       * @type {number}
       */
      this._particleSize = 1;
  
      /**
       * @type {Array.<number>}
       */
      this.particleColor = [1, 1, 1, 1];
  
      /**
       * @type {number}
       */
      this.particleSpeedScaling = 1.0;
  
      /**
       * @type {clay.Texture2D}
       */
      this._thisFrameTexture = null;
  
      this._particlePass = null;
      this._spawnTexture = null;
      this._particleTexture0 = null;
      this._particleTexture1 = null;
  
      this._particlePointsMesh = null;
  
      this._surfaceFrameBuffer = null;
  
      this._elapsedTime = 0.0;
  
      this._scene = null;
      this._camera = null;
  
      this._lastFrameTexture = null;
  
      // this._temporalSS = new TemporalSS(50);
  
      // this._antialising = false;
  
      this._supersampling = 1;
  
      this._downsampleTextures = [];
  
      this._width = 512;
      this._height = 512;
  
      this.init();
  }
docs: import spriteUtil from '../../util/sprite';