1- import { AdditiveBlending , Color , Vector2 , RendererUtils , PassNode , QuadMesh , NodeMaterial } from 'three/webgpu' ;
1+ import { AdditiveBlending , Color , Vector2 , PassNode , QuadMesh , NodeMaterial } from 'three/webgpu' ;
22import { uniform , mrt , texture , getTextureIndex , unpremultiplyAlpha } from 'three/tsl' ;
33
44const _size = /*@__PURE__ */ new Vector2 ( ) ;
5-
6- let _rendererState ;
5+ const _clearColor = /*@__PURE__ */ new Color ( ) ;
76
87/**
98 * A special render pass node that renders the scene with SSAA (Supersampling Anti-Aliasing).
@@ -61,22 +60,6 @@ class SSAAPassNode extends PassNode {
6160 */
6261 this . unbiased = true ;
6362
64- /**
65- * The clear color of the pass.
66- *
67- * @type {Color }
68- * @default 0x000000
69- */
70- this . clearColor = new Color ( 0x000000 ) ;
71-
72- /**
73- * The clear alpha of the pass.
74- *
75- * @type {number }
76- * @default 0
77- */
78- this . clearAlpha = 0 ;
79-
8063 /**
8164 * A uniform node representing the sample weight.
8265 *
@@ -114,8 +97,6 @@ class SSAAPassNode extends PassNode {
11497 const { renderer } = frame ;
11598 const { scene, camera } = this ;
11699
117- _rendererState = RendererUtils . resetRendererState ( renderer , _rendererState ) ;
118-
119100 //
120101
121102 this . _pixelRatio = renderer . getPixelRatio ( ) ;
@@ -130,6 +111,12 @@ class SSAAPassNode extends PassNode {
130111 this . _cameraNear . value = camera . near ;
131112 this . _cameraFar . value = camera . far ;
132113
114+ const currentRenderTarget = renderer . getRenderTarget ( ) ;
115+ const currentMRT = renderer . getMRT ( ) ;
116+ const currentAutoClear = renderer . autoClear ;
117+ const currentClearColor = renderer . getClearColor ( _clearColor ) ;
118+ const currentClearAlpha = renderer . getClearAlpha ( ) ;
119+
133120 renderer . setMRT ( this . getMRT ( ) ) ;
134121 renderer . autoClear = false ;
135122
@@ -186,7 +173,6 @@ class SSAAPassNode extends PassNode {
186173
187174 }
188175
189- renderer . setClearColor ( this . clearColor , this . clearAlpha ) ;
190176 renderer . setRenderTarget ( this . _sampleRenderTarget ) ;
191177 renderer . clear ( ) ;
192178 renderer . render ( scene , camera ) ;
@@ -200,6 +186,8 @@ class SSAAPassNode extends PassNode {
200186 renderer . setClearColor ( 0x000000 , 0.0 ) ;
201187 renderer . clear ( ) ;
202188
189+ renderer . setClearColor ( currentClearColor , currentClearAlpha ) ;
190+
203191 }
204192
205193 this . _quadMesh . render ( renderer ) ;
@@ -228,9 +216,9 @@ class SSAAPassNode extends PassNode {
228216
229217 }
230218
231- //
232-
233- RendererUtils . restoreRendererState ( renderer , _rendererState ) ;
219+ renderer . setRenderTarget ( currentRenderTarget ) ;
220+ renderer . setMRT ( currentMRT ) ;
221+ renderer . autoClear = currentAutoClear ;
234222
235223 }
236224
0 commit comments