BloomPass constructor
BloomPass(
[ - num? strength,
- num? kernelSize,
- double? sigma,
- 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);
}