Bläddra i källkod

SSAOPass: Replace visibility cache Map with an array for improved performance (#31453)

* SSAOPass: Replace visibility cache Map with an array for improved performance

* SSAO: review comment

* SSAOPass: review comment https://github.com/mrdoob/three.js/pull/31453#discussion_r2217866581
Kirill Osipov 7 månader sedan
förälder
incheckning
3e77c57716
1 ändrade filer med 10 tillägg och 9 borttagningar
  1. 10 9
      examples/jsm/postprocessing/SSAOPass.js

+ 10 - 9
examples/jsm/postprocessing/SSAOPass.js

@@ -139,7 +139,7 @@ class SSAOPass extends Pass {
 		 */
 		this.maxDistance = 0.1;
 
-		this._visibilityCache = new Map();
+		this._visibilityCache = [];
 
 		//
 
@@ -489,9 +489,12 @@ class SSAOPass extends Pass {
 
 		scene.traverse( function ( object ) {
 
-			cache.set( object, object.visible );
+			if ( ( object.isPoints || object.isLine || object.isLine2 ) && object.visible ) {
 
-			if ( object.isPoints || object.isLine ) object.visible = false;
+				object.visible = false;
+				cache.push( object );
+
+			}
 
 		} );
 
@@ -499,17 +502,15 @@ class SSAOPass extends Pass {
 
 	_restoreVisibility() {
 
-		const scene = this.scene;
 		const cache = this._visibilityCache;
 
-		scene.traverse( function ( object ) {
+		for ( let i = 0; i < cache.length; i ++ ) {
 
-			const visible = cache.get( object );
-			object.visible = visible;
+			cache[ i ].visible = true;
 
-		} );
+		}
 
-		cache.clear();
+		cache.length = 0;
 
 	}
 

粤ICP备19079148号