📄 threejs/Addons/TSL/BloomNode

File: BloomNode.md | Updated: 11/15/2025


title: BloomNode category: Addons layout: docs

BloomNode

Post processing node for creating a bloom effect.

By default, the node affects the entire image. For a selective bloom, use the emissive material property to control which objects should contribute to bloom or not. This can be achieved via MRT.

const postProcessing = new THREE.PostProcessing( renderer );
const scenePass = pass( scene, camera );
scenePass.setMRT( mrt( {
	output,
	emissive
} ) );
const scenePassColor = scenePass.getTextureNode( 'output' );
const emissivePass = scenePass.getTextureNode( 'emissive' );
const bloomPass = bloom( emissivePass );
postProcessing.outputNode = scenePassColor.add( bloomPass );

Code Example

const postProcessing = new THREE.PostProcessing( renderer );
const scenePass = pass( scene, camera );
const scenePassColor = scenePass.getTextureNode( 'output' );
const bloomPass = bloom( scenePassColor );
postProcessing.outputNode = scenePassColor.add( bloomPass );

Import

BloomNode is an addon, and must be imported explicitly, see Installation#Addons.

import { bloom } from 'three/addons/tsl/display/BloomNode.js';

Constructor

new BloomNode( inputNode : Node.<vec4>, strength : number, radius : number, threshold : number )

Constructs a new bloom node.

inputNode | The node that represents the input of the effect.
---|---
strength | The strength of the bloom. Default is 1.
radius | The radius of the bloom. Default is 0.
threshold | The luminance threshold limits which bright areas contribute to the bloom effect. Default is 0.

Properties

.inputNode : Node.<vec4>

The node that represents the input of the effect.

.radius : UniformNode.<float>

The radius of the bloom.

.smoothWidth : UniformNode.<float>

Can be used to tweak the extracted luminance from the scene.

.strength : UniformNode.<float>

The strength of the bloom.

.threshold : UniformNode.<float>

The luminance threshold limits which bright areas contribute to the bloom effect.

.updateBeforeType : string

The updateBeforeType is set to NodeUpdateType.FRAME since the node renders its effect once per frame in updateBefore().

Default is 'frame'.

Overrides: TempNode#updateBeforeType

Methods

.dispose()

Frees internal resources. This method should be called when the effect is no longer required.

Overrides: TempNode#dispose

.getTextureNode() : PassTextureNode

Returns the result of the effect as a texture node.

Returns: A texture node that represents the result of the effect.

.setSize( width : number, height : number )

Sets the size of the effect.

width | The width of the effect.
---|---
height | The height of the effect.

.setup( builder : NodeBuilder ) : PassTextureNode

This method is used to setup the effect's TSL code.

builder | The current node builder.
---|---

Overrides: TempNode#setup

.updateBefore( frame : NodeFrame )

This method is used to render the effect once per frame.

frame | The current node frame.
---|---

Overrides: TempNode#updateBefore

Source

examples/jsm/tsl/display/BloomNode.js