BloomPass constructor

BloomPass([
  1. num? strength,
  2. num? kernelSize,
  3. double? sigma,
  4. int? resolution,
])

Implementation

BloomPass([num? strength, num? kernelSize, double? sigma, int? resolution]) : super() {
  strength = (strength != null) ? strength : 1;
  kernelSize = (kernelSize != null) ? kernelSize : 25;
  sigma = (sigma != null) ? sigma : 4.0;
  resolution = (resolution != null) ? resolution : 256;

  // render targets

  final pars = {
    "minFilter": LinearFilter,
    "magFilter": LinearFilter,
    "format": RGBAFormat,
    'type': HalfFloatType
  };

  renderTargetX = WebGLRenderTarget(resolution, resolution, WebGLRenderTargetOptions(pars));
  renderTargetX.texture.name = 'BloomPass.x';
  renderTargetY = WebGLRenderTarget(resolution, resolution, WebGLRenderTargetOptions(pars));
  renderTargetY.texture.name = 'BloomPass.y';

  uniforms = UniformsUtils.clone(CombineShader["uniforms"]);
  uniforms[ 'strength' ]['value'] = strength;

  materialCopy = ShaderMaterial.fromMap({
    'name': CombineShader['name'],
    "uniforms": uniforms,
    "vertexShader": CombineShader["vertexShader"],
    "fragmentShader": CombineShader["fragmentShader"],
    "blending": AdditiveBlending,
    "transparent": true
  });

  final postConvolutionShader = convolutionShader;

  convolutionUniforms = UniformsUtils.clone(postConvolutionShader["uniforms"]);

  convolutionUniforms['uImageIncrement']["value"] = BloomPass.blurX;
  convolutionUniforms['cKernel']["value"] = convolutionShaderBuildKernel(sigma);

  materialConvolution = ShaderMaterial.fromMap({
    "uniforms": convolutionUniforms,
    "vertexShader": postConvolutionShader["vertexShader"],
    "fragmentShader": postConvolutionShader["fragmentShader"],
    "defines": {
      'KERNEL_SIZE_FLOAT': kernelSize.toStringAsFixed(1),
      'KERNEL_SIZE_INT': kernelSize.toStringAsFixed(0)
    }
  });

  needsSwap = false;

  fsQuad = FullScreenQuad(null);
}