📄 threejs/Core/Nodes/PassNode

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


title: PassNode category: Core layout: docs

PassNode

Represents a render pass (sometimes called beauty pass) in context of post processing. This pass produces a render for the given scene and camera and can provide multiple outputs via MRT for further processing.

Code Example

const postProcessing = new PostProcessing( renderer );
const scenePass = pass( scene, camera );
postProcessing.outputNode = scenePass;

Constructor

new PassNode( scope : 'color' | 'depth', scene : Scene, camera : Camera, options : Object )

Constructs a new pass node.

scope | The scope of the pass. The scope determines whether the node outputs color or depth.
---|---
scene | A reference to the scene.
camera | A reference to the camera.
options | Options for the internal render target.

Properties

.camera : Camera

A reference to the camera.

.global : boolean

This flag is used for global cache.

Default is true.

Overrides: TempNode#global

.isPassNode : boolean (readonly)

This flag can be used for type testing.

Default is true.

.options : Object

Options for the internal render target.

.renderTarget : RenderTarget

The pass's render target.

.scene : Scene

A reference to the scene.

.scope : 'color' | 'depth'

The scope of the pass. The scope determines whether the node outputs color or depth.

.updateBeforeType : string

The updateBeforeType is set to NodeUpdateType.FRAME since the node renders the scene once per frame in its PassNode#updateBefore method.

Default is 'frame'.

Overrides: TempNode#updateBeforeType

.COLOR : 'color'

.DEPTH : 'depth'

Methods

.compileAsync( renderer : Renderer ) : Promise (async)

Precompiles the pass.

Note that this method must be called after the pass configuration is complete. So calls like setMRT() and getTextureNode() must proceed the precompilation.

renderer | The renderer.
---|---

See:

Returns: A Promise that resolves when the compile has been finished.

.dispose()

Frees internal resources. Should be called when the node is no longer in use.

Overrides: TempNode#dispose

.getLayers() : Layers

Gets the current layer configuration of the pass.

Returns: .

.getLinearDepthNode( name : string ) : Node

Returns a linear depth node of this pass.

name | The output name to get the linear depth node for. In most cases the default 'depth' can be used however the parameter exists for custom depth outputs. Default is 'depth'.
---|---

Returns: The linear depth node.

.getMRT() : MRTNode

Returns the current MRT node.

Returns: The current MRT node.

.getPreviousTexture( name : string ) : Texture

Returns the texture holding the data of the previous frame for the given output name.

name | The output name to get the texture for.
---|---

Returns: The texture holding the data of the previous frame.

.getPreviousTextureNode( name : string ) : TextureNode

Returns the previous texture node for the given output name.

name | The output name to get the previous texture node for. Default is 'output'.
---|---

Returns: The previous texture node.

.getResolution() : number

Gets the current resolution of the pass.

Deprecated: since r181. Use getResolutionScale() instead.

Returns: The current resolution. A value of 1 means full resolution.

.getResolutionScale() : number

Gets the current resolution scale of the pass.

Returns: The current resolution scale. A value of 1 means full resolution.

.getTexture( name : string ) : Texture

Returns the texture for the given output name.

name | The output name to get the texture for.
---|---

Returns: The texture.

.getTextureNode( name : string ) : TextureNode

Returns the texture node for the given output name.

name | The output name to get the texture node for. Default is 'output'.
---|---

Returns: The texture node.

.getViewZNode( name : string ) : Node

Returns a viewZ node of this pass.

name | The output name to get the viewZ node for. In most cases the default 'depth' can be used however the parameter exists for custom depth outputs. Default is 'depth'.
---|---

Returns: The viewZ node.

.setLayers( layers : Layers ) : PassNode

Sets the layer configuration that should be used when rendering the pass.

layers | The layers object to set.
---|---

Returns: A reference to this pass.

.setMRT( mrt : MRTNode ) : PassNode

Sets the given MRT node to setup MRT for this pass.

mrt | The MRT object.
---|---

Returns: A reference to this pass.

.setPixelRatio( pixelRatio : number )

Sets the pixel ratio the pass's render target and updates the size.

pixelRatio | The pixel ratio to set.
---|---

.setResolution( resolution : number ) : PassNode

Sets the resolution for the pass. The resolution is a factor that is multiplied with the renderer's width and height.

resolution | The resolution to set. A value of 1 means full resolution.
---|---

Deprecated: since r181. Use setResolutionScale() instead.

Returns: A reference to this pass.

.setResolutionScale( resolutionScale : number ) : PassNode

Sets the resolution scale for the pass. The resolution scale is a factor that is multiplied with the renderer's width and height.

resolutionScale | The resolution scale to set. A value of 1 means full resolution.
---|---

Returns: A reference to this pass.

.setScissor( x : number | Vector4, y : number, width : number, height : number )

This method allows to define the pass's scissor rectangle. By default, the scissor rectangle is kept in sync with the pass's dimensions. To reverse the process and use auto-sizing again, call the method with null as the single argument.

x | The horizontal coordinate for the lower left corner of the box in logical pixel unit. Instead of passing four arguments, the method also works with a single four-dimensional vector.
---|---
y | The vertical coordinate for the lower left corner of the box in logical pixel unit.
width | The width of the scissor box in logical pixel unit.
height | The height of the scissor box in logical pixel unit.

.setSize( width : number, height : number )

Sets the size of the pass's render target. Honors the pixel ratio.

width | The width to set.
---|---
height | The height to set.

.setViewport( x : number | Vector4, y : number, width : number, height : number )

This method allows to define the pass's viewport. By default, the viewport is kept in sync with the pass's dimensions. To reverse the process and use auto-sizing again, call the method with null as the single argument.

x | The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
---|---
y | The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
width | The width of the viewport in logical pixel unit.
height | The height of the viewport in logical pixel unit.

.toggleTexture( name : string )

Switches current and previous textures for the given output name.

name | The output name.
---|---

Source

src/nodes/display/PassNode.js