Skip to content

Commit ec4c9b2

Browse files
authored
PassNode: Ensure clear of internal render target. (#31993)
1 parent 2a02884 commit ec4c9b2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

examples/jsm/tsl/display/OutlineNode.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ class OutlineNode extends TempNode {
455455

456456
this._updateSelectionCache();
457457

458+
const currentSceneName = scene.name;
459+
458460
// 1. Draw non-selected objects in the depth buffer
459461

460462
scene.overrideMaterial = this._depthMaterial;
@@ -470,6 +472,7 @@ class OutlineNode extends TempNode {
470472

471473
} );
472474

475+
scene.name = 'Outline [ Non-Selected Objects Pass ]';
473476
renderer.render( scene, camera );
474477

475478
// 2. Draw only the selected objects by comparing the depth buffer of non-selected objects
@@ -487,6 +490,7 @@ class OutlineNode extends TempNode {
487490

488491
} );
489492

493+
scene.name = 'Outline [ Selected Objects Pass ]';
490494
renderer.render( scene, camera );
491495

492496
//
@@ -495,15 +499,19 @@ class OutlineNode extends TempNode {
495499

496500
this._selectionCache.clear();
497501

502+
scene.name = currentSceneName;
503+
498504
// 3. Downsample to (at least) half resolution
499505

500506
_quadMesh.material = this._materialCopy;
507+
_quadMesh.name = 'Outline [ Downsample ]';
501508
renderer.setRenderTarget( this._renderTargetMaskDownSampleBuffer );
502509
_quadMesh.render( renderer );
503510

504511
// 4. Perform edge detection (half resolution)
505512

506513
_quadMesh.material = this._edgeDetectionMaterial;
514+
_quadMesh.name = 'Outline [ Edge Detection ]';
507515
renderer.setRenderTarget( this._renderTargetEdgeBuffer1 );
508516
_quadMesh.render( renderer );
509517

@@ -513,6 +521,7 @@ class OutlineNode extends TempNode {
513521
this._blurDirection.value.copy( _BLUR_DIRECTION_X );
514522

515523
_quadMesh.material = this._separableBlurMaterial;
524+
_quadMesh.name = 'Outline [ Blur Half Resolution ]';
516525
renderer.setRenderTarget( this._renderTargetBlurBuffer1 );
517526
_quadMesh.render( renderer );
518527

@@ -528,6 +537,7 @@ class OutlineNode extends TempNode {
528537
this._blurDirection.value.copy( _BLUR_DIRECTION_X );
529538

530539
_quadMesh.material = this._separableBlurMaterial2;
540+
_quadMesh.name = 'Outline [ Blur Quarter Resolution ]';
531541
renderer.setRenderTarget( this._renderTargetBlurBuffer2 );
532542
_quadMesh.render( renderer );
533543

@@ -540,6 +550,7 @@ class OutlineNode extends TempNode {
540550
// 7. Composite
541551

542552
_quadMesh.material = this._compositeMaterial;
553+
_quadMesh.name = 'Outline [ Blur Quarter Resolution ]';
543554
renderer.setRenderTarget( this._renderTargetComposite );
544555
_quadMesh.render( renderer );
545556

src/nodes/display/PassNode.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,7 @@ class PassNode extends TempNode {
737737

738738
const currentRenderTarget = renderer.getRenderTarget();
739739
const currentMRT = renderer.getMRT();
740+
const currentAutoClear = renderer.autoClear;
740741
const currentMask = camera.layers.mask;
741742

742743
this._cameraNear.value = camera.near;
@@ -756,6 +757,7 @@ class PassNode extends TempNode {
756757

757758
renderer.setRenderTarget( this.renderTarget );
758759
renderer.setMRT( this._mrt );
760+
renderer.autoClear = true;
759761

760762
const currentSceneName = scene.name;
761763

@@ -767,6 +769,7 @@ class PassNode extends TempNode {
767769

768770
renderer.setRenderTarget( currentRenderTarget );
769771
renderer.setMRT( currentMRT );
772+
renderer.autoClear = currentAutoClear;
770773

771774
camera.layers.mask = currentMask;
772775

0 commit comments

Comments
 (0)