|
|
@@ -455,6 +455,8 @@ class OutlineNode extends TempNode {
|
|
|
|
|
|
this._updateSelectionCache();
|
|
|
|
|
|
+ const currentSceneName = scene.name;
|
|
|
+
|
|
|
// 1. Draw non-selected objects in the depth buffer
|
|
|
|
|
|
scene.overrideMaterial = this._depthMaterial;
|
|
|
@@ -470,6 +472,7 @@ class OutlineNode extends TempNode {
|
|
|
|
|
|
} );
|
|
|
|
|
|
+ scene.name = 'Outline [ Non-Selected Objects Pass ]';
|
|
|
renderer.render( scene, camera );
|
|
|
|
|
|
// 2. Draw only the selected objects by comparing the depth buffer of non-selected objects
|
|
|
@@ -487,6 +490,7 @@ class OutlineNode extends TempNode {
|
|
|
|
|
|
} );
|
|
|
|
|
|
+ scene.name = 'Outline [ Selected Objects Pass ]';
|
|
|
renderer.render( scene, camera );
|
|
|
|
|
|
//
|
|
|
@@ -495,15 +499,19 @@ class OutlineNode extends TempNode {
|
|
|
|
|
|
this._selectionCache.clear();
|
|
|
|
|
|
+ scene.name = currentSceneName;
|
|
|
+
|
|
|
// 3. Downsample to (at least) half resolution
|
|
|
|
|
|
_quadMesh.material = this._materialCopy;
|
|
|
+ _quadMesh.name = 'Outline [ Downsample ]';
|
|
|
renderer.setRenderTarget( this._renderTargetMaskDownSampleBuffer );
|
|
|
_quadMesh.render( renderer );
|
|
|
|
|
|
// 4. Perform edge detection (half resolution)
|
|
|
|
|
|
_quadMesh.material = this._edgeDetectionMaterial;
|
|
|
+ _quadMesh.name = 'Outline [ Edge Detection ]';
|
|
|
renderer.setRenderTarget( this._renderTargetEdgeBuffer1 );
|
|
|
_quadMesh.render( renderer );
|
|
|
|
|
|
@@ -513,6 +521,7 @@ class OutlineNode extends TempNode {
|
|
|
this._blurDirection.value.copy( _BLUR_DIRECTION_X );
|
|
|
|
|
|
_quadMesh.material = this._separableBlurMaterial;
|
|
|
+ _quadMesh.name = 'Outline [ Blur Half Resolution ]';
|
|
|
renderer.setRenderTarget( this._renderTargetBlurBuffer1 );
|
|
|
_quadMesh.render( renderer );
|
|
|
|
|
|
@@ -528,6 +537,7 @@ class OutlineNode extends TempNode {
|
|
|
this._blurDirection.value.copy( _BLUR_DIRECTION_X );
|
|
|
|
|
|
_quadMesh.material = this._separableBlurMaterial2;
|
|
|
+ _quadMesh.name = 'Outline [ Blur Quarter Resolution ]';
|
|
|
renderer.setRenderTarget( this._renderTargetBlurBuffer2 );
|
|
|
_quadMesh.render( renderer );
|
|
|
|
|
|
@@ -540,6 +550,7 @@ class OutlineNode extends TempNode {
|
|
|
// 7. Composite
|
|
|
|
|
|
_quadMesh.material = this._compositeMaterial;
|
|
|
+ _quadMesh.name = 'Outline [ Blur Quarter Resolution ]';
|
|
|
renderer.setRenderTarget( this._renderTargetComposite );
|
|
|
_quadMesh.render( renderer );
|
|
|
|