浏览代码

[143] - address pr comments

Remove incorrect lru readme sig
Restore previous lru callback
Set error on tile during calculateError
Remove tiles.cached.distance
Remove bonus .max
Address orthographic nan from within the priority function
Dave Buchhofer 4 年之前
父节点
当前提交
13c4553e92
共有 4 个文件被更改,包括 10 次插入16 次删除
  1. 1 1
      README.md
  2. 5 10
      src/base/TilesRendererBase.js
  3. 2 2
      src/three/DebugTilesRenderer.js
  4. 2 3
      src/three/TilesRenderer.js

+ 1 - 1
README.md

@@ -622,7 +622,7 @@ The maximum percentage of [minSize](#minSize) to unload during a given frame.
 ### .unloadPriorityCallback
 
 ```js
-unloadPriorityCallback = null : ( itemA, itemB ) => Number
+unloadPriorityCallback = null : ( item ) => Number
 ```
 
 Function to derive the unload priority of the given item. Higher priority values get unloaded first.

+ 5 - 10
src/base/TilesRendererBase.js

@@ -24,7 +24,7 @@ const priorityCallback = ( a, b ) => {
 		// tiles which have greater error next
 		return a.__error - b.__error;
 
-	} else {
+	} else if ( a.__distanceFromCamera !== b.__distanceFromCamera ) {
 
 		// and finally visible tiles which have equal error (ex: if geometricError === 0)
 		// should prioritize based on distance.
@@ -32,6 +32,8 @@ const priorityCallback = ( a, b ) => {
 
 	}
 
+	return 0;
+
 };
 
 /**
@@ -39,14 +41,7 @@ const priorityCallback = ( a, b ) => {
  * @param {Tile} tile
  * @returns number
  */
-const lruPriorityCallback = ( tile ) => {
-
-	const defaultPriority = 1 / ( tile.__depthFromRenderedParent + 1 );
-	const errorPriority = 1 / ( tile.__error + 1 );
-	const priority = defaultPriority - errorPriority;
-	return priority;
-
-};
+const lruPriorityCallback = ( tile ) => 1 / ( tile.__depthFromRenderedParent + 1 );
 
 export class TilesRendererBase {
 
@@ -227,7 +222,7 @@ export class TilesRendererBase {
 
 		// Expected to be set during calculateError()
 		tile.__distanceFromCamera = Infinity;
-		tile.__error = 0.0;
+		tile.__error = Infinity;
 
 		tile.__inFrustum = false;
 		tile.__isLeaf = false;

+ 2 - 2
src/three/DebugTilesRenderer.js

@@ -115,7 +115,7 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 			return {
 
-				distanceToCamera: targetTile.cached.distance,
+				distanceToCamera: targetTile.__distanceFromCamera,
 				geometricError: targetTile.geometricError,
 				screenSpaceError: targetTile.__error,
 				depth: targetTile.__depth,
@@ -274,7 +274,7 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 							// We don't update the distance if the geometric error is 0.0 so
 							// it will always be black.
-							const val = Math.min( tile.cached.distance / maxDistance, 1 );
+							const val = Math.min( tile.__distanceFromCamera / maxDistance, 1 );
 							c.material.color.setRGB( val, val, val );
 							break;
 

+ 2 - 3
src/three/TilesRenderer.js

@@ -802,14 +802,13 @@ export class TilesRenderer extends TilesRendererBase {
 
 					const pixelSize = info.pixelSize;
 					error = tile.geometricError / ( pixelSize * invScale );
-					// TODO: distance not updated while in orthographic views
 
 				} else {
 
 					const distance = boundingBox.distanceToPoint( tempVector );
 					const scaledDistance = distance * invScale;
 					const sseDenominator = info.sseDenominator;
-					error = Math.max( 0.01, tile.geometricError ) / ( scaledDistance * sseDenominator );
+					error = tile.geometricError / ( scaledDistance * sseDenominator );
 
 					minDistance = Math.min( minDistance, scaledDistance );
 
@@ -819,8 +818,8 @@ export class TilesRenderer extends TilesRendererBase {
 
 			}
 
-			tile.cached.distance = minDistance;
 			tile.__distanceFromCamera = minDistance;
+			tile.__error = maxError;
 
 			return maxError;